设为首页 收藏本站
查看: 1927|回复: 0

[经验分享] zabbix--远程执行命令

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2019-9-26 22:08:06 | 显示全部楼层 |阅读模式
zabbix 远程执行命令 重启应用 服务器
使用远程执行命令可以在某些时候帮我做一些事情,达到轻量级的自动化,比如当 nginx、mysql、php、redis、tomcat、等等应用挂掉时帮我们自动重启并告警。再比如当磁盘空间满了,自动帮我们清理垃圾日志文件等。看下官网的描述:
使用远程命令,您可以定义在某些情况下,监视的主机上会自动执行某个预定义的命令。
在功能最明显的用途中,您可以尝试:
  • 如果没有响应,则自动重新启动某些应用程序(Web服务器,中间件,CRM)
  • 如果不响应请求,请使用IPMI“reboot”命令重新启动一些远程服务器
  • 如果磁盘空间不足,可自动释放磁盘空间(删除较旧的文件,清理/tmp)
  • 根据CPU负载,将VM从一个物理机移植到另一个物理机
  • 在CPU(磁盘,内存,任何资源)不足的情况下,将新节点添加到云环境中

远程命令限制为255个字符。可以通过将多个命令放置在新行上来执行多个命令。远程命令可能包含宏。
  • 如果没有响应,则自动重新启动某些应用程序(Web服务器,中间件,CRM)
  • 如果不响应请求,请使用IPMI“reboot”命令重新启动一些远程服务器
  • 如果磁盘空间不足,可自动释放磁盘空间(删除较旧的文件,清理/ tmp)
  • 根据CPU负载,将VM从一个物理盒移植到另一个物理盒
  • 在CPU(磁盘,内存,任何资源)不足的情况下,将新节点添加到云环境中

实战
描述:该实战是完全创建一个新的模板,用于专们管理日常的一些服务等,在新建的模板上面创建对应服务的监控项、触发器、动作等。
具体步骤:
zabbix-agent端
1)根据官网提示 首先打开zabbix-agent上的 EnableRemoteCommands 参数
# vim /etc/zabbix/zabbix_agentd.confEnableRemoteCommands=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 passwordzabbix  ALL=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)"        ;;esacEOFchmod +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 \$1EOFservice zabbix-agent restartchmod 640 /etc/sudoersecho "zabbix  ALL=NOPASSWD: /etc/init.d/nginx restart" >> /etc/sudoersecho "zabbix  ALL=NOPASSWD: /etc/init.d/mysqld restart" >> /etc/sudoersecho "zabbix  ALL=NOPASSWD: /etc/init.d/php-fpm restart" >> /etc/sudoers
    zabbix-agent_config.sh



  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-977383-1-1.html 上篇帖子: zabbix微信告警配置流程 下篇帖子: 关于zabbix监控另外两台机器的连接情况求助。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表