调用GrayLog的RestAPI接口实现定时关闭和定时开启告警
需求场景:
由于某些业务告警,在夜间下班休息时间告警可以不用关注,但是频繁产生并推送告警,会造成一定的困扰,所以想实现晚上19点以后定时关闭告警,早上上班时间8点就自动开启告警
通过查阅GrayLog的API介绍与使用文档,最终实现了以上需求,具体操作步骤如下
1、GrayLog中创建开发者用户developer
角色我这里用Admin角色
(图片点击放大查看)
(图片点击放大查看)
(图片点击放大查看)
然后创建token
(图片点击放大查看)
(图片点击放大查看)
nc3lmi05nae01b6ulvft16okc449oglhgigeab5n7ets0u4oo07
先记录一下这个Token值,后面会用到
2、查看GrayLog的API接口
System/Nodes-------API browser
(图片点击放大查看)
(图片点击放大查看)
(图片点击放大查看)
可以看到三个接口是我们所需要的接口
GET /events/definitions List event definitions PUT /events/definitions/{definitionId}/schedule Enable event definition PUT /events/definitions/{definitionId}/unschedule Disable event definition
3、测试并调试接口
1)、GET /events/definitions List event definitions 列出所有事件定义
(图片点击放大查看)
2)、在GrayLog后台用curl命令测试接口 具体命令如下
curl -s -u nc3lmi05nae01b6ulvft16okc449oglhgigeab5n7ets0u4oo07:token -XGET 'http://192.168.31.170:9000/api/events/definitions?page=1&per_page=50&pretty=true'
当然你可以jq命令,这样有颜色区分更方便查看
可以通过这个接口找到我们要禁用启用的告警id
例如我们要定时控制的告警是"Linux磁盘爆满告警"这个告警
通过GET /events/definitions接口查到的id如下
"id": "647209770de3ff7a424d1f9d",
"title": "Linux磁盘爆满告警",
3)、禁用启用的接口则为
PUT /events/definitions/{definitionId}/schedule Enable event definition PUT /events/definitions/{definitionId}/unschedule Disable event definition
(图片点击放大查看)
4)、我们先用命令禁用一下告警
curl -s -u nc3lmi05nae01b6ulvft16okc449oglhgigeab5n7ets0u4oo07:token -XPUT -H 'X-Requested-By: cli' 'http://192.168.31.170:9000/api/events/definitions/647209770de3ff7a424d1f9d/unschedule' | jq .
(图片点击放大查看)
5)、然后再启用告警
curl -s -u nc3lmi05nae01b6ulvft16okc449oglhgigeab5n7ets0u4oo07:token -XPUT -H 'X-Requested-By: cli' 'http://192.168.31.170:9000/api/events/definitions/647209770de3ff7a424d1f9d/schedule' | jq .
(图片点击放大查看)
4、接下来简单编写脚本配置crontab定时任务
vim /opt/disable_graylogalert.sh #!/bin/bash curl -s -u nc3lmi05nae01b6ulvft16okc449oglhgigeab5n7ets0u4oo07:token -XPUT -H 'X-Requested-By: cli' 'http://192.168.31.170:9000/api/events/definitions/647209770de3ff7a424d1f9d/unschedule' | jq . vim /opt/enable_graylogalert.sh #!/bin/bash curl -s -u nc3lmi05nae01b6ulvft16okc449oglhgigeab5n7ets0u4oo07:token -XPUT -H 'X-Requested-By: cli' 'http://192.168.31.170:9000/api/events/definitions/647209770de3ff7a424d1f9d/schedule' | jq . chmod 777 /opt/enable_graylogalert.sh chmod 777 /opt/disable_graylogalert.sh crontab -e添加如下行 0 8 * * * /opt/enable_graylogalert.sh 0 19 * * * /opt/disable_graylogalert.sh
(图片点击放大查看)
以上就是定时开启和关闭GrayLog告警的具体实现步骤
Tips
本文章实现过程参考如下链接和chatgpt
https://go2docs.graylog.org/5-0/setting_up_graylog/rest_api.html
(图片点击放大查看)