前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux下使用inotify-tools实现文件监控并自动推送钉钉webhook告警

Linux下使用inotify-tools实现文件监控并自动推送钉钉webhook告警

作者头像
yuanfan2012
发布2024-06-14 20:32:25
2600
发布2024-06-14 20:32:25
举报
文章被收录于专栏:WalkingCloud

Linux下使用inotify-tools实现文件监控并自动推送钉钉webhook告警

先上最终的告警效果

(图片点击放大查看)

具体实现的步骤如下

1、yum方式安装inotify-tools

代码语言:javascript
复制
yum install inotify-tools -y

(图片点击放大查看)

2、编写file_monitor.sh

代码语言:javascript
复制
#!/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目录下,添加执行权限

(图片点击放大查看)

代码语言:javascript
复制
cp file_monitor.sh /usr/local/bin/file_monitor.sh
chmod 777 /usr/local/bin/file_monitor.sh

3、编写systemctl服务文件

代码语言:javascript
复制
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、启动服务

代码语言:javascript
复制
systemctl daemon-reload
systemctl enable --now file-monitor.service 
systemctl status file-monitor.service 

(图片点击放大查看)

5、测试验证告警效果

要监控的目录/opt/下创建一个测试文件

代码语言:javascript
复制
[root@almalinux ~]# touch /opt/test.txt
[root@almalinux ~]# echo 123 > /opt/test.txt
[root@almalinux ~]# rm -rf /opt/test.txt 
[root@almalinux ~]# 

最终的告警效果如下

(图片点击放大查看)

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、yum方式安装inotify-tools
  • 2、编写file_monitor.sh
  • 3、编写systemctl服务文件
  • 4、启动服务
  • 5、测试验证告警效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档