zabbix执行远程命令(41)

  • A+
所属分类:zabbix

概述

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

瞧瞧zabbix远程执行命令可以做些什么吧:

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

创建一个报警,记得使用邮件报警吗?呵呵,实际上,我们把发送邮件的操作改成执行远程命令就行了

备注:zabbix代理不支持远程命令

远程命令最大长度为255字符,同时支持多个远程命令,如需要执行多条命令,只需要另起一行写命令即可,还有,远程命令可以使用宏变量。

接下来我将一步一步告诉大家如何设置远程命令

配置

首先我们需要在zabbix客户配置文件开启对远程命令的支持,编辑zabbix_agentd.conf,修改

重启客户端

备注:Aive zabbix不支持远程命令

然后配置action,Configuration->Actions,选择Operation选项卡,operation type改成Remote Command,选择远程命令类似 (IPMI, Custom script, SSH, Telnet, Global script),输入远命令

配置Action

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

示例:

上面例子用来在出现状况的情况下重启Apache,务必全包zabbix agent能够执行这个命令.

备注:

1.sudo不用多说了,zabbix用户没有运行某些命令的权限,必须加上.

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

访问权限

确保你的zabbix用户有执行权限,如果某些命令需要root权限,那么请使用sudo

编辑sudoer文件,zabbix用户便可以执行Apache restart命令了

 

备注:在某些情况下,zabbix需要sudo才能执行命令,请先在/etc/sudoer开启requiretty.具体的方法,请百度或者google.

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

如果目标系统支持多种接口:zabbix agent、IPMI、远程命令(默认),请看如下一些实例
示例1

通过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
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:10   其中:访客  8   博主  0   引用   2

    • 苏幕遮 1

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

      • 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 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 1

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

                • 管理员 6

                  @qac 谢谢提供

                  • lx 1

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

                • fjinc 9

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

                    • 运维生存时间 7

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

                  • 来自外部的引用: 2

                    • 跟着ttlsa一起学zabbix监控呗 | 运维笔记
                    • 资料分享:跟着ttlsa一起学zabbix监控 – memleak.in | memleak.in