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添加监控项,触发器及动作就不演示了,博客有自定义监控项的详解

zabbix通过invoke调用监控服务可用性的更多相关文章

  1. 四十八.监控概述 、 Zabbix基础 、 Zabbix监控服务

     1.常用系统监控命令 查看内存信息 查看交换分区信息 查看磁盘信息 查看CPU信息 查看网卡信息 查看端口信息 查看网络连接信息   一般企业做监控的目的:实时报告系统状态,提前发现系统的问题. 监 ...

  2. Zabbix - 配置服务器对第三方服务的监控

    需求: 需要配置zabbix监控,使得zabbix服务器可以监控到另一台服务器上运行的第三方服务的状态,当状态异常时发送告警邮件. 限制:被监控的服务器不允许安装任意客户端,且该台服务器不能联通外网 ...

  3. zabbix监控服务部署

    目录 zabbix监控服务部署 1. zabbix介绍 1.1 zabbix的组件 1.2 zabbix的进程 1.3 zabbix常用术语 2. zabbix工作原理 3. zabbix监控架构 4 ...

  4. 【zabbix部署】基于linux安装zabbix监控服务和被监控服务

    环境配置 zabbix_server:10.0.0.1 zabbix_agentd:10.0.0.1,10.0.0.2(暂定) 操作系统:centos7.6 安装环境配置 1. LNMP环境 zabb ...

  5. 监控服务zabbix部署

    目录 1. zabbix介绍 2. zabbix特点 3. zabbix配置文件 4. 部署zabbix 4.1 zabbix服务端安装 4.2 zabbix服务端配置 4.3 zabbix服务端we ...

  6. zabbix监控服务部署脚本

    搭建平台脚本: #!/bin/bash #zabbix监控服务部署 #脚本使用前提:yum搭建,nginx-1.12.2源码包,zabbix-3.4.4源码包,要求源码包尽量在单一目录下,最好在默认管 ...

  7. 网站集群架构(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken

    前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高 ...

  8. zabbix Server 4.0监控Flume关键参数

    zabbix Server 4.0监控Flume关键参数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Flume本身提供了http, ganglia的监控服务.当然我们也可以使用 ...

  9. ss命令结合zabbix对socket做监控

    本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 最近天冷了,socket也出问题了,一直没有做监控,现在就把监控加起来,目前我们使用的有z ...

随机推荐

  1. golang-grpc

    目录 1. 什么是grpc和protobuf 1.1 grpc 1.2 protobuf 2.go下grpc 2.1官网下载protobuf工具 2.2 下载go的依赖包 2.3 编写proto文件 ...

  2. 【2022.04.19】Docker-compose一键安装mirai,搭建QQ机器人最快方法

    先用官方的脚本安装下docker curl -sSL https://get.docker.com/ | sh 安装docker-compose curl -L "https://githu ...

  3. 阿里云IoT流转到postgresql数据库方案

    之前写过一篇如使用阿里云上部署.NET 3.1自定义运行时的文章,吐槽一下,虽然现在已经2022年了,但是阿里云函数计算的支持依然停留在.NET Core 2.1,更新缓慢,由于程序解包大小的限制,也 ...

  4. IOC容器--1.12. 基于 Java 的容器配置

    用Java的方式配置Spring ,不使用Spring的XML配置,全权交给Java来做 JavaConfig是Spring的一个子项目,在Sring 4  之后成为核心功能 这种纯Java的配置方式 ...

  5. [AcWing 771] 字符串中最长的连续出现的字符

    点击查看代码 #include<iostream> using namespace std; string str; int n; int main() { cin >> n; ...

  6. vue 列表过滤和排序

    <body> <div id="root"> <h1>员工列表</h1> <input type="text&quo ...

  7. slice-substring-substr-split-splice

    一.字符串slice(startIndex, endBeforeIndex) endBeforeIndex < 0,则 endBeforeIndex 为 负数,第二个参数为字符串长度加上负值,之 ...

  8. 数据管理技术发展,数据库应用发展史,数据库分类,MySQL

    计算机数据管理技术发展 1. 自由管理阶段 用户以文件形式将数据组织起来,并附属在各自的应用程序下.    1.数据不保存     当时计算机主要用于科学计算,一般不需要将数据长期保存,只是计算某一课 ...

  9. 并发编程系列之Lock锁可重入性与公平性

    一.相似之处:Lock锁 vs Synchronized 代码块 Lock锁是一种类似于synchronized 同步代码块的线程同步机制.从Java 5开始java.util.concurrent. ...

  10. Linux磁盘和文件系统知识总结

    硬盘操作 为什么要给硬盘分区? 如果你需要在一块硬盘上用到多个文件系统,那么你就需要对硬盘进行分区,以便用不同的分区支持不同的文件系统.(但一个硬盘只能有一个分区表!)反过来说,如果你整块硬盘都用同样 ...