使用zabbix监控rsync的同步是否执行成功
使用Zabbix监控rsync的同步是否执行成功
我们有个业务需要使用 rsync 同步软件到国内,业务较为关键,网络不稳定可能会同步失败,需要对rsync同步是否成功进行监控,方便提前人工介入处理
1.编写监控rsync的脚本
# cat /usr/local/zabbix_agents_3.2.0/scripts/rsync_download_toalisz.sh
#!/bin/bash # 同步download.chinasoft.com到深圳的download02 source /etc/profile pronum=`ps -ef|grep aliszdownload|grep -v grep|wc -l` if [[ $pronum -gt 0 ]];then ps -ef|grep aliszdownload|grep -v grep|awk '{print $2}'|xargs kill -9 sleep 5 fi rsync -zavP --password-file="/data/www/.rsync/rsyncd.aliszdownload" --exclude=cbs_down --delete /data/www/vhosts/download.chinasoft.com/httpdocs/ apache@1.1.1.1::apache/data/www/vhosts/download.chinasoft.com/httpdocs/ > /data/www/logs/rsync_log/rsync.log # Check if rsync was executed with success if [ $? = 0 ];then # If true, send a random number to log file and status=ok message echo $[ 1 + $[ RANDOM % 1000 ]] >> /data/www/logs/rsync_log/rsync.log echo "rsync_download_status=ok" >> /data/www/logs/rsync_log/rsync.log # If false, send a random number to log file and status=ERROR message else echo $[ 1 + $[ RANDOM % 1000 ]] >> /data/www/logs/rsync_log/rsync.log echo "rsync_download_status=error" >> /data/www/logs/rsync_log/rsync.log fi
日志格式
# cat /data/www/logs/rsync_log/rsync.log
sending incremental file list sent 224,471 bytes received 486 bytes 89,982.80 bytes/sec total size is 273,587,291,994 speedup is 1,216,175.94 705 rsync_download_status=ok
2.将该脚本加入crontab执行
# 供监控rsync状态使用
*/8 * * * * /bin/bash /usr/local/zabbix_agents_3.2.0/scripts/rsync_download_toalisz.sh rsync_ws_to_szdownload > /dev/null 2>&1
3.在Zabbix上创建两个Items
a. rsync.log的check_sum (这就是为什么脚本必须有随机数的原因,这样你确定自上次检查后日志文件已被修改
Zabbix的监控项
vfs.file.cksum[/data/www/logs/rsync_log/rsync.log]
b.检查日志文件以获取确定消息
Zabbix的监控项
vfs.file.regmatch[/data/www/logs/rsync_log/rsync.log,rsync_download_status=ok]
4.创建触发器
{Template rsync status:vfs.file.cksum[/data/www/logs/rsync_log/rsync.log].change()}=0 or {Template rsync status:vfs.file.regmatch[/data/www/logs/rsync_log/rsync.log,rsync_download_status=ok].last()}=0
如果日志文件未更改或没有显示“rsync_download_status=ok”消息,则表示它们是以 error (失败)执行的,或者没有运行(可能是cron问题)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2017-02-23 利用jstack命令定位占用cpu高的java线程及具体错误代码信息