天天看點

zabbix通過invoke調用監控服務可用性

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

繼續閱讀