| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- package main
- import (
- "database/sql"
- "errors"
- "fmt"
- _ "github.com/go-sql-driver/mysql"
- client "iaun.cn/linux/services/client"
- )
- const (
- USERNAME = "root"
- PASSWORD = "123456"
- NETWORK = "tcp"
- SERVER = "127.0.0.1"
- PORT = 3306
- DATABASE = "monitor"
- )
- func sqlOpen() (*sql.DB, error) {
- dsn := fmt.Sprintf("%s:%s@%s(%s:%d)/%s", USERNAME, PASSWORD, NETWORK, SERVER, PORT, DATABASE)
- db, err := sql.Open("mysql", dsn)
- if err != nil {
- fmt.Println(err)
- return &sql.DB{}, errors.New("can not connect to db")
- }
- return db, nil
- }
- func sqlQuery(db *sql.DB, sql string, args ...interface{}) (*sql.Rows, error) {
- rows, err := db.Query(sql, args...)
- if err != nil {
- fmt.Println(err)
- return rows, err
- }
- return rows, nil
- }
- func addCPUPercent(cpu *client.CPUReq) bool {
- result, err := db.Exec("call insert_cpu_percent(?,?,?)",
- cpu.Server.Id, cpu.Server.Timestamp, cpu.Percent)
- if err != nil {
- fmt.Println(err)
- return false
- }
- fmt.Println(result)
- return true
- }
- func addMemory(mem *client.MemoryReq) bool {
- result, err := db.Exec("call insert_memory(?,?,?,?,?,?)",
- mem.Server.Id, mem.Server.Timestamp, mem.Total, mem.Free, mem.Cached, mem.UsedPercent)
- if err != nil {
- fmt.Println(err)
- return false
- }
- fmt.Println(result)
- return true
- }
- type CPUPercentDB struct {
- Time int64 `db:"time" json:"time"`
- Percent float64 `db:"percent" json:"percent"`
- }
- type MaxTimestamp struct {
- Time int64 `db:"time"`
- }
- func getCPUPercent(id string, timestamp int64, limit int) (*[]CPUPercentDB, int64, error) {
- s := "call select_cpu_percent_with_time(?,?,?)"
- rows, err := sqlQuery(db, s, id, timestamp, limit)
- if err != nil {
- return nil, 0, err
- }
- defer func() {
- if rows != nil {
- _ = rows.Close()
- }
- }()
- percent := make([]CPUPercentDB, 0)
- for rows.Next() {
- temp := CPUPercentDB{}
- if err := rows.Scan(&temp.Time, &temp.Percent); err != nil {
- continue
- }
- percent = append(percent, temp)
- }
- if !rows.NextResultSet() {
- return nil, 0, errors.New("could not get max timestamp")
- }
- t := MaxTimestamp{}
- for rows.Next() {
- if err := rows.Scan(&t.Time); err != nil {
- continue
- }
- }
- return &percent, t.Time, nil
- }
- type MemoryDB struct {
- Time int64 `db:"time" json:"time"`
- Total uint64 `db:"total" json:"total"`
- Free uint64 `db:"free" json:"free"`
- Cached uint64 `db:"cached" json:"cached"`
- UsedPercent float64 `db:"used_percent" json:"used_percent"`
- }
- func getMemory(id string, timestamp int64, limit int) (*[]MemoryDB, int64, error) {
- s := "call select_memory(?,?,?)"
- rows, err := sqlQuery(db, s, id, timestamp, limit)
- if err != nil {
- return nil, 0, err
- }
- defer func() {
- if rows != nil {
- _ = rows.Close()
- }
- }()
- percent := make([]MemoryDB, 0)
- for rows.Next() {
- temp := MemoryDB{}
- if err := rows.Scan(&temp.Time, &temp.Total, &temp.Free, &temp.Cached, &temp.UsedPercent); err != nil {
- fmt.Println("scan failed")
- fmt.Println(err.Error())
- continue
- }
- percent = append(percent, temp)
- }
- if !rows.NextResultSet() {
- return nil, 0, errors.New("could not get max timestamp")
- }
- t := MaxTimestamp{}
- for rows.Next() {
- if err := rows.Scan(&t.Time); err != nil {
- fmt.Println("scan failed")
- fmt.Println(err.Error())
- continue
- }
- }
- return &percent, t.Time, nil
- }
- type ClientDB struct {
- Id string `json:"id"`
- }
- // 获取所有客户端ID
- func getClient() (*[]ClientDB, error) {
- s := "select id from info"
- rows, err := sqlQuery(db, s)
- if err != nil {
- return nil, err
- }
- defer func() {
- if rows != nil {
- _ = rows.Close()
- }
- }()
- clients := make([]ClientDB, 0)
- for rows.Next() {
- temp := ClientDB{}
- if err := rows.Scan(&temp.Id); err != nil {
- fmt.Println("scan failed")
- fmt.Println(err.Error())
- continue
- }
- clients = append(clients, temp)
- }
- return &clients, nil
- }
- func registerClient(data *client.InitReq) bool {
- s := "call register_client(?,?,?,?,?)"
- reg, err := db.Prepare(s)
- if err != nil {
- return false
- }
- defer func() {
- _ = reg.Close()
- }()
- results, err := reg.Exec(data.Server.Id, data.CPU[0].Name, data.CPU[0].Count, data.CPU[0].Mhz, data.CPU[0].CacheSize)
- if err != nil {
- return false
- }
- fmt.Println()
- count, err := results.RowsAffected()
- if err != nil || count == 0 {
- return false
- }
- return true
- }
|