zabbix 远程执行命令 重启应用 服务器

使用远程执行命令可以在某些时候帮我做一些事情,达到轻量级的自动化,比如当 nginx、mysql、php、redis、tomcat、等等应用挂掉时帮我们自动重启并告警。再比如当磁盘空间满了,自动帮我们清理垃圾日志文件等。看下官网的描述:

使用远程命令,您可以定义在某些情况下,监视的主机上会自动执行某个预定义的命令。

在功能最明显的用途中,您可以尝试:

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

远程命令限制为255个字符。可以通过将多个命令放置在新行上来执行多个命令。远程命令可能包含宏。

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

参考官档:https://www.zabbix.com/documentation/4.0/zh/manual/config/notifications/action/operation/remote_command

实战

描述:该实战是完全创建一个新的模板,用于专们管理日常的一些服务等,在新建的模板上面创建对应服务的监控项、触发器、动作等。

具体步骤:

zabbix-agent端

1)根据官网提示 首先打开zabbix-agent上的 EnableRemoteCommands 参数

# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=

2)创建一个脚本存放路径

# mkdir /etc/zabbix/script

3)创建一个新的脚本

# vim /etc/zabbix/script/service_status.sh
#!/bin/bash
#Desc:zabbix 远程执行命令、重启应用 nginx、mysql、php、等
#Date:--
#by:Lee-YJ case $ 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 $

6)重启 zabbix-agent

# service zabbix-agent restart

7)在 zabbix-server 端用命令进行测试

# zabbix_get -s 47.104.xx.xx -k "service.status[Nginx]"

# zabbix_get -s 47.104.xx.xx -k "service.status[Mysql]"

# zabbix_get -s 47.104.xx.xx -k "service.status[Php]"
当返回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  /etc/sudoers
# vim /etc/sudoers //编辑sudo文件,添加如下两行
# Allow 'zabbix' user to restart nginx without password
zabbix 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:--
#by:Lee-YJ mkdir /etc/zabbix/script -p cat >>/etc/zabbix/script/service_status.sh<<EOF
#!/bin/bash
#Desc:zabbix 远程执行命令、重启应用 nginx、mysql、php、等
#Date:--
#by:Lee-YJ case \$ 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
EOF chmod +x /etc/zabbix/script/service_status.sh sed -i 's/# EnableRemoteCommands=0/EnableRemoteCommands=1/' /etc/zabbix/zabbix_agentd.conf cat >/etc/zabbix/zabbix_agentd.d/userparameter_service.conf<<EOF
# 获取服务运行状态
UserParameter=service.status[*],/etc/zabbix/script/service_status.sh \$
EOF service zabbix-agent restart chmod /etc/sudoers
echo "zabbix ALL=NOPASSWD: /etc/init.d/nginx restart" >> /etc/sudoers
echo "zabbix ALL=NOPASSWD: /etc/init.d/mysqld restart" >> /etc/sudoers
echo "zabbix ALL=NOPASSWD: /etc/init.d/php-fpm restart" >> /etc/sudoers

zabbix-agent_config.sh

zabbix--远程执行命令的更多相关文章

  1. Zabbix远程执行命令

    原文发表于cu:2016-06-14 Zabbix触发器(trigger)达到阀值后会有动作(action)执行:发送告警信息或执行远程命令. 本文主要配置验证zabbix执行远程命令. 一.环境 S ...

  2. 19 Zabbix 利用Scripts栏目对Hosts远程执行命令

    点击返回:自学Zabbix之路 19 Zabbix 利用Scripts栏目对Hosts远程执行命令 在Monitoring板块中,有Host出现的地方,单击Host按钮后,都可以执行对Host远程执行 ...

  3. zabbix自定义监控项、添加图形、设置触发器、远程执行命令

    监控项是在zabbix中手机数据的基础,没有监控项就没有数据,系统自带模板带有大量默认item,自定义item可以定义在模板中,在应用模板即可使用对应item:也可直接在host中定义 目标:自定义监 ...

  4. 20 Zabbix 利用Scripts栏目对Hosts远程执行命令

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 20 Zabbix 利用Scripts栏目对Hosts远程执行命令 在Monitoring板块中, ...

  5. Zabbix日常监控(触发器表达式、远程执行命令、宏简等)简单记录

    主机的工作基本流程 Host group --> Host --> Application --> Item --> Trigger(OK-->PROBLEM,trigg ...

  6. 3 触发器报警-->远程执行命令

    0.需求 上节课我们讲了,触发器报警,发送邮件,这节课主要讲下远程执行命令 流程图如下 item--> triggers-->action--->Email     |——>远 ...

  7. 利用scp 远程上传下载文件/文件夹和ssh远程执行命令

    利用scp传输文件 1.从服务器下载文件scp username@servername:/path/filename /tmp/local_destination例如scp codinglog@192 ...

  8. CentOS下利用sshpass不用手动输入密码远程执行命令

       在测试的时候要同时操作多台机器,每次都要挨个去执行几乎相同的命令或者修改一些设置,这样很影响工作效率也很烦,所以就想写一个脚本,远程自动去做这些操作.远程执行命令很简单,但是不能在执行命令加上命 ...

  9. ssh密钥登录及远程执行命令

    以192.168.1.104作为客户机 以192.168.1.103作为服务器 使用密钥登录 创建密钥对 在SSH客户机创建用户秘钥对 ssh-keygen -t rsa 之后全回车即可 将会在~/. ...

  10. python之实现批量远程执行命令(堡垒机)

    python远程批量执行 我并不是一个专业的开发,我一直在学习linux运维,对于python也是接触不久,所以代码写的并不是很规范简洁. 前段时间一个同学找我一起做一个自动化运维平台,我对pytho ...

随机推荐

  1. Trie字典树(超详细!!!)

    介绍 字典树,也称Trie.字母树,指的是某个字符串集合对应的形如下图的有根树.树的每条边上对应有恰好一个字符,每个顶点代表从根到该节点的路径所对应的字符串(将所有经过的边上的字符按顺序连接起来).有 ...

  2. [Noip2018]填数游戏

    传送门 Description 耳熟能详,就不多说了 Solution 对于一个不会推式子的蒟蒻,如何在考场优雅地通过此题 手玩样例,发现对于 \(n=1\) , \(ans=2^m\) .对于 \( ...

  3. cocos:C++ 导出到lua, genbindings.py修改

    cocos:C++ 导出到lua, genbindings.py修改 1. 准备 把tools目录下的cocos2dx_extension.ini, genbindings.py, userconf. ...

  4. python: 添加自定义模块路径 —— 可以使用相对路径

    自定义模块时,添加模块路径: sys.path.append('..')

  5. 微信小程序云开发不完全指北

    微信小程序云开发不完全指北 首先必须说明云开发的"云"并不是类似云玩家里的云的意思,而是微信小程序真的提供了云开发的接口以及一个简单的提供存储.数据库服务的虚拟后台(对于一些轻量小 ...

  6. [技术博客]海报图片生成——小程序canvas画布

    目录 背景介绍 canvas简介 代码实现 难点讲解 圆角矩形裁剪失败之PS的妙用 编码不要过硬 对过长的文字进行截取 真机首次生成时字体不对 drawImage只能使用本地图片 背景介绍 目标:利用 ...

  7. Spring Events

    https://www.baeldung.com/spring-events by Eugen Paraschiv Spring+ I just announced the new Learn Spr ...

  8. Java通过poi读取excel中文件

    maven依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</a ...

  9. Qt 实现超时锁屏

    最近使用Qt实现超时锁屏的功能(工控机触摸屏),当手长时间不触摸屏幕的时候,程序超时会显示锁屏窗口. 一.效果 主窗口超时显示锁屏窗口: 系统窗口超时显示锁屏窗口: 二.实现思路 首先开启一个线程用于 ...

  10. Java 并发-Unsafe 相关整理

    https://www.jianshu.com/p/2e5b92d0962e 1. Unsafe 类 Java 不能直接访问操作系统底层,而是通过本地方法来访问.Unsafe 类提供了硬件级别的原子操 ...