zabbix执行远程命令(41)

凉白开 zabbix1053,14117字数 1717阅读5分43秒阅读模式

概述

监控,有的人只把他当做报警使用,出现问题之后打开跑回家打开电脑,巴拉巴拉的处理掉,大多数时候都是一些小问题,为何不让zabbix帮你把这些事情处理掉呢?和朋友具体,收到xx硬盘空间慢了、xx服务器高负载等问题,你要回家处理?多扫兴

瞧瞧zabbix远程执行命令可以做些什么吧:文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

  • 重启应用(Apache、nginx、MySQL等等)
  • 使用IPMI接口重启服务器
  • 自动释放磁盘空间(删除老文件,清除/tmp目录等等)
  • CPU过载时讲一个虚拟机迁移到另外一台物理服务器
  • 云环境下,一台服务器CPU\硬盘\内存\其他硬件资源不足的情况下,可以自动添加过去

创建一个报警,记得使用邮件报警吗?呵呵,实际上,我们把发送邮件的操作改成执行远程命令就行了文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

备注:zabbix代理不支持远程命令文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

远程命令最大长度为255字符,同时支持多个远程命令,如需要执行多条命令,只需要另起一行写命令即可,还有,远程命令可以使用宏变量。文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

接下来我将一步一步告诉大家如何设置远程命令文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

配置

首先我们需要在zabbix客户配置文件开启对远程命令的支持,编辑zabbix_agentd.conf,修改文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

EnableRemoteCommands = 1

重启客户端文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

备注:Aive zabbix不支持远程命令文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

然后配置action,Configuration->Actions,选择Operation选项卡,operation type改成Remote Command,选择远程命令类似 (IPMI, Custom script, SSH, Telnet, Global script),输入远命令文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

配置Action文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

  • 在Operations选显卡中选择Remote command
  • 选择远程命令类型(IPMI, Custom script, SSH, Telnet, Global script)
  • 写上远程命令

示例:文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

sudo /etc/init.d/apache restart

上面例子用来在出现状况的情况下重启Apache,务必全包zabbix agent能够执行这个命令.文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

备注:文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

1.sudo不用多说了,zabbix用户没有运行某些命令的权限,必须加上.文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

2.远程命令,自然是在远程的主机后台运行。
Conditions选项卡定义了什么条件下,这个远程命令会被执行,其实这个和前面说的action真没什么区别,大家都能看懂。下图的意思是,在非维护时间Apache应用出现状况,并且严重性级别为Disaster。满足条件之后,就开始执行命令了。文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

访问权限

确保你的zabbix用户有执行权限,如果某些命令需要root权限,那么请使用sudo文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

# visudo

编辑sudoer文件,zabbix用户便可以执行Apache restart命令了文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

# allows 'zabbix' user to run all commands without password.
 zabbix ALL=NOPASSWD: ALL
# allows 'zabbix' user to restart apache without password.
 zabbix ALL=NOPASSWD: /etc/init.d/apache restart

 文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

备注:在某些情况下,zabbix需要sudo才能执行命令,请先在/etc/sudoer开启requiretty.具体的方法,请百度或者google.文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

使用多种接口执行远程命令

如果目标系统支持多种接口:zabbix agent、IPMI、远程命令(默认),请看如下一些实例
示例1文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-remote-command/

通过zabbix检测到的一些问题,然后自动重启windows

参数 描述
Operation type Remote command
Type Custom script
Command c:\windows\system32\shutdown.exe -r -

示例2

使用IPMI重启服务器

参数 描述
Operation type Remote command
Type IPMI
Command reset on

示例三

使用IPMI关机

参数 描述
Operation type Remote command
Type IPMI
Command power off

 

喜欢zabbix的请继续关注运维生存时间zabbix教程...当然还有其他文章.

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
凉白开
  • 本文由 发表于 10/09/2014 23:49:10
  • 转载请务必保留本文链接:https://www.ttlsa.com/zabbix/zabbix-remote-command/
评论  10  访客  8
    • 苏幕遮
      苏幕遮 1

      我现在做了一个“某文件夹空间小于70%删除日志”的远程命令,把visudo里的Default requiretty 也注释掉了,然并卵。后来我看《zabbix监控系统与深度实践》里有说“对于active的zabbix agent,远程命令是无效的,”请问如何看出我这台机器是不是active模式的呢?

      • lx
        lx 1

        群主,我apt-get安装zabbix3.0.x。
        现在遇上的情况就是好像active不执行似的。具体步骤是:
        1.创建Items
        2.创建triggers
        3.echo ‘EnableRemoteCommands=1’ >> /usr/local/zabbix/zabbix_agentd.conf
        4.使zabbix用户具有登录系统权限,在visudo中添加 zabbix ALL=(ALL) NOPASSWD: ALL
        5.创建active

        • qac
          qac 1

          完全按照你的教程来的,centos 6.4,源码编译安装zabbix3.0.1,在web页面action log中已经看到执行了远程脚本,但是实际上是执行失败了的。visudo添加了 zabbix ALL=NOPASSWD: /etc/init.d/httpd restart,手动su – zabbix后,命令是可以执行成功的,但是远程调用却一直失败。有没有什么办法可以看到详细的日志,/tmp/zabbix_agentd.log 中根本就没有远程调用相关的信息。

            • qac
              qac 1

              @ qac 问题已经解决了,注释掉 Default requiretty 即可。

                • 管理员
                  管理员 5

                  @ qac 谢谢提供

                  • lx
                    lx 1

                    @ qac hi,哥们你好!我现在遇上了问题就是触发器触发了,好像不执行远程命令!因为我的邮件是触发了报警,但是没有触发执行远程主机上面的命令!还麻烦 请指教

                • fjinc
                  fjinc 9

                  你好
                  我在zabbix配置客户端执行远程命令,(windows客户端)bat脚本中普通的命令删除文件或者net start 是可以执行的,但是我写的监控进程是否存在的脚本没有执行结果,单独测试运行这个脚本没有问题的,求大神帮助~~

                    • 运维生存时间
                      运维生存时间 7

                      @ fjinc 请核实zabbix是否有权限执行脚本中的命令,请尝试把报错输出到文件中排错

                  评论已关闭!