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. NodeJS学习day1

    今天主要学习的IO操作 const fs = require('fs') fs.readFile('./files/11.txt','utf-8',function(err,daraStr){ //读 ...

  2. hutool工具类常用API整理

    0.官网学习地址 https://www.hutool.cn/ 1.依赖 <dependency> <groupId>cn.hutool</groupId> < ...

  3. 日常使用mobx的小技巧

    日常使用mobx的小技巧 由于自己开发的项目都是中小型项目,所以在技术选型上使用了mobx.但是使用过程中发现关于mobx的技术文章并不多.于是萌发出写这篇文章的想法.请轻喷. 更新控制store渲染 ...

  4. Python小游戏——猜数字

    1 print("--------------我爱鱼-----------") 2 temp = input("不妨猜一下甲鱼现在心里想的是哪个数字:") 3 ...

  5. vue3 数据可视化项目

    可视化面板介绍 ​ 应对现在数据可视化的趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使用,可视化图表来展示体现数据,让数据更加直观,数据特点更加突出. 01-使用技术 完成该项目 ...

  6. JSP标签、JSTL标签、EL表达

    JSP页面转发,附带数据 <jsp:forward page="/jsptag2.jsp"> <jsp:param name="name" v ...

  7. 程序员不得不知道的 API 接口常识

    说实话,我非常希望两年前刚准备找实习的自己能看到本篇文章,那个时候懵懵懂懂,跟着网上的免费教程做了一个购物商城就屁颠屁颠往简历上写. 至今我仍清晰地记得,那个电商教程是怎么定义接口的: 管它是增加.修 ...

  8. asyncio 异步编程

    首先了解一下协程,协程的本质就是一条线程,多个任务在一条线程上来回切换,协程的所有切换都是基于用户,只有在用户级别才能感知到的 IO 才会用协程模块来规避,在 python 中主要使用的协程模块是 a ...

  9. Golang(go语言)开发环境配置

    VSCode开发环境配置 目录 VSCode开发环境配置 先到VSCode官网去下载适合自己系统的VSCode安装软件 演示在WIndows下 安装使用 演示在Linux(Ubuntu/centos) ...

  10. Spring配置及依赖注入

    入门 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-we ...