阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Zabbix通过curl命令判断Web服务是否正常并自动重启服务

170次阅读
没有评论

共计 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 

Zabbix 通过 curl 命令判断 Web 服务是否正常并自动重启服务
②创建对该监控项的触发器
Confuguration –> Hosts –> 找到对应的主机,点开 Triggers –> Create trigger

Name: yunva_scripts_port_9735_not_200
Expression: {iZ23xtdqvgmZ:script_status.last()}<>200
Zabbix 通过 curl 命令判断 Web 服务是否正常并自动重启服务
③设置 Action
Configuration–>Actions–>Create action

创建 Action 动作,即返回值不是 200 的时候重启服务
在 Action 选项中,
定义 Name:yunva_scripts_port_9735_not_200
#action name 自定义即可,action 选项的其余部分可采用默认值,如下:

Zabbix 通过 curl 命令判断 Web 服务是否正常并自动重启服务
Conditions
在 Conditions 选项中添加新的条件判断,以使判断更有针对性,如
New condition:Trigger severity = Warning
New condition:Trigger name like yunva_scripts_port_9735_not_200
#trigger name 对应步骤 1 中定义的 trigger name,如下:

Zabbix 通过 curl 命令判断 Web 服务是否正常并自动重启服务
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”

Zabbix 通过 curl 命令判断 Web 服务是否正常并自动重启服务

 

以上的方法实践证明不是很可靠,如果服务宕掉,可以出发事件,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

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4026字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中