前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

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

作者头像
yuanfan2012
发布2021-12-21 20:44:23
2K0
发布2021-12-21 20:44:23
举报
文章被收录于专栏:WalkingCloudWalkingCloud

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

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

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

准备条件

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

以QQ邮箱为例

  • 2、下载webhook
代码语言:javascript
复制
https://github.com/adnanh/webhook

(图片可点击放大查看)

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

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

代码语言:javascript
复制
https://open.dingtalk.com/document/robots/custom-robot-access

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

(图片可点击放大查看)

(图片可点击放大查看)

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

GrayLogServer:192.168.31.127

测试机 192.168.31.232

具体步骤

1、Graylog配置文件进行修改

代码语言:javascript
复制
cd /etc/graylog/server/
vim server.conf

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

代码语言:javascript
复制
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 = 1187724389@qq.com
transport_email_auth_password = rrXXXXXXXXXXX
transport_email_subject_prefix = [graylog]
transport_email_from_email = graylog@walkingcloud.cn
transport_email_web_interface_url = https://graylog.walkingcloud.cn

(图片可点击放大查看)

(图片可点击放大查看)

2、重启服务

代码语言:javascript
复制
systemctl restart graylog-server.service 
tail -f /var/log/graylog-server/server.log

(图片可点击放大查看)

3、部署webhook

下载webhook后上传到Graylog服务器

(图片可点击放大查看)

代码语言:javascript
复制
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"
    }
  ]
 } 
]

(图片可点击放大查看)

(图片可点击放大查看)

启动webhook

代码语言:javascript
复制
 ./webhook -hooks /opt/hooks.json -port 8080 --verbose

(图片可点击放大查看)

代码语言:javascript
复制
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

(图片可点击放大查看)

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

(图片可点击放大查看)

可以看到请求可以收到

4、配置GrayLog Alert告警流程

参考如下文档

代码语言:javascript
复制
https://zhuanlan.zhihu.com/p/342764427

1、新建用户

(图片可点击放大查看)

(图片可点击放大查看)

再新建告警通知类型Email Notification

(图片可点击放大查看)

(图片可点击放大查看)

(图片可点击放大查看)

(图片可点击放大查看)

2、再新建HTTP Notification

Title:钉钉机器人告警

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

(图片可点击放大查看)

3、并执行测试告警

可以看到webhook有收到post请求

然后保存

(图片可点击放大查看)

(图片可点击放大查看)

4、接下来配置Alert

比如SSH 登录失败告警

(图片可点击放大查看)

(图片可点击放大查看)

(图片可点击放大查看)

(图片可点击放大查看)

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

提前yum安装jq工具

(图片可点击放大查看)

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

(图片可点击放大查看)

代码语言:javascript
复制
[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
代码语言:javascript
复制
[root@centos ~]# cat /opt/alert.json 
{
 "msgtype": "markdown",
 "markdown": 
         {
         "title":"PAYLOAD1",
         "text": "#### PAYLOAD1 \n #####原始日志:PAYLOAD2 \n"
     }
}

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

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

(图片可点击放大查看)

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

(图片可点击放大查看)

(图片可点击放大查看)

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

总结:

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

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

(图片可点击放大查看)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WalkingCloud 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备条件
  • 具体步骤
    • 1、Graylog配置文件进行修改
      • 2、重启服务
        • 3、部署webhook
          • 4、配置GrayLog Alert告警流程
            • 1、新建用户
            • 2、再新建HTTP Notification
            • 3、并执行测试告警
            • 4、接下来配置Alert
          • 5、接下配置推送到钉钉机器人的脚本
            • 6、接下触发一下SSH登录失败
              • 总结:
              相关产品与服务
              Elasticsearch Service
              腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档