【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

  • A+
所属分类:系统文档

点击上方"walkingcloud"关注,并选择"星标"公众号

GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人实践

GrayLog4.2可以使用HTTP告警和邮件告警两种方式进行日志告警

下面同时测试这两种告警方式

准备条件

  • 1、QQ邮箱为例,QQ邮箱授权码

以QQ邮箱为例

  • 2、下载webhook
https://github.com/adnanh/webhook

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

  • 3、准备一个钉钉群机器人

参考钉钉开放文档,添加自定义机器人

https://open.dingtalk.com/document/robots/custom-robot-access

钉钉机器人安全设置中为webhook所在服务器的公网出口IP

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

  • 4、GrayLog日志分析服务器及测试机器

GrayLogServer:192.168.31.127

测试机 192.168.31.232

具体步骤

1、Graylog配置文件进行修改

cd /etc/graylog/server/
vim server.conf

配置文件中添加邮箱服务器的配置

transport_email_enabled = true
transport_email_hostname = smtp.qq.com
transport_email_port = 587
transport_email_use_auth = true
transport_email_use_tls = true
transport_email_use_ssl = false
transport_email_auth_username = [email protected]
transport_email_auth_password = rrXXXXXXXXXXX
transport_email_subject_prefix = [graylog]
transport_email_from_email = [email protected]
transport_email_web_interface_url = https://graylog.walkingcloud.cn

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

2、重启服务

systemctl restart graylog-server.service 
tail -f /var/log/graylog-server/server.log

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

3、部署webhook

下载webhook后上传到Graylog服务器

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

cd /opt
tar -zxvf webhook-linux-amd64.tar.gz -C ./
cp webhook-linux-amd64/webhook ./
chmod 755 webhook
./webhook --help

vi /opt/hooks.json
[
 {
  "id""push2dingtalk",
  "execute-command" : "/opt/push2robot.sh",
 "pass-arguments-to-command":
  [
    {
      "source":"entire-payload",
      #"name":"parameter-name"
    }
  ]
 } 
]

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

启动webhook

 ./webhook -hooks /opt/hooks.json -port 8080 --verbose

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

firewall-cmd --add-port=8080/tcp --permanent --zone=public 
firewall-cmd --reload
并测试
curl -H "Content-Type: application/json" -X POST -d 'test' http://192.168.31.127:8080/hooks/push2dingtalk

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

发送POST请求到http://192.168.31.127:8080/hooks/push2dingtalk 

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

可以看到请求可以收到 

4、配置GrayLog Alert告警流程

参考如下文档

https://zhuanlan.zhihu.com/p/342764427

1、新建用户

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

再新建告警通知类型Email Notification

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

2、再新建HTTP Notification

Title:钉钉机器人告警

URL http://192.168.31.127:8080/hooks/push2dingtalk

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

3、并执行测试告警

可以看到webhook有收到post请求

然后保存

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

4、接下来配置Alert

比如SSH 登录失败告警

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

5、接下配置推送到钉钉机器人的脚本

提前yum安装jq工具 

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

推送到钉钉机器人的脚本脚本内容如下

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

[root@centos ~]# vi /opt/push2robot.sh 
[root@centos ~]# vi /opt/alert.json
[root@centos ~]
[root@centos ~]# chmod 755 /opt/push2robot.sh 
[root@centos ~]# cat /opt/push2robot.sh 
#!/bin/bash
PAYLOAD= $1
echo $1 >> /var/log/test.log
PAYLOAD1=`echo $1 | jq '.event_definition_title' | sed 's/"//g'`
PAYLOAD2=`echo $1 | jq '.backlog[].fields.full_message' | sed 's/"//g'`
echo $PAYLOAD1 >> /var/log/payload1.log
echo $PAYLOAD2  >> /var/log/payload2.log
sed -i "s/PAYLOAD1/$PAYLOAD1/g" /opt/alert.json
sed -i "s/PAYLOAD2/$PAYLOAD2/g" /opt/alert.json
curl -H "Content-Type: application/json" -X POST -d @/opt/alert.json https://oapi.dingtalk.com/robot/send?access_token=413d9a8435aeaXXXXXXXXX91648b73a069c7aa2e709595

cat  > /opt/alert.json << \EOF
{
 "msgtype""markdown",
 "markdown"
         {
         "title":"PAYLOAD1",
         "text""#### PAYLOAD1 \n #####原始日志:PAYLOAD2 \n"
     }
}
EOF
[root@centos ~]# cat /opt/alert.json 
{
 "msgtype""markdown",
 "markdown"
         {
         "title":"PAYLOAD1",
         "text""#### PAYLOAD1 \n #####原始日志:PAYLOAD2 \n"
     }
}

6、接下触发一下SSH登录失败

192.168.31.232测试机触发登录失败的日志

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

验证是否有收到钉钉告警和邮件告警

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

可以看到已经收到邮件和钉钉告警

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

总结:

当然单条登录失败就触发一条告警,当SSH攻击日志较多时,告警就会很频繁

但在研究聚合,比如登录失败的数量达到一定数量时才触发告警,测试时未能成功,后续有时间再研究

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

(图片可点击放大查看)

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin