Ubuntu Spool监控与报警实现指南
Spool目录(通常为/var/spool
)用于存储打印队列、邮件临时文件等服务数据,监控其变化可及时发现异常。以下是常用监控手段:
inotifywait
是Linux内核inotify接口的命令行工具,可实时监控文件系统事件(如创建、删除、修改)。
sudo apt-get update && sudo apt-get install inotify-tools
inotifywait -m -r -e create,delete,modify /var/spool
-m
:持续监控(不退出);-r
:递归监控子目录;-e
:指定监控事件类型(可扩展为create,delete,modify,move
等)。/var/spool/cups
目录有新文件创建时,会显示/var/spool/cups CREATE newfile.txt
。auditd
是Linux系统审计工具,可记录详细的文件访问日志(包括用户、进程、操作时间),适合安全审计场景。
sudo apt-get install auditd audispd-plugins
;/etc/audit/rules.d/audit.rules
,添加-w /var/spool -p wa -k spool_monitor
(-w
指定监控路径,-p wa
监控写入和属性变更,-k
设置规则键名);sudo systemctl restart auditd
。ausearch -k spool_monitor
命令过滤出spool_monitor
相关的审计日志,包含事件详情(如type=SYSCALL msg=audit(1719012345.123:456): arch=x86_64 syscall=openat success=yes exit=3 a0=7ffd12345678 a1=O_WRONLY|O_CREAT|O_TRUNC a2=0644 a3=0x0 a4=0x7ffd12345678 filename="/var/spool/cups/newfile.txt"
)。通过cron定时任务定期执行ls
或du
命令,将结果记录到日志文件,适合长期归档监控。
crontab -e
;/var/spool
目录列表):*/5 * * * * ls -l /var/spool >> /var/log/spool_monitor.log 2>&1
。du -sh /var/spool
监控目录大小,或find /var/spool -type f -mtime +7
查找7天未修改的文件。sudo apt-get install glances
;sudo glances
,在“Files”模块中查看/var/spool
目录的大小、文件数量变化,可设置告警阈值(如目录大小超过1GB时触发告警)。node_exporter
采集文件系统指标(如df_inodes_free
、node_filesystem_avail_bytes
),在Grafana中配置仪表盘和告警规则(如df_inodes_free < 10%
时发送通知)。报警需结合监控工具,将异常事件转化为通知(邮件、Slack、PagerDuty等)。以下是常见报警方式:
通过mailutils
或ssmtp
发送邮件,适用于简单场景。
sudo apt-get install mailutils
;/etc/rsyslog.conf
,添加mail.spool.* /var/spool/mail/your_username
(将spool相关日志发送到用户邮箱);auditd
记录到spool_monitor
事件的严重级别为alert
时,使用logger
命令发送邮件:logger -p mail.alert "Spool directory /var/spool modified by user $(whoami)"
。auditd
可通过audispd
插件将告警发送到syslog或外部工具。
/etc/audit/rules.d/audit.rules
,添加-a always,exit -F arch=b64 -S openat -F path=/var/spool -F perm=wa -F success=1 -k spool_write_alert
(仅监控成功的写入操作);ausearch -k spool_write_alert | aureport -f -i
,可提取事件详情并转发到邮件或监控系统。node_exporter
的filesystem
指标,设置告警规则(如node_filesystem_avail_bytes{mountpoint="/var/spool"} < 1073741824
,即可用空间小于1GB),通过Alertmanager发送邮件、Slack通知。check_disk
)监控/var/spool
目录的大小或文件数量,超过阈值时触发告警(如短信、电话通知)。