🚸 release: v0.2.1

This commit is contained in:
naiba
2021-01-16 14:11:51 +08:00
parent 303dc73e16
commit d792fc8499
10 changed files with 127 additions and 72 deletions

View File

@@ -3,6 +3,7 @@ package rpc
import (
"context"
"fmt"
"strings"
"time"
"github.com/naiba/nezha/model"
@@ -21,15 +22,33 @@ func (s *NezhaHandler) ReportTask(c context.Context, r *pb.TaskResult) (*pb.Rece
return nil, err
}
if r.GetType() == model.MonitorTypeHTTPGET {
// SSL 证书变更报警
// SSL 证书报警
var last model.MonitorHistory
if err := dao.DB.Where("monitor_id = ?", r.GetId()).Order("id DESC").First(&last).Error; err == nil {
if last.Data != "" && last.Data != r.GetData() {
var errMsg string
if strings.HasPrefix(r.GetData(), "SSL证书错误") {
// 证书错误提醒
errMsg = r.GetData()
} else {
var splits = strings.Split(r.GetData(), "|")
// 证书变更提醒
if last.Data != "" && last.Data != splits[0] {
errMsg = fmt.Sprintf(
"SSL证书变更%s%s。",
last.Data, splits[0])
}
expires, err := time.Parse("2006-01-02 15:04:05 -0700 MST", splits[1])
// 证书过期提醒
if err == nil && expires.Before(time.Now().AddDate(0, 0, 7)) {
errMsg = fmt.Sprintf(
"SSL证书将在七天内过期过期时间%s。",
expires.Format("2006-01-02 15:04:05"))
}
}
if errMsg != "" {
var monitor model.Monitor
dao.DB.First(&monitor, "id = ?", last.MonitorID)
alertmanager.SendNotification(fmt.Sprintf(
"监控:%s SSL证书变更%s%s。",
monitor.Name, last.Data, r.GetData()))
alertmanager.SendNotification(fmt.Sprintf("服务监控:%s %s", monitor.Name, errMsg))
}
}
}
@@ -38,12 +57,6 @@ func (s *NezhaHandler) ReportTask(c context.Context, r *pb.TaskResult) (*pb.Rece
if err := dao.DB.Create(&mh).Error; err != nil {
return nil, err
}
// 更新最后检测时间
var m model.Monitor
m.ID = r.GetId()
if err := dao.DB.Model(&m).Update("last_check", time.Now()).Error; err != nil {
return nil, err
}
return &pb.Receipt{Proced: true}, nil
}
@@ -93,7 +106,7 @@ func (s *NezhaHandler) ReportSystemInfo(c context.Context, r *pb.Host) (*pb.Rece
host.IP != "" &&
dao.ServerList[clientID].Host.IP != host.IP {
alertmanager.SendNotification(fmt.Sprintf(
"服务器:%s IP变更提醒旧IP%s新IP%s。",
"IP变更提醒 服务器:%s 旧IP%s新IP%s。",
dao.ServerList[clientID].Name, dao.ServerList[clientID].Host.IP, host.IP))
}
dao.ServerList[clientID].Host = &host