Skip to content

Commit

Permalink
更新graylog2和graylog3的显示字段
Browse files Browse the repository at this point in the history
  • Loading branch information
jikun.zhang committed Jan 13, 2020
1 parent 81b5945 commit e6a02a1
Show file tree
Hide file tree
Showing 6 changed files with 101 additions and 80 deletions.
6 changes: 6 additions & 0 deletions README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ PrometheusAlert是开源的运维告警中心消息转发系统,支持主流的

--------------------------------------

2.3.1版本更新说明:
---------------------
- 1.更新graylog2和graylog3的显示字段

--------------------------------------

2.3版本更新说明:
---------------------
- 1.增加日志配置项
Expand Down
87 changes: 45 additions & 42 deletions controllers/graylog2.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,18 @@ type Graylog2 struct {
Check_result Check_result `json:"check_result"`
}
type Check_result struct {
MatchingMessages []MatchingMessage `json:"matching_messages"`
Result_description string `json:"result_description"`
Triggered_condition Triggered_condition `json:"triggered_condition"`
Triggered_at string `json:"triggered_at"`
}
type Triggered_condition struct {
Type string `json:"type"`
Title string `json:"title"`
Parameters Parameters `json:"parameters"`
type MatchingMessage struct {
Index string `json:"index"`
Message string `json:"message"`
Fields G2Field `json:"fields"`
Timestamp string `json:"timestamp"`
}
type Parameters struct {
Time int `json:"time"`
type G2Field struct {
Gl2RemoteIp string `json:"gl2_remote_ip"`
Gl2RemotePort int `json:"gl_2_remote_port"`
}
//for graylog alert
func (c *Graylog2Controller) GraylogDingding() {
Expand Down Expand Up @@ -95,40 +96,42 @@ func SendMessageG(message Graylog2,typeid int,logsign string)(string) {
Title:=beego.AppConfig.String("title")
Alerturl:=beego.AppConfig.String("GraylogAlerturl")
Logourl:=beego.AppConfig.String("logourl")
DDtext:="## ["+Title+"Graylog2告警信息]("+Alerturl+")\n\n"+"#### "+message.Check_result.Result_description+"\n\n"+"###### 告警名称:"+message.Check_result.Triggered_condition.Title+"\n\n"+"###### 告警类型:"+message.Check_result.Triggered_condition.Type+"\n\n"+"###### 开始时间:"+message.Check_result.Triggered_at+" \n\n"+"###### 持续时间:"+strconv.Itoa(message.Check_result.Triggered_condition.Parameters.Time)+"\n\n"+"!["+Title+"]("+Logourl+")"
WXtext:="["+Title+"Graylog2告警信息]("+Alerturl+")\n>**"+message.Check_result.Result_description+"**\n>`告警名称:`"+message.Check_result.Triggered_condition.Title+"\n`告警类型:`"+message.Check_result.Triggered_condition.Type+"\n`开始时间:`"+message.Check_result.Triggered_at+" \n`持续时间:`"+strconv.Itoa(message.Check_result.Triggered_condition.Parameters.Time)+"\n"
PhoneCallMessage=message.Check_result.Result_description
//触发钉钉
if typeid==2 {
ddurl:=beego.AppConfig.String("ddurl")
PostToDingDing(Title+"告警信息", DDtext, ddurl,logsign)
}
//触发微信
if typeid==3 {
wxurl:=beego.AppConfig.String("wxurl")
PostToWeiXin(WXtext, wxurl,logsign)
}
//取到手机号
phone:=GetUserPhone(1)
//触发电话告警
if typeid==4 {
PostTXphonecall(PhoneCallMessage,phone,logsign)
}
//触发腾讯云短信告警
if typeid==5 {
PostTXmessage(PhoneCallMessage,phone,logsign)
}
//触发华为云短信告警
if typeid==6 {
PostHWmessage(PhoneCallMessage,phone,logsign)
}
//触发阿里云短信告警
if typeid==7 {
PostALYmessage(PhoneCallMessage,phone,logsign)
}
//触发阿里云电话告警
if typeid==8 {
PostALYphonecall(PhoneCallMessage,phone,logsign)
for _, m := range message.Check_result.MatchingMessages{
DDtext:="## ["+Title+"Graylog2告警信息]("+Alerturl+")\n\n"+"#### "+m.Message+"\n\n"+"###### 告警名称:"+message.Check_result.Result_description+"\n\n"+"###### 告警索引:"+m.Index+"\n\n"+"###### 开始时间:"+m.Timestamp+" \n\n"+"###### 告警主机:"+m.Fields.Gl2RemoteIp+":"+strconv.Itoa(m.Fields.Gl2RemotePort)+"\n\n"+"!["+Title+"]("+Logourl+")"
WXtext:="["+Title+"Graylog2告警信息]("+Alerturl+")\n>**"+m.Message+"**\n>`告警名称:`"+message.Check_result.Result_description+"\n`告警索引:`"+m.Index+"\n`开始时间:`"+m.Timestamp+" \n`告警主机:`"+m.Fields.Gl2RemoteIp+":"+strconv.Itoa(m.Fields.Gl2RemotePort)+"\n"
PhoneCallMessage="告警主机:"+m.Fields.Gl2RemoteIp+":"+strconv.Itoa(m.Fields.Gl2RemotePort)+"告警消息:"+m.Message
//触发钉钉
if typeid==2 {
ddurl:=beego.AppConfig.String("ddurl")
PostToDingDing(Title+"告警信息", DDtext, ddurl,logsign)
}
//触发微信
if typeid==3 {
wxurl:=beego.AppConfig.String("wxurl")
PostToWeiXin(WXtext, wxurl,logsign)
}
//取到手机号
phone:=GetUserPhone(1)
//触发电话告警
if typeid==4 {
PostTXphonecall(PhoneCallMessage,phone,logsign)
}
//触发腾讯云短信告警
if typeid==5 {
PostTXmessage(PhoneCallMessage,phone,logsign)
}
//触发华为云短信告警
if typeid==6 {
PostHWmessage(PhoneCallMessage,phone,logsign)
}
//触发阿里云短信告警
if typeid==7 {
PostALYmessage(PhoneCallMessage,phone,logsign)
}
//触发阿里云电话告警
if typeid==8 {
PostALYphonecall(PhoneCallMessage,phone,logsign)
}
}
return "告警消息发送完成."
}
87 changes: 49 additions & 38 deletions controllers/graylog3.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,33 @@ import (
"encoding/json"
"github.com/astaxie/beego"
"github.com/astaxie/beego/logs"
"strconv"
)

type Graylog3Controller struct {
beego.Controller
}
//graylog3告警部分
type Graylog3 struct {
Title string `json:"event_definition_title"`
Description string `json:"event_definition_description"`
Event AlertEvent `json:"event"`
//backlog alertBacklog `json:"backlog"`
Backlogs []Backlog `json:"backlog"`
}
type AlertEvent struct {
Source string `json:"source`
}
type Backlog struct {
Timestamp string `json:"timestamp"` //开始时间
Timestamp_processing string `json:"timestamp_processing"` //持续时间
Index string `json:"index"` //索引
Message string `json:"message"`
Source string `json:"source`
Fields G3Field `json:"fields`
}
type G3Field struct {
Gl2RemoteIp string `json:"gl2_remote_ip"`
Gl2RemotePort int `json:"gl_2_remote_port"`
}


//for graylog3 alert
func (c *Graylog3Controller) GraylogDingding() {
alert:=Graylog3{}
Expand Down Expand Up @@ -89,40 +98,42 @@ func (c *Graylog3Controller) GraylogALYdh() {
func SendMessageG3(message Graylog3,typeid int,logsign string)(string) {
Title:=beego.AppConfig.String("title")
Logourl:=beego.AppConfig.String("logourl")
DDtext:="## ["+Title+"Graylog3告警信息]("+message.Event.Source+")\n\n"+"#### "+message.Description+"\n\n"+"###### 告警名称:"+message.Title+"\n\n"+"###### 开始时间:"+message.Event.Timestamp+" \n\n"+"###### 持续时间:"+message.Event.Timestamp_processing+"\n\n"+"!["+Title+"]("+Logourl+")"
WXtext:="["+Title+"Graylog3告警信息]("+message.Event.Source+")\n>**"+message.Description+"**\n>`告警名称:`"+message.Title+"\n`开始时间:`"+message.Event.Timestamp+" \n`持续时间:`"+message.Event.Timestamp_processing+"\n"
PhoneCallMessage=message.Description
//触发钉钉
if typeid==2 {
ddurl:=beego.AppConfig.String("ddurl")
PostToDingDing(Title+"告警信息", DDtext, ddurl,logsign)
}
//触发微信
if typeid==3 {
wxurl:=beego.AppConfig.String("wxurl")
PostToWeiXin(WXtext, wxurl,logsign)
}
//取到手机号
phone:=GetUserPhone(1)
//触发电话告警
if typeid==4 {
PostTXphonecall(PhoneCallMessage,phone,logsign)
}
//触发腾讯云短信告警
if typeid==5 {
PostTXmessage(PhoneCallMessage,phone,logsign)
}
//触发华为云短信告警
if typeid==6 {
PostHWmessage(PhoneCallMessage,phone,logsign)
}
//触发阿里云短信告警
if typeid==7 {
PostALYmessage(PhoneCallMessage,phone,logsign)
}
//触发阿里云电话告警
if typeid==8 {
PostALYphonecall(PhoneCallMessage,phone,logsign)
for _, m := range message.Backlogs {
DDtext:="## ["+Title+"Graylog3告警信息]("+message.Event.Source+")\n\n"+"#### "+m.Message+"\n\n"+"###### 告警名称:"+message.Description+"\n\n"+"###### 告警索引:"+m.Index+"\n\n"+"###### 开始时间:"+m.Timestamp+" \n\n"+"###### 告警主机:"+m.Fields.Gl2RemoteIp+":"+strconv.Itoa(m.Fields.Gl2RemotePort)+"\n\n"+"!["+Title+"]("+Logourl+")"
WXtext:="["+Title+"Graylog3告警信息]("+message.Event.Source+")\n>**"+m.Message+"**\n>`告警名称:`"+message.Description+"\n`告警索引:`"+m.Index+"\n`开始时间:`"+m.Timestamp+" \n`告警主机:`"+m.Fields.Gl2RemoteIp+":"+strconv.Itoa(m.Fields.Gl2RemotePort)+"\n"
PhoneCallMessage="告警主机:"+m.Fields.Gl2RemoteIp+":"+strconv.Itoa(m.Fields.Gl2RemotePort)+"告警消息:"+m.Message
//触发钉钉
if typeid==2 {
ddurl:=beego.AppConfig.String("ddurl")
PostToDingDing(Title+"告警信息", DDtext, ddurl,logsign)
}
//触发微信
if typeid==3 {
wxurl:=beego.AppConfig.String("wxurl")
PostToWeiXin(WXtext, wxurl,logsign)
}
//取到手机号
phone:=GetUserPhone(1)
//触发电话告警
if typeid==4 {
PostTXphonecall(PhoneCallMessage,phone,logsign)
}
//触发腾讯云短信告警
if typeid==5 {
PostTXmessage(PhoneCallMessage,phone,logsign)
}
//触发华为云短信告警
if typeid==6 {
PostHWmessage(PhoneCallMessage,phone,logsign)
}
//触发阿里云短信告警
if typeid==7 {
PostALYmessage(PhoneCallMessage,phone,logsign)
}
//触发阿里云电话告警
if typeid==8 {
PostALYphonecall(PhoneCallMessage,phone,logsign)
}
}
return "告警消息发送完成."
}
Binary file modified example/linux/PrometheusAlert
Binary file not shown.
Binary file modified example/windows/PrometheusAlert.exe
Binary file not shown.
1 change: 1 addition & 0 deletions logs/prometheusalertcenter.log
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2020/01/13 16:22:49.834 [I] [asm_amd64.s:1337] http server Running on http://:8080

0 comments on commit e6a02a1

Please sign in to comment.