全部博文(150)
分类: 系统运维
2018-11-05 13:41:27
目的
降低运维工作中的重复性、简单性的手工操作,降低人为的失误,提升运维的自动化水平。 日常运维工作中经常遇到磁盘空间已满的问题,每次都手工操作的话比较费时和耗力,且没有太多的技术含量。因此决定将该工作通过zabbix系统的触发器和remote command功能相结合进行处理,实现自动化的工作流程。
方法
通过zabbix提供的tigger和remote command功能组合来执行,首先指定一个阈值,作为触发器触发的依据,然后zabbix server在监测到磁盘可用空间低于80%时触发该remote command动作的执行,remotecommand调用自定义的清理脚本执行清理磁盘空间的工作。
结果
通过在某服务器上进行测试和验证,该服务器上磁盘达可用空间低于80%时,触发remote command,自动执行了清理脚本,清理完成后可用磁盘空间大于80%。
结论
利用remote command功能,可以处理很多类似场景,例如服务意外宕机,如果超过一定时间无人处理,则自动调用remote command进行重启。这样就能将很多需要手工处理的工作转换为自动化处理。
EnableRemoteCommands=1
修改完配置需要重启agent
脚本存放位置 /etc/zabbix/scripts
cat rm_logs.sh #!/bin/sh find /xxx/tomcat-*/logs/ -type f -name "*.log*" -mtime +30 |xargs rm -f find /xxx/tomcat-*/logs/ -type f -name "*.out*" -mtime +30 |xargs rm -f find /xxx/tomcat-*/logs/ -type f -name "*.log" -mtime +3 -size +10000M |xargs rm -f
创建一个action
Action页面
Name:rm logs # 名称 Type of calculation:A and B and C #描述下面条件的关系 Conditions Label Name Action A Maintenance status not in maintenance # 非维护状态 B Trigger name like Free disk space is less than 20% on volume #被监测的触发器名字 C Host = web02 # 主机筛选条件 Enabled
Opertions页面
Default operation step duration:1h #默认操作步骤持续时间 Default subject:Problem: {TRIGGER.NAME} auto rm logs command will execute in 2 minutes #默认主题,需要自定义 Default message: #可以自定义 Problem started at {EVENT.TIME} on {EVENT.DATE} Problem name: {TRIGGER.NAME} Host: {HOST.NAME} Severity: {TRIGGER.SEVERITY} Original problem ID: {EVENT.ID} {TRIGGER.URL} Pause operations while in maintenance #维护期间是否暂停执行 Operations: #自定义两步操作 Steps Details Start in Duration Action 1 Send message to users: Li Hui (Hui Li) via Goluk opsbot Immediately 120 #第一步,立即发送邮件通知某磁盘低于80%可用空间,即将执行自动清理脚本 2 Run remote commands on current host 00:02:00 120 #第二步,执行清理脚本
第一步Operation details
Steps : 1 - 1 Step duration : 120 Operation type : Send message Send to User groups : ops Send to Users : ops Send only to : email Default message : default
第二步Operation details
Steps :2 - 2 Step duration : 120 Operation type : Remote command Target list : Current host Type : Custom script Execute on : Zabbix agent Commands : /bin/sh /etc/zabbix/scripts/rm_logs.sh
忽略的细节
上述示例中的trigger name
一般的linux主机都会加上Temmplate OS Linux模板,该模板会有 "Free disk space is less than 20% on volume {#FSNAME}" 这样的trigger
上述的zabbix agent 以及 server 默认是已经配置完成,正常运行状态
可以通过手工增加某个磁盘上的日志达到80%阈值进行测试,测试结果可以看在problem里面会有:“ x年x月x日x时x分 remote command executed”的字样。