• 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添加监控项,触发器及动作就不演示了,博客有自定义监控项的详解
  • 相关阅读:
    html5 localstorage本地存储
    如何在源码里修改openwrt root密码
    openwrt-scripts/config/mconf: Syntax error: “(” unexpected错误解决
    HTML5获取地理位置信息
    Mysql 查看连接数,状态 最大并发数(赞)
    晨读笔记:CSS3选择器之属性选择器
    CSS3选择器之属性选择器
    js判断浏览器类型
    javascript json字符串与对象相互转换
    手机端html5触屏事件(touch事件)
  • 原文地址:https://www.cnblogs.com/The-day-of-the-wind/p/11077494.html
Copyright © 2020-2023  润新知