(29)zabbix执行远程命令
概述
监控,有的人只把他当做报警使用,出现问题之后打开跑回家打开电脑,巴拉巴拉的处理掉,大多数时候都是一些小问题,为何不让zabbix帮你把这些事情处理掉呢?和朋友具体,收到xx硬盘空间慢了、xx服务器高负载等问题,你要回家处理?多扫兴
瞧瞧zabbix远程执行命令可以做些什么吧:
- 重启应用(Apache、nginx、MySQL等等)
- 使用IPMI接口重启服务器
- 自动释放磁盘空间(删除老文件,清除/tmp目录等等)
- CPU过载时讲一个虚拟机迁移到另外一台物理服务器
- 云环境下,一台服务器CPU\硬盘\内存\其他硬件资源不足的情况下,可以自动添加过去
创建一个报警,记得使用邮件报警吗?呵呵,实际上,我们把发送邮件的操作改成执行远程命令就行了
备注:zabbix代理不支持远程命令
远程命令最大长度为255字符,同时支持多个远程命令,如需要执行多条命令,只需要另起一行写命令即可,还有,远程命令可以使用宏变量。
接下来我将一步一步告诉大家如何设置远程命令
配置
首先我们需要在zabbix客户配置文件开启对远程命令的支持,编辑zabbix_agentd.conf,修改
|
1
|
EnableRemoteCommands = 1
|
重启客户端
备注: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)
- 写上远程命令
示例:
|
1
|
sudo /etc/init.d/apache restart
|
上面例子用来在出现状况的情况下重启Apache,务必全包zabbix agent能够执行这个命令.
备注:
1.sudo不用多说了,zabbix用户没有运行某些命令的权限,必须加上.
2.远程命令,自然是在远程的主机后台运行。
Conditions选项卡定义了什么条件下,这个远程命令会被执行,其实这个和前面说的action真没什么区别,大家都能看懂。下图的意思是,在非维护时间Apache应用出现状况,并且严重性级别为Disaster。满足条件之后,就开始执行命令了。
访问权限
确保你的zabbix用户有执行权限,如果某些命令需要root权限,那么请使用sudo
|
1
|
# visudo
|
编辑sudoer文件,zabbix用户便可以执行Apache restart命令了
|
1
2
3
4
|
# 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
|
备注:在某些情况下,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 |
(29)zabbix执行远程命令的更多相关文章
- 在地铁上看了zabbix 的书发现 "报警执行远程命令"
在地铁上看了zabbix 的书发现 "报警执行远程命令" 远程命令整个过程: items -> triggers -> action -> remote com ...
- Zabbix报警执行远程命令
日常Zabbix报警案例中,大多都是报警发送邮件,场景里很少有需要报警后执行一个命令(启动服务.清空磁盘空间.关停服务器);而今天就给大家讲讲最近需要做的事:报警后执行远程命令 刚好zabbix动作中 ...
- Python中使用os模块执行远程命令
1. 使用os模块远程执行命令 服务端代码 1 import socket 2 import os 3 4 sh_server = socket.socket() #创建一个socket对象 5 sh ...
- Ubuntu 14.10 下SSH执行远程命令
有些时候需要在远程机器上执行命令,如果每次都等进去挺麻烦的,所以用脚本执行会方便很多.下面介绍一下在shell脚本中执行远程命令. 1,首先写好要运行的脚本 run-command.sh, 加上执行权 ...
- 如何使用 PsExec 执行远程命令
前言 这紧紧只是一篇纯技术分享.我们的程序在运行时需要连接多台目标机器,并拷贝目标机器上特定文件夹中的文件.为了方便访问,要在每台目标机器上建立一个特定用户,所以 PsExec 成了实现此功能的一个方 ...
- psexec局域网执行远程命令
执行远程命令的工具psexec.exe 下载 一.首先,被控制机器必须开启ipc$,以及admin$,否则无法执行 开启ipc$ net share IPC$ 开启admin$ net share A ...
- Python网络编程03 /缓存区、基于TCP的socket循环通信、执行远程命令、socketserver通信
Python网络编程03 /缓存区.基于TCP的socket循环通信.执行远程命令.socketserver通信 目录 Python网络编程03 /缓存区.基于TCP的socket循环通信.执行远程命 ...
- saltstack执行远程命令
目录 Remote Execution salt state salt state 系统 salt state 系统流程 Runner salt runner Orchestrate Runner S ...
- linux shell 执行远程命令
我在本地的shell脚本中,想要直接执行远程服务器的一个shell脚本: ssh -l root 192.168.1.1 "/data/t.sh" 记得提前给远程服务器的 /dat ...
随机推荐
- 利用Web服务生成产品编号 执行添加操作
为什么我想要执行添加操作,却添加不成功,系统提示我comm.ExecuteNonQuery有错误 已找到原因 在 string strsql = "insert into tb_goods( ...
- C 语言实例 - 字符串复制
C 语言实例 - 字符串复制 C 语言实例 C 语言实例 将一个变量的字符串复制到另外一个变量中. 实例 - 使用 strcpy() #include <stdio.h> #include ...
- Spring+Quartz配置定时任务
一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是出了名的任务调度框架,它可以与J2SE和J2EE应用程序相结合 ...
- Xenu使用随记
经试验发现,如果配置了host进行网站检测时,Xenu和浏览器一样,都需要配置了host之后,重新打开Xenu程序(浏览器),host的配置才能生效.
- Springboot下事务管理的简单使用
关于事务管理的概念这里就不多介绍了,在我的博客“JDBC事务之理论篇”中也有介绍. 关于Spring的事务管理,主要是通过事务管理器来进行的.这里看个Spring事务管理的接口图:(来自博客https ...
- 关于在ARM MDK 中使用STM32F4xx 硬件浮点单元的话题
http://mp.weixin.qq.com/s/CDyZ8v2kLiyuIBHf7iqEPA
- centos7安装mysql5.7 使用yum
https://blog.csdn.net/z13615480737/article/details/78906598 使用yum,比较简单,不用考虑版本依赖问题
- vs 2017注册码 激活码
Visual Studio 2017(VS2017) 企业版 Enterprise 注册码:NJVYC-BMHX2-G77MM-4XJMR-6Q8QFVisual Studio 2017(VS2017 ...
- C语言中的fprintf函数详解
fprintf 功能 传送格式化输出到一个文件中 用法 #include stdio.h int fprintf( FILE *stream, const char *format,...); f ...
- ls参数
-a 全部文件 -A 与a差不多,但是不包括.和..开头的两个目录 -d 仅列出目录 -f 直接列出结果,不进行排序 -h 列出文件大小 -i 列出inode的位置,而非列出文件属性 -l 列出长数据 ...