linux中实时监控目录中生成的文件,并钉钉告警
作者:互联网
inotify是一个API
需要通过开发应用程序进行调用,对于大多数用户来讲这有着许多不便,inotify-tools的出现弥补了这一不足。
inotify-tools是一套组件,它包括一个C库和几个命令行工具,这些命令行工具可用于通过命令行或脚本对某文件系统的事件进行监控。它由Rohan McGovern开发,其项目网址为http://inotify-tools.sourceforge.net。
inotify-tools提供的两个命令行工具:
inotifywait:通过inotify API等待被监控文件上的相应事件并返回监控结果,默认情况下,正常的结果返回至标准输出,诊断类的信息则返回至标准错误输出。它可以在监控到对应监控对象上指定的事件后退出,也可以进行持续性的监控。
inotifywatch:通过inotify API收集被监控文件或目录的相关事件并输出统计信息。
inotifywait命令使用简介:
inotifywait尤其适用于在脚本中等待某事件的发生,并可基于特定的事件执行相应操作。如将其用于脚本中监控某指定目录中的文件上的修改、新建、删除、属性信息的改变,而后使用rsync命令将某事件对应的文件同步至其它主机上。其常用选项如下:
-m, --monitor:inotifywait的默认动作是在监控至指定文件的特定事件发生一次后就退出了,而使用此选项则可实现持续性的监控;
-r, --recursive:递归监控指定目录下的所有文件,包括新建的文件或子目录;如果要监控的目录中文件数量巨大,则通常需要修改/proc/sys/fs/inotify/max_users_watchs内核参数,因为其默认值为8192。
-e , --event :指定要监控的特定事件,默认是监控所有的事件;此处包括access, modify, attrib, close_write, close_nowirte, close, open, moved_to, moved_from, move, create, delete, delete_selt等;
--timefmt :当在--format选项中使用%T时,--timefrt选项则可以用来指定自定义的符合strftime规范的时间格式,此时间格式可用的格式符可以通过strftime的手册页获取;--timefrt后常用的参数是'%d/%m/%y %H:%M';
--format :自定义inotifywait的输出格式,如--format '%T %w %f';常用的格式符如下:
%w:显示被监控文件的文件名;
%f:如果发生某事件的对象是目录,则显示被监控目录的名字;默认显示为空串;
%T:使用--timefmt选项中自定义的时间格式;
案例:监控mnt目录下新生成log结尾的文件时发送告警
vim monitor.sh
#!/bin/bash
#钉钉机器人地址
webhook='https://oapi.dingtalk.com/robot/send?access_token=xxxxe7dcb54d5a9e4a2' #地址自行查阅钉钉机器人的文档。
#文件尾缀
suffix=\.log
/usr/bin/inotifywait -mr --format '%w%f' -e create /mnt | while read file;do
echo $file|grep ${suffix}$
if [ $? -eq 0 ];then
date=`date +"%F %T"`
curl $webhook -H 'Content-Type: application/json' -d "
{
'msgtype': 'text',
'text': {
'content': '文件生成时间:${date}\n文件生成位置:${file}\n请注意\n'
},
'at': {
'isAtAll': false
}
}"
fi
done
然后后台运行即可脚本即可
nohup monitor.sh > /dev/null &
标签:文件,inotifywait,inotify,--,实时,事件,监控,linux,告警 来源: https://www.cnblogs.com/zops/p/16035625.html