1. 通過腳本判斷線上服務是否可用
telnet 127.0.0.1 端口 #線上調用的是使用的dubbo端口
通過invoke 抓取傳回的code值,腳本如下 #傳回code:0則視為正常,傳回其他值一概視為異常
#!/bin/sh
(sleep 1;echo " ";sleep 1;echo "invoke com.dafy.letou.loan.api.service.RepayService.queryRepayByOrderNo({\"orderNo\":\"6045430f040010d1658802\",
\"channelCode\":\"0000\"}) -p com.dafy.lou.loan.api.request.QueryRepayRequest";sleep 1;
echo " ";sleep 1;echo "exit")|telnet 127.0.0.1 50690 >/home/zabbix/loan/loan.txt
2. 通過zabbix監控其傳回的值是否正常
每5分鐘執行一次上述腳本,抓取/home/zabbix/loan/loan.txt的code值
*/5 * * * * sh /home/zabbix/loan/loan.sh
自定義監控項,zabbix安裝路勁下建立一個以.conf結尾的檔案,如下:
/usr/local/zabbix_agent/etc/zabbix_agentd.conf.d/loan_service.conf
UserParameter=loan, cat /home/zabbix/loan/loan.txt | grep '"code":0' | wc -l #此處傳回值為1則正常,傳回0則告警,通過郵件等告警及遠端執行指令
需要在zabbix_agentd.conf打開以下配置項
EnableRemoteCommands=1 #允許遠端執行指令
UnsafeUserParameters=0 #允許自定義監控項
Include=/usr/local/zabbix_agent/etc/zabbix_agentd.conf.d/*.conf #此處可自定義路勁
3. 如果上述傳回值為0,則執行以下腳本
#!/bin/bash
(sleep 1;echo " ";sleep 1;echo "invoke com.dafy.letou.loan.api.service.RepayService.queryRepayByOrderNo
({"orderNo":"1604596224358802", "channelCode":"0000"}) -p com.dafy.letou.loan.api.request.QueryRepayRequest";sleep 1;echo " ";sleep 1;echo "exit")|
telnet 127.0.0.1 50690 >/home/zabbix/loan/error.txt
sleep 3
(sleep 1;echo " ";sleep 1;echo "invoke com.dafy.letou.loan.api.service.RepayService.queryRepayByOrderNo
({"orderNo":"1604596224358802", "channelCode":"0000"}) -p com.dafy.letou.loan.api.request.QueryRepayRequest";sleep 1;echo " ";sleep 1;echo "exit")|
telnet 127.0.0.1 50690 >>/home/zabbix/loan/error.txt
sleep 3
(sleep 1;echo " ";sleep 1;echo "invoke com.dafy.letou.loan.api.service.RepayService.queryRepayByOrderNo
({"orderNo":"1604596224358802", "channelCode":"0000"}) -p com.dafy.letou.loan.api.request.QueryRepayRequest";sleep 1;echo " ";sleep 1;echo "exit")|
telnet 127.0.0.1 50690 >>/home/zabbix/loan/error.txt
sleep 3
(sleep 1;echo " ";sleep 1;echo "invoke com.dafy.letou.loan.api.service.RepayService.queryRepayByOrderNo
({"orderNo":"1604596224358802", "channelCode":"0000"}) -p com.dafy.letou.loan.api.request.QueryRepayRequest";sleep 1;echo " ";sleep 1;echo "exit")|
telnet 127.0.0.1 50690 >>/home/zabbix/loan/error.txt
sleep 3
(sleep 1;echo " ";sleep 1;echo "invoke com.dafy.letou.loan.api.service.RepayService.queryRepayByOrderNo
({"orderNo":"1604596224358802", "channelCode":"0000"}) -p com.dafy.letou.loan.api.request.QueryRepayRequest";sleep 1;echo " ";sleep 1;echo "exit")|
telnet 127.0.0.1 50690 >>/home/zabbix/loan/error.txt
sleep 3
(sleep 1;echo " ";sleep 1;echo "invoke com.dafy.letou.loan.api.service.RepayService.queryRepayByOrderNo
({"orderNo":"1604596224358802", "channelCode":"0000"}) -p com.dafy.letou.loan.api.request.QueryRepayRequest";sleep 1;echo " ";sleep 1;echo "exit")|
telnet 127.0.0.1 50690 >>/home/zabbix/loan/error.txt
sleep 3
(sleep 1;echo " ";sleep 1;echo "invoke com.dafy.letou.loan.api.service.RepayService.queryRepayByOrderNo
({"orderNo":"1604596224358802", "channelCode":"0000"}) -p com.dafy.letou.loan.api.request.QueryRepayRequest";sleep 1;echo " ";sleep 1;echo "exit")|
telnet 127.0.0.1 50690 >>/home/zabbix/loan/error.txt
sleep 3
(sleep 1;echo " ";sleep 1;echo "invoke com.dafy.letou.loan.api.service.RepayService.queryRepayByOrderNo
({"orderNo":"1604596224358802", "channelCode":"0000"}) -p com.dafy.letou.loan.api.request.QueryRepayRequest";sleep 1;echo " ";sleep 1;echo "exit")|
telnet 127.0.0.1 50690 >>/home/zabbix/loan/error.txt
sleep 3
(sleep 1;echo " ";sleep 1;echo "invoke com.dafy.letou.loan.api.service.RepayService.queryRepayByOrderNo
({"orderNo":"1604596224358802", "channelCode":"0000"}) -p com.dafy.letou.loan.api.request.QueryRepayRequest";sleep 1;echo " ";sleep 1;echo "exit")|
telnet 127.0.0.1 50690 >>/home/zabbix/loan/error.txt
sleep 3
(sleep 1;echo " ";sleep 1;echo "invoke com.dafy.letou.loan.api.service.RepayService.queryRepayByOrderNo
({"orderNo":"1604596224358802", "channelCode":"0000"}) -p com.dafy.letou.loan.api.request.QueryRepayRequest";sleep 1;echo " ";sleep 1;echo "exit")|
telnet 127.0.0.1 50690 >>/home/zabbix/loan/error.txt
sleep 3
code_err=`cat /home/zabbix/loan/error.txt | grep '"code":0' | wc -l`
loan=`ps -ef | grep letou-loan | grep -v grep | awk '{print $2}'`
if [ $code_err -lt 5 ];then
if [ ! $loan ];then
/opt/server/letou/letou-loan/bin/start.sh PRO
else
kill -9 $loan
/opt/server/letou/letou-loan/bin/start.sh PRO
fi
else
echo "重新開機失敗"
fi
注意項:
因為生産服務的使用者不是用root啟動的,需要從zabbix切換到普通使用者執行腳本
具體操作如下:
1. visudo 新增 zabbix ALL=(ALL) ALL
2. vim /etc/passwd 取消zabbix使用者密碼:即删除第二列的x
3. 在zabbix使用者使用如下指令執行:sudo su deploy -s /bin/sh /home/zabbix/loan/call.sh sudo su - deploy -c 需要執行的指令(su與su -切換使用者,su -會切換到使用者家目錄)
4. zabbix添加監控項,觸發器及動作就不示範了,部落格有自定義監控項的詳解
轉載于:https://www.cnblogs.com/The-day-of-the-wind/p/11077494.html