Linux下使用inotify-tools实现文件监控并自动推送钉钉webhook告警
参考之前的文章【学习笔记】CentOS下利用rsync+inotify实现数据实时同步
先上最终的告警效果
(图片点击放大查看)
具体实现的步骤如下
1、yum方式安装inotify-tools
yum install inotify-tools -y
(图片点击放大查看)
2、编写file_monitor.sh
#!/bin/bash
# 钉钉机器人webhook地址
DINGTALK_WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=838eb303c4035b35447b3caaaa486b2ee6b1f4918be28eba07f7b491155652bc"
# 要监控的目录路径
WATCH_DIR="/opt/"
# 事件列表(包括 create、modify、delete)
EVENTS="create,modify,delete"
# 函数:发送消息到钉钉
send_to_dingtalk() {
local message=$1
curl -s -X POST $DINGTALK_WEBHOOK
-H 'Content-Type: application/json'
-d "{
"msgtype": "markdown",
"markdown": {
"title":"文件变化告警",
"text":"$message"
}
}"
}
# 获取主机名和IP
HOSTNAME=$(hostname)
IP=$(hostname -I)
# 运行 inotifywait 并处理事件循环
inotifywait -m -r --format '%w%f %e' --event $EVENTS $WATCH_DIR | while read file event; do
CURRENT_TIME=$(date +"%Y-%m-%d %H:%M:%S")
EVENT_MESSAGE="
##### 文件变化告警 n
> ##### <font color=#67C23A> 【服务器名称】: </font> <font color=#FF0000>$HOSTNAME</font> n
> ##### <font color=#67C23A> 【服务器IP】:</font><font color=#FF0000>$IP</font>n
> ##### <font color=#67C23A> 【告警时间】:</font><font color=#FF0000>$CURRENT_TIME</font>n
> ##### <font color=#67C23A> 【事件详情】:</font>n
>- 发生变化的文件:<code>${file}</code>n
>- inotify事件类型:<font color=#FF0000> <code>${event}</code> </font>
"
echo "$EVENT_MESSAGE" # 输出事件信息(可选)
send_to_dingtalk "$EVENT_MESSAGE" # 调用函数以通知到 dingding webhook
done
并将脚本拷贝到/usr/local/bin目录下,添加执行权限
(图片点击放大查看)
cp file_monitor.sh /usr/local/bin/file_monitor.sh
chmod 777 /usr/local/bin/file_monitor.sh
3、编写systemctl服务文件
vim /etc/systemd/system/file-monitor.service
添加如下内容
[Unit]
Description=File Monitor Service for Directory Changes Notification via DingTalk
[Service]
Type=simple
ExecStart=/usr/local/bin/file_monitor.sh
# Restart service on failure to ensure it keeps running.
Restart=on-failure
RestartSec=5s
# Environment variables can be set here if needed.
# Example:
# Environment="VAR_NAME=value"
[Install]
WantedBy=multi-user.target
4、启动服务
systemctl daemon-reload
systemctl enable --now file-monitor.service
systemctl status file-monitor.service
(图片点击放大查看)
5、测试验证告警效果
要监控的目录/opt/下创建一个测试文件
[root@almalinux ~]# touch /opt/test.txt
[root@almalinux ~]# echo 123 > /opt/test.txt
[root@almalinux ~]# rm -rf /opt/test.txt
[root@almalinux ~]#
最终的告警效果如下
(图片点击放大查看)
原文始发于微信公众号(WalkingCloud):Linux下使用inotify-tools实现文件监控并自动推送钉钉webhook告警
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论