共计 4026 个字符,预计需要花费 11 分钟才能阅读完成。
Zabbix 通过 curl 命令判断 Web 服务是否正常并自动重启服务主要思路:
通过 curl 命令获取服务器响应码,如果正常返回 200,不正常返回 000
具体命令:
curl -I -s -w “%{http_code}” -o /dev/null http://www.baidu.com/
1. 编辑 zabbix-agent 客户端的配置文件
①vim /etc/zabbix/zabbix_agentd.conf
# 添加命令参数
UserParameter=script_status,/usr/bin/curl -I -s -w “%{http_code}” -o /dev/null http://1.1.1.1:9735/check
# 打开远程命令调用
EnableRemoteCommands = 1
重启服务生效
service zabbix-agent restart
②visudo 打开关于 zabbix 操作的命令
a. 添加 zabbix 权限
zabbix ALL=(ALL) NOPASSWD: ALL
b. 注释掉如下一行,否则命令无法执行:
# Default requiretty
2. 添加需要被触发的脚本
vim /usr/local/zabbix-agent/scripts/restart_script.sh
#!/bin/bash
# killyunva-script 关闭 yunva-script 这个 Java 进程
ps -ef|grep yunva-script-1.0.0.jar|/bin/kill `awk '{print $2}'`
sleep 3
# start yunva-script 重新启动 yunva-script 这个 java 脚本
cd /home/script/ && /bin/bash start.sh start
chmod +x /usr/local/zabbix-agent/scripts/restart_script.sh
————————————–
start.sh 脚本内容:
#!/bin/bash
LANG="zh_CN.UTF-8"
APP_HOME=$(echo `pwd` | sed 's/bin//')
APPPIDFILE=$APP_HOME/app.pid
case $1 in
start)
echo "Starting server..."
HEAP_MEMORY=1024m
PERM_MEMORY=64m
JMX_PORT=8911
JMX_HOST=1.1.1.1 JAVA_OPTS="-server -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider -XX:+HeapDumpOnOutOfMemoryError -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dio.netty.leakDetectionLevel=advanced"
shift
ARGS=($*)
for ((i=0; i<${#ARGS[@]}; i++)); do
case "${ARGS[$i]}" in
-D*) JAVA_OPTS="${JAVA_OPTS} ${ARGS[$i]}" ;;
-Heap*) HEAP_MEMORY="${ARGS[$i+1]}" ;;
-Perm*) PERM_MEMORY="${ARGS[$i+1]}" ;;
-JmxPort*) JMX_PORT="${ARGS[$i+1]}" ;;
-JmxHost*) JMX_HOST = "${ARGS[$i+1]}" ;;
esac
done
JAVA_OPTS="${JAVA_OPTS} -Xms${HEAP_MEMORY} -Xmx${HEAP_MEMORY} -XX:PermSize=${PERM_MEMORY} -XX:MaxPermSize=${PERM_MEMORY} -Dcom.sun.management.jmxremote.port=${JMX_PORT} -Djava.rmi.server.hostname=${JMX_HOST} -Dapp.home=${APP_HOME}"
echo "start jvm args ${JAVA_OPTS}"
nohup /home/java/jdk1.8.0_40/bin/java -classpath .:./yunva-script-1.0.0.jar:$CLASSPATH $JAVA_OPTS com.yunva.script.ScriptServer&
echo $! > $APPPIDFILE
echo STARTED
;;
stop)
echo "Stopping server ..."
if [! -f $APPPIDFILE]
then
echo "error: count not find file $APPPIDFILE"
exit 1
else
kill -15 $(cat $APPPIDFILE)
rm $APPPIDFILE
echo STOPPED
fi
;;
*)
echo "Please enter start|stop ..."
;;
esac
exit 0
————————————–
3.zabbix-server 的 web 配置
测试远程命令是否 ok
# zabbix_get -s 1.1.1.1 -p 10050 -k script_status
200
①添加监控项 item
Confuguration –> Hosts –> 找到对应的主机,点开 Items –> Create item
Name: script_check
# key 需要和 zabbix-agentd.conf 中定义的 Parameter 参数一致
Key: script_status
②创建对该监控项的触发器
Confuguration –> Hosts –> 找到对应的主机,点开 Triggers –> Create trigger
Name: yunva_scripts_port_9735_not_200
Expression: {iZ23xtdqvgmZ:script_status.last()}<>200
③设置 Action
Configuration–>Actions–>Create action
创建 Action 动作,即返回值不是 200 的时候重启服务
在 Action 选项中,
定义 Name:yunva_scripts_port_9735_not_200
#action name 自定义即可,action 选项的其余部分可采用默认值,如下:
Conditions
在 Conditions 选项中添加新的条件判断,以使判断更有针对性,如
New condition:Trigger severity = Warning
New condition:Trigger name like yunva_scripts_port_9735_not_200
#trigger name 对应步骤 1 中定义的 trigger name,如下:
Operations
在 Operations 选项中,添加新的”Action operation”,点击”New”,
Operation type:选择”Remote Command”
Target list:添加 target 为”Current host”
#agent 在本机
Type:选择”Custom script”
Execute on:选择”Zabbix agent”,命令为 “sudo /bin/bash /usr/local/zabbix-agent/scripts/restart_script.sh”
以上的方法实践证明不是很可靠,如果服务宕掉,可以出发事件,http 服务如果超出一定时间不响应,使用 curl 命令无法判断到底是否触发,如果超过了 10 秒以上,我们可以认为服务已经不可用(没有用户可以忍受 10 秒以上的页面响应速度),通过 web 的方式可以做到,具体实现方法可以参考 Zabbix 系列教程:Zabbix 添加对 web 页面 url 的状态监控:http://www.linuxidc.com/Linux/2016-11/137638p8.htm
一些 Zabbix 相关教程集合:
Ubuntu 14.04 下 Zabbix2.4.5 源码编译安装 http://www.linuxidc.com/Linux/2015-05/117657.htm
安装部署分布式监控系统 Zabbix 2.06 http://www.linuxidc.com/Linux/2013-07/86942.htm
《安装部署分布式监控系统 Zabbix 2.06》http://www.linuxidc.com/Linux/2013-07/86942.htm
CentOS 7.0 x64 下 Zabbix 3.0 安装笔记 http://www.linuxidc.com/Linux/2016-11/137044.htm
Zabbix 分布式监控系统实践 http://www.linuxidc.com/Linux/2013-06/85758.htm
CentOS 6.3 下 Zabbix 监控 apache server-status http://www.linuxidc.com/Linux/2013-05/84740.htm
CentOS 6.3 下 Zabbix 监控 MySQL 数据库参数 http://www.linuxidc.com/Linux/2013-05/84800.htm
64 位 CentOS 6.2 下安装 Zabbix 2.0.6 http://www.linuxidc.com/Linux/2014-11/109541.htm
ZABBIX 的详细介绍:请点这里
ZABBIX 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137640.htm