【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

admin 2024年4月22日00:09:39评论1 views字数 3806阅读12分41秒阅读模式

接上一篇:【Graylog告警联动篇】部署webhook服务实现自动传参并自动执行shell脚本

在webhook工具的基础下实现:【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

1、创建Linux服务器的日志存储索引

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

2、创建Syslog UDP类型Input

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

如果防火墙有启用,需要放通对应的端口 

firewall-cmd --permanent --zone=public --add-port=1514/udp 

firewall-cmd --reload

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

3、创建对应Stream

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

4、Linux服务器使用Rsyslog服务将系统日志接入到Graylog

echo "*.* @192.168.31.54:1514;RSYSLOG_SyslogProtocol23Format" >> /etc/rsyslog.conf
tail -n 5 /etc/rsyslog.conf
systemctl restart rsyslog

5、验证是否收到这台服务器的系统日志

GrayLog平台上进行查询,确认是否正常收到系统日志

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

6、PrometheusAlert配置Linux磁盘满告警模板

linuxdiskalert告警模板

模板内容如下

## [告警信息](.check_result.Event.Source)
### <font color=#FF0000>告警描述:{{.event_definition_description}}</font> 
{{ range $k,$v:=.backlog }}
##### <font color="#FF0000">告警开始时间</font>:{{GetCSTtime $v.timestamp}} </br>
##### <font color="#FF0000">告警服务器名称</font>:{{$v.source}} </br>
##### <font color="#FF0000">告警服务器IP地址</font>:{{$v.fields.gl2_remote_ip}} </br>
##### <font color="#FF0000">告警日志详情</font>:{{$v.message}} </br>
{{end}}

7、并在GrayLogNotifications配置界面中添加告警模板

1)、HTTP Notification中告警模板如下
【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况
(图片点击放大查看)

使用PrometheusAlert中对应的模板

http://192.168.31.54:8089/prometheusalert?type=dd&tpl=linuxdiskalert&ddurl=https://oapi.dingtalk.com/robot/send?access_token=838eb303c4035b35447b3caaaa486b2ee6b1f4918be28eba07f7b491155652bc&at=15306545487

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

2)Alarm Callbacks类型告警模板 Bash Command 内容为:/opt/ServerDisk_Request.sh ${gl2_remote_ip}

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

其中/opt/ServerDisk_Request.sh 实现推送到钉钉群机器人

调用webhook执行查看磁盘使用情况的shell脚本 aaa 记得给graylog系统用户添加到sudoers用户中 

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

8、接下来配置磁盘满的告警

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

9、测试触发告警

logger -n 192.168.31.54 -P 1514 -d "write error:/var/log/messages: no space left on device"

Tips

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

(图片点击放大查看)

/opt/ServerDisk_Request.sh的脚本内容如下

#!/bin/bash
ServerIP=$1
cat  > /opt/ServerDisk_request.json << EOF
{
 "msgtype""actionCard",
 "actionCard": {
  "title":"是否查看当前Linux服务器磁盘占用情况",
  "text":"
   ##### 请确认是否查看当前Linux服务器磁盘占用情况 n
>  ##### <font color=#FF0000> Linux服务器:tempIP  </font> n
        "
,
        "btnOrientation""1",
        "btns": [
            {
                "title""确认查看",
                "actionURL""http://192.168.31.54:9090/hooks/diskinfo?ServerIP=tempIP"
            },
            {
                "title""忽略",
                "actionURL""http://192.168.31.54:9090/"
            }
        ]
    }
}
EOF
sed -i "s^tempIP^$ServerIP^g" /opt/ServerDisk_request.json
echo "$ServerIP" > /opt/ServerIP_temp.txt
curl -k  -H "Content-Type: application/json" -X POST -d @/opt/ServerDisk_request.json 'https://oapi.dingtalk.com/robot/send?access_token=838eb303c4035b35447b3caaaa486b2ee6b1f4918be28eba07f7b491155652bc'

webhook中hooks.json内容如下

[root@almalinux ~]# cat /opt/webhook/hooks.json 
[
 {
  "id""diskinfo",
  "execute-command" : "/opt/diskdf_info.sh",
  "include-command-output-in-response"true,
  "incoming-payload-content-type""application/json",
  "pass-arguments-to-command":
  [
    {
      "source":"url",
      "name":"ServerIP"
    }
  ]
 }
]

/opt/diskdf_info.sh脚本内容如下

#!/bin/bash
# 读取保存在 /opt/ServerIP_temp.txt 的服务器 IP 地址
read server_ip < /opt/ServerIP_temp.txt
# 确认是否正确获取了 IP 地址
if [ -z "$server_ip" ]; then
    echo "未能获取服务器 IP 地址。"
    exit 1 # 如果没有获取到 IP 地址,则退出程序。
else
   echo "=======================================================" 
   echo "当前服务器(IP:$server_ip))的磁盘df -PTh信息如下"
   ssh  -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa root@$server_ip "df -lPTh | grep -vE 'overlay|tmpfs|cdrom'"
   echo "=======================================================" 
   echo "lsblk信息如下"
   ssh  -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa root@$server_ip "lsblk"
   echo "=======================================================" 
fi

说明:需要GraylogServer服务器生成SSH免密登录的密钥对,并需要公钥写入到所有系统日志接入了GrayLog的Linux服务器

最终的告警效果

收到告警后,点击查看按钮 

【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

本公众号回复【Linux磁盘满】获取以上脚本和webhook配置文件下载链接

原文始发于微信公众号(WalkingCloud):【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月22日00:09:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【Graylog告警联动篇】Linux服务器磁盘爆满告警并实现一键查看服务器磁盘占用情况https://cn-sec.com/archives/2678116.html

发表评论

匿名网友 填写信息