-
Notifications
You must be signed in to change notification settings - Fork 753
Expand file tree
/
Copy pathzabbix.go
More file actions
131 lines (123 loc) · 4.14 KB
/
Copy pathzabbix.go
File metadata and controls
131 lines (123 loc) · 4.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package controllers
import (
"PrometheusAlert/models"
"encoding/json"
"strings"
"github.com/astaxie/beego"
"github.com/astaxie/beego/logs"
)
type ZabbixController struct {
beego.Controller
}
type ZabbixMessage struct {
ZabbixTarget string `json:"zabbixtarget"` //告警目标
ZabbixMessage string `json:"zabbixmessage"` //告警消息
ZabbixType string `json:"zabbixtype"` //告警类型
}
//zabbix告警消息入口
func (c *ZabbixController) ZabbixAlert() {
alert := ZabbixMessage{}
logsign := "[" + LogsSign() + "]"
logs.Info(logsign, string(c.Ctx.Input.RequestBody))
json.Unmarshal(c.Ctx.Input.RequestBody, &alert)
res := SendMessageZabbix(alert, logsign)
c.Data["json"] = res
logs.Info(logsign, c.Data["json"])
if beego.AppConfig.String("AlertRecord") == "1" {
status := "success"
if strings.Contains(res, "failed") || strings.Contains(res, "error") || strings.Contains(res, "错误") {
status = "failed"
}
models.AddRecord("Zabbix", alert.ZabbixType, status, res, alert.ZabbixMessage, string(c.Ctx.Input.RequestBody))
}
c.ServeJSON()
}
func SendMessageZabbix(message ZabbixMessage, logsign string) string {
ret := ""
models.AlertsFromCounter.WithLabelValues("zabbix").Add(1)
ChartsJson.Zabbix += 1
switch message.ZabbixType {
//微信渠道
case "wx":
if message.ZabbixTarget == "" {
message.ZabbixTarget = beego.AppConfig.String("wxurl")
}
ret = PostToWeiXin(message.ZabbixMessage, message.ZabbixTarget, "", logsign)
//钉钉渠道
case "dd":
if message.ZabbixTarget == "" {
message.ZabbixTarget = beego.AppConfig.String("ddurl")
}
ret = PostToDingDing("Zabbix告警消息", message.ZabbixMessage, message.ZabbixTarget, "", logsign)
//飞书渠道
case "fs":
if message.ZabbixTarget == "" {
message.ZabbixTarget = beego.AppConfig.String("fsurl")
}
ret = PostToFS("Zabbix告警消息", message.ZabbixMessage, message.ZabbixTarget, "", logsign)
//腾讯云短信
case "txdx":
if message.ZabbixTarget == "" {
message.ZabbixTarget = GetUserPhone(1)
}
ret = PostTXmessage(message.ZabbixMessage, message.ZabbixTarget, logsign)
//百度云短信
case "bddx":
if message.ZabbixTarget == "" {
message.ZabbixTarget = GetUserPhone(1)
}
ret = ret + PostBDYmessage(message.ZabbixMessage, message.ZabbixTarget, logsign)
//阿里云短信
case "alydx":
if message.ZabbixTarget == "" {
message.ZabbixTarget = GetUserPhone(1)
}
ret = ret + PostALYmessage(message.ZabbixMessage, message.ZabbixTarget, logsign)
//腾讯云电话
case "txdh":
if message.ZabbixTarget == "" {
message.ZabbixTarget = GetUserPhone(1)
}
ret = PostTXphonecall(message.ZabbixMessage, message.ZabbixTarget, logsign)
//阿里云电话
case "alydh":
if message.ZabbixTarget == "" {
message.ZabbixTarget = GetUserPhone(1)
}
ret = ret + PostALYphonecall(message.ZabbixMessage, message.ZabbixTarget, logsign)
//容联云电话
case "rlydh":
if message.ZabbixTarget == "" {
message.ZabbixTarget = GetUserPhone(1)
}
ret = ret + PostRLYphonecall(message.ZabbixMessage, message.ZabbixTarget, logsign)
//7mo短信
case "7moordx":
if message.ZabbixTarget == "" {
message.ZabbixTarget = GetUserPhone(1)
}
ret = ret + Post7MOORmessage(message.ZabbixMessage, message.ZabbixTarget, logsign)
//7mo电话
case "7moordh":
if message.ZabbixTarget == "" {
message.ZabbixTarget = GetUserPhone(1)
}
ret = ret + Post7MOORphonecall(message.ZabbixMessage, message.ZabbixTarget, logsign)
//telegram
case "tg":
ret = ret + SendTG(message.ZabbixMessage, logsign)
//workwechat
case "workwechat":
ret = ret + SendWorkWechat(beego.AppConfig.String("WorkWechat_ToUser"), beego.AppConfig.String("WorkWechat_ToParty"), beego.AppConfig.String("WorkWechat_ToTag"), message.ZabbixMessage, logsign)
//百度Hi(如流)
case "rl":
if message.ZabbixTarget == "" {
message.ZabbixTarget = beego.AppConfig.String("BDRL_URL")
}
ret = PostToRuLiu(beego.AppConfig.String("BDRL_ID"), message.ZabbixMessage, message.ZabbixTarget, logsign)
//异常参数
default:
ret = "参数错误"
}
return ret
}