如何在Linux中配置文件监控告警 Linux使用monit监控服务的方法

千辰吖_5761

千辰吖_5761

2026-05-21

537人浏览

原创

monit支持文件元数据监控但不监控内容变化;常用场景包括防日志无限增长、检测清空或覆盖;通过if size、if changed timestamp、if changed checksum等规则触发告警或执行命令。

如何在linux中配置文件监控告警 linux使用monit监控服务的方法

monit 直接支持文件监控,不需要额外脚本或轮询工具——但必须明确:它不监控“内容变化”,只监控元数据(大小、时间戳、校验和、权限)是否异常。想靠它发现日志被篡改或配置被覆盖?可以;想实时捕获某行文本新增?不行。

监控文件大小或修改时间变更

最常用场景是防止单个日志或配置文件无限增长、或被意外清空/覆盖。monit 用 if changed 或 if size 判断,触发 alert 或 exec。

  • if changed timestamp:文件 mtime 变更即告警(比如有人 touch 或 cp 覆盖)
  • if size > 100MB:适合日志文件,超限发邮件或执行压缩脚本
  • if size = 0:检测空文件(如被 > /var/log/app.log 清空)

示例(监控 Nginx 访问日志):

check file nginx_access with path /var/log/nginx/access.log
  if size > 50MB then alert
  if changed timestamp then alert
  if size = 0 then exec "/bin/sh -c 'echo $(date) - log truncated | mail -s 'NGINX LOG RESET' admin@local'"

用 checksum 监控关键配置文件完整性

校验和监控适用于 /etc/ssh/sshd_config、/etc/nginx/nginx.conf 这类绝不该被随意修改的文件。注意:monit 默认只在启动时计算一次 checksum,后续靠定期重读比对——所以必须确保 set daemon 间隔合理(比如 30 秒),否则变更后要等下一个周期才触发。

  • 首次运行前手动初始化 checksum:monit -I -c /etc/monit.conf(-I 强制初始化状态)
  • 配置中必须写绝对路径,且 monit 进程要有读取权限(常见坑:SELinux 或 root-only 文件)
  • 不支持通配符,每个文件需单独 check file 块

示例:

VLAN Linux Client
VLAN Linux Client

管理 VLAN.CN Linux 客户端的安装、登录、组网连接、服务控制及网络诊断操作。

下载
check file sshd_config with path /etc/ssh/sshd_config
  if changed checksum then alert
  group security

监控目录是否存在或权限异常

目录监控常被忽略,但它能快速发现挂载点丢失、umount 误操作、或权限被降级(比如 /var/lib/mysql 被改成 777)。

  • if does not exist:挂载点消失、rm -rf 误删目录时立即响应
  • if permission != 755:防止敏感目录被开放写入
  • if uid != 0 or gid != 0:检测属主异常(如被普通用户 chown)

注意:monit 不递归检查子目录或文件,只看目标目录自身的属性。想监控整个 /var/www 下任意文件变动?得用 inotifywait 配合外部脚本,monit 只能做兜底。

告警不触发?先查这三件事

配置写完 monit reload 后没反应,90% 是以下问题:

  • monit -t 报错但被忽略:语法错误(比如漏了 with path)、路径不存在、权限不足
  • 日志静默:确认 set logfile 指向可写位置,且 monit 进程有写入权限(常见于 /var/log/monit.log 所有者是 root:root,而 monit 以非 root 用户跑)
  • 告警被抑制:全局配置里写了 set alert ... with reminder on 5 cycles,但你只等了 1 次检测——实际要等满 5 个周期才重复发

真正难调试的是「变更未被捕获」:比如你 echo "test" >> file,但 if changed timestamp 没触发——因为 echo 不改 mtime,只改 atime/ctime;此时得换 if changed size 或直接上 inotify。

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3750

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3233

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2333

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5610

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5262

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3133

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2625

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2839

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习