使用shell监控应用运行状态通过企业微信接收监控通知

目的:编写shell脚本来监控应用服务运行状态,若是应用异常则自动重启应用通过企业微信接收监控告警通知

知识要点:

  1. 使用shell脚本监控应用服务
  2. 使用shell脚本自动恢复异常服务
  3. 通过企业微信通知接收监控结果
  4. shell脚本使用数组知识,统计数据元素个数
  5. shell脚本使用变量叠加知识
  6. shell脚本使用算术知识

一、一键启停脚本

一键启停脚本目的是为了能够快速的批量查看服务器上运行的应用状态以及一键批量启动或者停止应用

#!/bin/bash
#一键启动、停止和查看云苍穹部分组件运行状态
#for app in  mysqld zookeeper rabbitmq-server redis-6379 nginx mdd mservice mservice-qing mc fileserver kafka logstash zipkin es;do
apps=(zookeeper rabbitmq-server redis-6379 nginx mdd  kafka logstash  es)
# for app in  zookeeper rabbitmq-server redis-6379 nginx mdd  kafka logstash  es ;do
for app in "${apps[@]}";docase $1 instart) systemctl start $app;;# 检查应用是否运行 status) systemctl is-active $app 2>&1 >/dev/null # 引用正常运行会输出 active 字段,且返回结果为 0if [ $? -eq 0 ];thenecho -e "\033[33m"echo "$app" is running...echo -e "\033[0m"elseecho -e "\033[31m"echo "$app is not running..." echo -e "\033[0m"fi;;stop) systemctl stop $app;;restart) systemctl stop $app; sleep 1s; systemctl start $app## systemct  status $app;;*) echo "usage $0 start|stop|status ";;esac
done

 二、应用服务监控脚本

        编写应用服务监控脚本,配置定时任务,定时监控应用,一旦检查到应用内运行异常则自动重启,并将结果通知发送到企业微信。

#!/bin/bash
# 使用前提: 所有应用服务器都配置 systemd
# 定时任务:  */5 * * * * /local/monitorApp.sh 2>&1 /dev/null
# cat monitorApp.sh
# creator: @tudou
# date 2023-07-17 # 需要检查的应用列表,可自行修改素组内容/元素为需要监控的应用服务名
apps=(zookeeper rabbitmq-server redis-6379 nginx mdd  kafka logstash  es)
# apps=(docker jenkins nginx)# 企业微信
function Weichat(){# 请修改该为你的企业微信群组机器人local webhook_key="你的企业微信秘钥"# 发送get请求curl "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=$webhook_key" \-H 'Content-Type: application/json' \-d "{\"msgtype\": \"text\",\"text\": {\"content\": \"$$resultMessages\"}}"}# 应用异常才发送企业微信通知
function SendMessages(){if [ -n "$messages" ] && [ "$restartCount" -gt 0 ];thenresultMessages=$messagesecho -e "$resultMessages"  # 在控制台输出结果# Weichat   # 企业微信发送结果通知fi}# 脚本监控动作
function AppAction(){# 需要监控的应用名#for app in  mysqld zookeeper rabbitmq-server redis-6379 nginx mdd mservice mservice-qing mc fileserver kafka logstash zipkin es;do# apps=(zookeeper rabbitmq-server redis-6379 nginx mdd  kafka logstash  es)# 数组中元素的总数count=${#apps[@]}# 初始化应用异常数errorCount=0# 初始化应用正常数successCount=0# 初始化重启应用数restartCount=0# 初始化重启应用变量和结果变量unset restartAppunset messages# 遍历所有应用for app in "${apps[@]}"do# 核对应用是否运行状态(active)sudo systemctl is-active $app 2>&1 >/dev/nullif [ $? -eq 0 ];thenecho "$app is running..."else# 重启异常的应用sudo systemctl restart $app# 统计重启的应用数量let restartCount++# 用变量记录重启的应用名,将另一个字符串连接到变量的末尾#restartApp="${restartApp} \n$app"restartApp="${restartApp} $app"# 检查重启后应用是否正常systemctl is-active $app 2>&1 >/dev/nullif [ $? -ne 0 ];then# 统计重启仍然失败的应用数量let errorCount++fifidone# 计算正常运行的应用数量
let successCount=$count-$errorCount# 使用变量存储最后结果messages=$(cat << EOF
标题: 应用异常通知
监控的应用总数量:$count
重启后运行应用数量:$successCount
发生重启的应用数量: $restartCount
重启后仍异常的应用数量: $errorCount
发生重启的应用有: $restartApp
提示:请检查异常的原因
系统当前时间:$(date)
EOF
)}# 执行脚本函数
AppAction
SendMessages

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/3239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

session 生命周期和经典案例-防止非法进入管理页面

文章目录 session 生命周期和Session 经典案例-防止非法进入管理页面session 生命周期Session 生命周期-说明代码演示说明 Session 的生命周期创建CreateSession2创建ReadSession2 解读Session 的生命周期代码示例创建DeleteSession Session 经典案例-防止非法进入管理页面需求…

bgp联邦

1、ip配置 [r1-LoopBack0]ip address 192.168.1.1 24 [r1-LoopBack1]ip address 10.0.0.1 24 [r1-GigabitEthernet0/0/0]ip address 12.0.0.1 24[r2-GigabitEthernet0/0/0]ip address 12.0.0.2 24 [r2-GigabitEthernet0/0/1]ip address 172.16.1.1 29 [r2-GigabitEthernet0/0/…

【从零开始学习CSS | 第三篇】选择器优先级

目录 前言&#xff1a; 常见选择器的优先级&#xff08;从高到低&#xff09; 选择器的权重&#xff1a; 总结&#xff1a; 前言&#xff1a; 在前几篇文章中我们介绍了大量的选择器&#xff0c;那么大量的选择器在使用的时候&#xff0c;一定是有一个优先级顺序的&#xff…

【计算机视觉】DINOv2(视觉大模型)代码使用和测试(完整的源代码)

文章目录 一、环境部署二、导入原图2.1 使用vit_s14的模型 三、使用其他模型3.1 使用vit_b14的模型3.2 使用vit_l14的模型3.3 使用vit_g14的模型 一、环境部署 !git clone https://ghproxy.com/https://github.com/facebookresearch/dinov2.git输出为&#xff1a; Cloning in…

DT灯光基础(辉光 雾 阴影 渲染选项)

点光源 不能宣染&#xff0c;换个版本。不能正常预览 聚光灯 t 手柄 挡光版 平行光阴影 光线追踪阴影 没有看见阴影 灯光使用贴图 环境光 不进行渲染物体 不渲染阴影 接收阴影 不反射 可以看到反射 没有反射了 灯光链接 取消灯照 灯光雾 辉光 变化不明显

C++初阶 - 3.类和对象(中)

目录 1.类的6个默认成员函数 2.构造函数 2.2特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1运算符重载 5.2 赋值运算符重载 5.3 前置和后置重载 6.日期类的实现 7.const成员 8.取地址及const取地址操作符重载 1.类…

FCOS 论文学习

1. 解决了什么问题&#xff1f; 之前的目标检测器如 RetinaNet、SSD、YOLOv3 都依赖于 anchors。基于 anchors 的检测器有如下三个缺点&#xff1a; 检测表现对于 anchors 的大小、宽高比和数量等超参数很敏感&#xff1b;即使精心设计了 anchors&#xff0c;但由于大小和宽高…

EasyCVR告警类型设置后首页需要刷新才能更新的问题优化

EasyCVR视频融合平台基于云边端一体化架构&#xff0c;可支持多协议、多类型设备接入&#xff0c;包括&#xff1a;NVR、IPC、视频编码器、无人机、车载设备、智能手持终端、移动执法仪等。平台具有强大的数据接入、处理及分发能力&#xff0c;可在复杂的网络环境中&#xff0c…

Zabbix 自动发现及注册

1、依次选择 Configuratio、Discovery、Create discovery rule&#xff08;配置、自动发现、创建发现规则&#xff09; 创建客户端发现规则 2、zabbix客户端安装 agent zabbix客户端一键安装脚本 脚本参考链接 #!/bin/bash #Zabbix-Agent 5.0Zabbix_Service192.168.63.20#安…

【PHP面试题44】PHP5的版本和PHP7之间有哪些区别

文章目录 一、前言二、底层调整2.1性能提升2.2 新的引擎2.3 数据类型改进2.4 错误处理改进2.5 语言特性增加 三、应用层差异3.1 兼容性3.2 类和方法改进3.3 错误处理机制3.4 性能优化3.5 新的扩展支持 四、一些语法糖示例4.1 标量类型声明示例4.2 新增了Spaceship操作符&#x…

win11中的pagefile.sys

在C盘系统下&#xff0c;有一个命名为pagefile.sys的文件占用C盘太大的空间&#xff0c;不少用户怕删除pagefile.sys文件之后会对系统造成影响&#xff0c;而不少用户想要将pagefile.sys文件移动到D盘中。那么pagefile.sys是什么文件&#xff1f;Win10系统下pagefile.sys文件太…

【C++】list的模拟实现

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…

5. MySQL - JDBC SQL 注入 博客系统(万字详解)

目录 1. 介绍 2. 使用 JDBC 连接数据库 2.1 如何使用 JDBC 连接数据库 2.2 导入的各个类 2.3 DataSource 对象的创建 2.4 从 DataSource 对象中得到 Connection 对象 2.5 创建 Statement 对象 2.6 从 ResultSet 中遍历每行结果&#xff0c;从每行中获取每列的值 2.7 代…

EIK+Filebeat+Kafka

目录 Kafka 概述 为什么需要消息队列&#xff08;MQ&#xff09; 使用消息队列的好处 消息队列的两种模式 Kafka 定义 Kafka 简介 Kafka 的特性 Kafka 系统架构 Partation 数据路由规则&#xff1a; 分区的原因 部署 kafka 集群 1.下载安装包 2.安装 Kafka 修改配…

B072-项目实战-用户模块--前台登录 三方登录

目录 前台登录-账号登录前端完成左上角显示用户信息配置前置拦截器、后置拦截器和不受限资源拦截器 三方登录-微信登录概述流程图用法代码实现步骤分析:实现准备代码前端login.htmlcallback.html 后端LoginController-微信登录LoginServiceImpl-微信登录解决回调域名不能跨域绑…

安达发|某大厂使用APS计划排程真实成功案例

在很多群里、朋友圈、公众号上可以看到&#xff0c;很多精益咨询老师认为&#xff0c;不仅ERP不啥用&#xff0c;APS更是无聊之举&#xff0c;而且肯定是用不好的。但&#xff0c;事实上可能还真不是这样的。 一个深圳的客户&#xff0c;用了APS以后&#xff0c;不仅装配的齐套…

桥梁监测需要哪些设备?

随着我国经济的发展&#xff0c;我国桥梁建设也迈上了新的台阶。截至2022年底&#xff0c;我国的公路桥梁总数达到了103.32万座。然而&#xff0c;随着在役桥梁使用时间的增长&#xff0c;承载能力受到荷载、环境以及结构退化等因素的影响&#xff0c;桥梁安全问题日益凸显。桥…

vue3和gin框架实现简单的断点续传

vue3和gin框架实现简单的断点续传 前端代码 Test.vue <template><div><inputtype"file"ref"uploadRef"change"upload"multiple/><templatev-for"item in fileList":key"item.key"><br><…

spring复习:(39)注解方式的ProxyFactoryBean

一、定义接口 package cn.edu.tju.study.service;public interface MyService {void myMethod(); }二、定义实现类&#xff1a; package cn.edu.tju.study.service;public class MyServiceImpl implements MyService{Overridepublic void myMethod() {System.out.println(&qu…

Redis 读写分离 使用redisTemplate执行lua脚本时,报错处理

项目框架说明 项目配置 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.4</version></parent>....<dependency><groupId>org.springfra…