nezha-recoder/internal/recoder.go
2025-09-09 22:02:59 +08:00

64 lines
1.7 KiB
Go

package internal
import (
"database/sql"
"log"
"time"
"git.mmeiblog.cn/mei/nezha-recoder/pkg"
_ "modernc.org/sqlite"
)
func Recoder() {
servers := pkg.GetData()
for _, server := range servers.Servers {
checkNameChange(server)
db := HandleSqlConnection()
defer db.Close()
var diskUse float64
if server.Host.Disk_total != 0 {
diskUse = float64(server.State.Disk_used) / float64(server.Host.Disk_total) * 100
} else {
diskUse = 0 // 或者根据业务需求设置其他默认值
}
sql := "INSERT INTO history (id, cpu, timestamp, disk_use, load_5, net_in_speed, net_out_speed, process_count) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
_, err := db.Exec(sql, server.Id, server.State.Cpu, time.Now().Unix(), diskUse, server.State.Load_5, server.State.Net_in_speed, server.State.Net_out_speed, server.State.Process_count)
if err != nil {
log.Println("insert error:", err)
}
log.Printf("写入数据成功: %s", server.Name)
}
}
func checkNameChange(server pkg.Servers) {
db := HandleSqlConnection()
defer db.Close()
Query := "SELECT name FROM agent WHERE id = ?"
var name string
err := db.QueryRow(Query, server.Id).Scan(&name)
if err == sql.ErrNoRows {
addServer(server)
} else if err != nil {
log.Println("query error:", err)
}
if name != server.Name {
sql := "UPDATE agent SET name = ? WHERE id = ?"
db.Exec(sql, server.Name, server.Id)
}
}
func addServer(server pkg.Servers) {
db := HandleSqlConnection()
defer db.Close()
sql := "INSERT INTO agent (id, name, disk_total, mem_total, arch, platform) VALUES (?, ?, ?, ?, ?, ?)"
_, err := db.Exec(sql, server.Id, server.Name, server.Host.Disk_total, server.Host.Mem_total, server.Host.Arch, server.Host.Platform)
if err != nil {
log.Println("add Server error:", err)
}
}