zoukankan      html  css  js  c++  java
  • [原创] zabbix学习之旅七:如何远程操作被监控机器

      虽然我们已经创建了一个报警系统,但在实际场景中,运维人员从得到报警到实际解决问题有一定的时差,若业务系统没有做高可用,那业务不得不中断,对于某些要求严格的企业级环境,这是不可容忍的,那有没有方法能让zabbix server自动尝试解决问题呢?答案是有的,zabbix server允许通过远程命令的方式对被监控机器进行操作。

      本文将以centOS6.5为例,演示如何进行远程命令操作。场景为被监控机器是一台运行Nginx的机器,zabbix server监控其80端口,若80端口无法访问了,我们视为Nginx挂了,要求zabbix第一时间启动Nginx。

      首先我们要求agent的配置文件必须要支持远程命令。

    vi /usr/local/zabbix/etc/zabbix_agentd.conf
    #找到EnableRemoteCommands这一行,修改如下:
    ### Option: EnableRemoteCommands
    #       Whether remote commands from Zabbix server are allowed.
    #       0 - not allowed
    #       1 - allowed
    #
    # Mandatory: no
    # Default:
    # EnableRemoteCommands=0
       EnableRemoteCommands=1

      其次,因为agent是运行于zabbix账号,若要启动Nginx,必须要授权访问,可通过visudo的相应授权来解决。

    visudo
    
    #允许zabbix账号可以无密码访问
    ## Allow root to run any commands anywhere 
    root    ALL=(ALL)       ALL
    zabbix  ALL=(ALL)       NOPASSWD:ALL
    
    #允许不需要tty也能操作,因此注释下行
    #Defaults    requiretty

      这样客户端的设置就完成了,再看看zabbix server端如何设置。

      我们新建一个Action,当发现被监控机80端口挂了后,触发远程命令动作。

      设置触发条件。

      设置命令动作。

      设置完成后,可以尝试将被监控机器的nginx给停了。

    /usr/local/nginx/sbin/nginx -s quit

      等上几分钟后,zabbix server将监控到nginx挂了,并尝试重启,注意的是zabbix server不关心远程命令的执行结果。

      在Events事件中,我们可以看到该远程命令已经被执行。

      在被监控机器上我们再看看80端口是否已经起来。

    netstat -tlnp|grep 80
    tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      4071/nginx

      结果说明Nginx确实又起来了。

  • 相关阅读:
    pip 安装
    「csp模拟」模拟测试15
    某些博客的优化
    晚间测试6
    「csp模拟」模拟测试15
    「csp模拟」模拟测试14
    线段树维护单调栈
    晚间测试 2
    晚间测试 1
    晚间测试4
  • 原文地址:https://www.cnblogs.com/hutao722/p/5178238.html
Copyright © 2011-2022 走看看