农村四月闲人少,勤学苦攻把名扬。这篇文章主要讲述zabbix--远程执行命令相关的知识,希望能为你提供帮助。
zabbix 远程执行命令 重启应用 服务器使用远程执行命令可以在某些时候帮我做一些事情,达到轻量级的自动化,比如当 nginx、mysql、php、redis、tomcat、等等应用挂掉时帮我们自动重启并告警。再比如当磁盘空间满了,自动帮我们清理垃圾日志文件等。看下官网的描述:
使用远程命令,您可以定义在某些情况下,监视的主机上会自动执行某个预定义的命令。
在功能最明显的用途中,您可以尝试:
- 如果没有响应,则自动重新启动某些应用程序(Web服务器,中间件,CRM)
- 如果不响应请求,请使用IPMI“reboot”命令重新启动一些远程服务器
- 如果磁盘空间不足,可自动释放磁盘空间(删除较旧的文件,清理/tmp)
- 根据CPU负载,将VM从一个物理机移植到另一个物理机
- 在CPU(磁盘,内存,任何资源)不足的情况下,将新节点添加到云环境中
- 如果没有响应,则自动重新启动某些应用程序(Web服务器,中间件,CRM)
- 如果不响应请求,请使用IPMI“reboot”命令重新启动一些远程服务器
- 如果磁盘空间不足,可自动释放磁盘空间(删除较旧的文件,清理/ tmp)
- 根据CPU负载,将VM从一个物理盒移植到另一个物理盒
- 在CPU(磁盘,内存,任何资源)不足的情况下,将新节点添加到云环境中
实战描述:该实战是完全创建一个新的模板,用于专们管理日常的一些服务等,在新建的模板上面创建对应服务的监控项、触发器、动作等。
具体步骤:
zabbix-agent端
1)根据官网提示 首先打开zabbix-agent上的 EnableRemoteCommands 参数
# vim /etc/zabbix/zabbix_agentd.conf EnableRemoteCommands=1
2)创建一个脚本存放路径
# mkdir /etc/zabbix/script
3)创建一个新的脚本
# vim /etc/zabbix/script/service_status.sh #!/bin/bash #Desc:zabbix 远程执行命令、重启应用 nginx、mysql、php、等 #Date:2019-5-8 #by:Lee-YJcase $1 in Nginx) result=`pidof nginx|wc -l` echo $result ; ; Php) result=`pidof php-fpm|wc -l` echo $result ; ; Mysql) result=`pidof mysqld|wc -l` echo $result ; ; *) echo "Usage:$0(Nginx|Php|Mysql)" ; ; esac
文章图片
文章图片
"pidof nginx|wc -l" 这条命令用于判断nginx进程是否存在,如果存在则返回1,不存在返回0
脚本补充说明4)赋予脚本执行权限
# chmod +x /etc/zabbix/script/service_status.sh
5)创建一个新的专门用于服务监控的子配置文件
# cd /etc/zabbix/zabbix_agentd.d # vim userparameter_service.conf # 获取服务运行状态 UserParameter=service.status[*],/etc/zabbix/script/service_status.sh $1
6)重启 zabbix-agent
# service zabbix-agent restart
7)在 zabbix-server 端用命令进行测试
# zabbix_get -s 47.104.xx.xx -k "service.status[Nginx]" 1 # zabbix_get -s 47.104.xx.xx -k "service.status[Mysql]" 1 # zabbix_get -s 47.104.xx.xx -k "service.status[Php]" 1
文章图片
文章图片
当返回1时表示客户端服务正常,当返回0时表示客户端服务不正常(根据上面脚本内容所得)
测试结果补充说明zabbix-server Web端
1)创建一个模板 Check Service (自定义名字)
文章图片
创建完成后里面什么东西都没有(应用集、监控项、触发器、图形等)
2)创建一个应用集 service (自定义名字)
文章图片
文章图片
3)创建监控项(键值说明,这里我们得根据配置文件里面定义的来进行配置;service.status[Nginx])
文章图片
文章图片
文章图片
4)创建触发器(最新的t值说明:根据前面的命令结果判断,pidof vsftpd|wc -l ,如果nginx处于运行状态该值为1,反正为0则为挂了,所以这里触发器判断是否为0)
文章图片
文章图片
文章图片
文章图片
5)给监控的主机链接上 Check Service 模板
文章图片
文章图片
文章图片
6)测试; 在配监控的主机上停掉nginx,后观察仪表盘
文章图片
从上面可以看到当nginx挂掉后会第一时间发送邮件告知相关人员;但是我们更多的是希望能够帮我们自动重启nginx;那么接下来配置自动重启
7)配置动作(远程执行命令、恢复操作等)
进入:配置 -> 动作 -> 创建动作
文章图片
文章图片
配置操作:配置操作时执行重启命令,(注意:因为zabbix 进程是使用zabbix用户来维护的,所以它没有权限去执行重启nginx命令,这里需要先在 zabbix-agent 上授权)
# chmod 640 /etc/sudoers # vim /etc/sudoers//编辑sudo文件,添加如下两行 # Allow zabbix user to restart nginx without password zabbixALL=NOPASSWD: /etc/init.d/nginx restart
文章图片
添加恢复操作:
文章图片
文章图片
文章图片
文章图片
到这里就配置完成了,当我在 zabbix-agent 上面停掉 nginx,便会自动帮我们重启并发送邮件
文章图片
至此,zabbix远程执行命令就配置完成了。
附zabbix-agent端上的配置脚本(只针对当前配置里面的nginx、mysql、php)
文章图片
文章图片
#!/bin/bash #Desc:用于配置zabbix远程执行命令,zabbix-agent端上面的操作(包括nginx、mysql、php) #Date:2019-5-8 #by:Lee-YJmkdir /etc/zabbix/script -pcat > > /etc/zabbix/script/service_status.sh< < EOF #!/bin/bash #Desc:zabbix 远程执行命令、重启应用 nginx、mysql、php、等 #Date:2019-5-8 #by:Lee-YJcase \\$1 in Nginx) result=\\`pidof nginx|wc -l\\` echo \\$result ; ; Php) result=\\`pidof php-fpm|wc -l\\` echo \\$result ; ; Mysql) result=\\`pidof mysqld|wc -l\\` echo \\$result ; ; *) echo "Usage:\\$0(Nginx|Php|Mysql)" ; ; esac EOFchmod +x /etc/zabbix/script/service_status.shsed -i s/# EnableRemoteCommands=0/EnableRemoteCommands=1/ /etc/zabbix/zabbix_agentd.confcat > /etc/zabbix/zabbix_agentd.d/userparameter_service.conf< < EOF # 获取服务运行状态 UserParameter=service.status[*],/etc/zabbix/script/service_status.sh \\$1 EOFservice zabbix-agent restartchmod 640 /etc/sudoers echo "zabbixALL=NOPASSWD: /etc/init.d/nginx restart" > > /etc/sudoers echo "zabbixALL=NOPASSWD: /etc/init.d/mysqld restart" > > /etc/sudoers echo "zabbixALL=NOPASSWD: /etc/init.d/php-fpm restart" > > /etc/sudoers
zabbix-agent_config.sh【zabbix--远程执行命令】
人生是条无名的河,是浅是深都要过; 人生是杯无色的茶,是苦是甜都要喝; 人生是首无畏的歌,是高是低都要唱。
推荐阅读
- zabbix--分布式监控proxy
- ROS1/2机器人多机网络通信配置-更新-2022
- zabbix--微信告警
- 机器人课程反馈中如何面对批评和负面消息
- zabbix--邮件告警报错“Support for SMTP authentication was not compiled in”
- Vpay钱包APP开发程序定制
- Appium移动自动化测试-----AppiumDesktop录制脚本生成极简脚本
- Mac 下 Android Studio 连 夜神模拟器 调试
- 安卓之Android.mk多文件以及动态库编译