如何精准实现CentOS系统文件dropped的实时报警功能?
- 内容介绍
- 文章标签
- 相关推荐
至于痛点,为什么你需要精准的CentOS文件dropped实时报警?
文件被意外删除往往代表着关键配置、日志或业务数据丢失。如果没有及时发现,可能导致:
- 服务因配置缺失而宕机影响使用者体验;
- 安全审计盲点恶意删除难以追溯;
- 故障定位时间被拉长,运维人员只能靠经验猜测;
- 报警噪声过多或漏报,造成警报疲劳。
建立一种精准、低误报、实时通知的监控方案很关键。
一、了解“dropped”在CentOS中的含义
/proc/sys/kernel/core_pattern。/var/log/audit/audit.log,还有内核事件都可能记录文件被删除的行为。常见触发场景包括:
-
rm/unlink程序调用; -
inotify-watch 事件; -
Audit 规则捕获的
unlinkat/;
使用 Auditd + 自动化脚本
Auditd 能够在内核层记录每一次文件删除操作,配合实时脚本就可以完成
# 安装 auditd
sudo yum install -y audit audispd-plugins
sudo systemctl enable --now auditd
# 添加监控规则
sudo auditctl -w /etc/myapp/ -p wa -k myapp_file_drop
# 持久化规则
echo "-w /etc/myapp/ -p wa -k myapp_file_drop" | sudo tee -a /etc/audit/rules.d/myapp.rules
sudo augenrules --load
#!/bin/bash
LOG="/var/log/audit/audit.log"
ALERT_TO=""
SUBJECT=" CentOS File Dropped Detected"
# 使用 ausearch 实时过滤最近 10秒内的删除事件
while true;do
if ausearch -k myapp_file_drop -ts recent | grep -q "type=SYSCALL";其实,n
MESSAGE=$
echo -e "File drop detected on $\
\
$MESSAGE" | mail -s "$SUBJECT" "$ALERT_TO"
# 防止短时间内重复报警。休眠60秒
sleep 60
fi
sleep 5
done
/usr/local/bin/filedropalert.sh,添加开机自启或放入后台。按理说,
sudo yum install -y inotify-tools
MONITORDIR="/var/www/html" ALERTSCRIPT="/usr/local/bin/notify_slack.sh"
inotifywait -m -r --format '%w%f %e' --timefmt '%Y-%m-%d %H:%M:%S' "$MONITORDIR" | while read FILE EVENT;do if ],n $ALERT_SCRIPT "⚠️ File dropped: $FILE " fi done &
# 自定义脚本暴露 metric
cat <'EOF'>/usr/local/bin/filedropmetric.sh
METRICFILE="/var/lib/nodeexporter/textfilecollector/filedrop.prom" DROPCOUNT=$ echo "centosfiledroppedtotal $DROPCOUNT"> "$METRICFILE" EOF
chmod +x /usr/local/bin/filedropmetric.sh
| crontab -
yaml - alert: CentOSFileDropped 说到expr。increase> 0 从for来看,1m 说到labels,severity: critical annotations: summary: "检测到 CentOS 主机 {{ $labels.instance }} 有文件被删除" description: "最近5分钟内累计 {{ $value }} 次文件删除事件,请立即检查。"
Alertmanager 配置邮件、Slack或Webhook就可以完成多渠道通知。
至于痛点,为什么你需要精准的CentOS文件dropped实时报警?
文件被意外删除往往代表着关键配置、日志或业务数据丢失。如果没有及时发现,可能导致:
- 服务因配置缺失而宕机影响使用者体验;
- 安全审计盲点恶意删除难以追溯;
- 故障定位时间被拉长,运维人员只能靠经验猜测;
- 报警噪声过多或漏报,造成警报疲劳。
建立一种精准、低误报、实时通知的监控方案很关键。
一、了解“dropped”在CentOS中的含义
/proc/sys/kernel/core_pattern。/var/log/audit/audit.log,还有内核事件都可能记录文件被删除的行为。常见触发场景包括:
-
rm/unlink程序调用; -
inotify-watch 事件; -
Audit 规则捕获的
unlinkat/;
使用 Auditd + 自动化脚本
Auditd 能够在内核层记录每一次文件删除操作,配合实时脚本就可以完成
# 安装 auditd
sudo yum install -y audit audispd-plugins
sudo systemctl enable --now auditd
# 添加监控规则
sudo auditctl -w /etc/myapp/ -p wa -k myapp_file_drop
# 持久化规则
echo "-w /etc/myapp/ -p wa -k myapp_file_drop" | sudo tee -a /etc/audit/rules.d/myapp.rules
sudo augenrules --load
#!/bin/bash
LOG="/var/log/audit/audit.log"
ALERT_TO=""
SUBJECT=" CentOS File Dropped Detected"
# 使用 ausearch 实时过滤最近 10秒内的删除事件
while true;do
if ausearch -k myapp_file_drop -ts recent | grep -q "type=SYSCALL";其实,n
MESSAGE=$
echo -e "File drop detected on $\
\
$MESSAGE" | mail -s "$SUBJECT" "$ALERT_TO"
# 防止短时间内重复报警。休眠60秒
sleep 60
fi
sleep 5
done
/usr/local/bin/filedropalert.sh,添加开机自启或放入后台。按理说,
sudo yum install -y inotify-tools
MONITORDIR="/var/www/html" ALERTSCRIPT="/usr/local/bin/notify_slack.sh"
inotifywait -m -r --format '%w%f %e' --timefmt '%Y-%m-%d %H:%M:%S' "$MONITORDIR" | while read FILE EVENT;do if ],n $ALERT_SCRIPT "⚠️ File dropped: $FILE " fi done &
# 自定义脚本暴露 metric
cat <'EOF'>/usr/local/bin/filedropmetric.sh
METRICFILE="/var/lib/nodeexporter/textfilecollector/filedrop.prom" DROPCOUNT=$ echo "centosfiledroppedtotal $DROPCOUNT"> "$METRICFILE" EOF
chmod +x /usr/local/bin/filedropmetric.sh
| crontab -
yaml - alert: CentOSFileDropped 说到expr。increase> 0 从for来看,1m 说到labels,severity: critical annotations: summary: "检测到 CentOS 主机 {{ $labels.instance }} 有文件被删除" description: "最近5分钟内累计 {{ $value }} 次文件删除事件,请立即检查。"
Alertmanager 配置邮件、Slack或Webhook就可以完成多渠道通知。

