使用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.hqwc.cn/news/27034.html

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

相关文章

Word 常用操作总结

文章目录 【公式篇】编号右对齐自动编号多行公式对齐编号右靠下编号右居中 公式引用更新编号 【公式篇】 简述&#xff1a;通过“#换行”的方式使编号右对齐&#xff0c;通过插入题注的方式使其自动编号&#xff0c;通过交叉引用的方式引用公式编号。 编号右对齐自动编号 在公…

盛元广通科研院所实验室安全管理系统LIMS

实验室的管理与安全直接影响着教学与科研质量&#xff0c;从科研角度出发&#xff0c;实验室安全风险特点与生产现场安全风险特点存在较大差异&#xff0c;危险源种类复杂实验内容变更频繁&#xff0c;缺乏有效监管&#xff0c;实验室安全运行及管理长期游离于重点监管领域外&a…

Django实现接口自动化平台(十二)自定义函数模块DebugTalks 序列化器及视图【持续更新中】

上一章&#xff1a; Django实现接口自动化平台&#xff08;十一&#xff09;项目模块Projects序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解&#xff0c;查看本章内容时&#xff0c;要结合整体项目代码来看&#xff1a; python django vue…

【Java面试丨并发编程】线程中并发安全

一、Synchronized关键字的底层原理 1. Synchronized的作用 Synchronized【对象锁】采用互斥的方式让同一时刻至多只有一个线程能持有【对象锁】&#xff0c;其他线程再想获取这个【对象锁】时就会阻塞住 2. Monitor Synchronized【对象锁】底层是由Monitor实现&#xff0c;…

计算机网络——VLan介绍

学习视频&#xff1a; 网工必会&#xff0c;十分钟搞明白&#xff0c;最常用的VLAN技术_哔哩哔哩_bilibili 技术总结&#xff1a;VLAN&#xff0c;网络中最常用的技术&#xff0c;没有之一_哔哩哔哩_bilibili 全国也没几个比我讲得好的&#xff1a;VLAN虚拟局域网 本来补充了…

巧妙使用 CSS 渐变来实现波浪动画

目录 一、波浪的原理 二、曲面的绘制 三、波浪动画 四、文字波浪动画 五、总结一下 参考资料 之前看到coco[1]的这样一篇文章&#xff1a;纯 CSS 实现波浪效果&#xff01;[2]&#xff0c;非常巧妙&#xff0c;通过改变border-radius和不断旋转实现的波浪效果&#xff0c…

【unity细节】分不清楚__世界坐标,自身坐标,Vector3,transform和translate?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 收录于专栏&#xff1a;unity细节和bug ⭐世界坐标系transform和自身坐标Trasform.local和Vector3⭐ 文章目录 ⭐世界坐标…

excel常用操作备忘

excel操作&#xff1a; 1、快速填充多列公式&#xff1a;选中多列后&#xff0c;按ctrlD填 充。 2、快速删除空行&#xff1a;全选行&#xff0c;按ctrlG&#xff0c;空值项前边打上钩&#xff0c;点确定&#xff0c;针对选中的空行&#xff0c;鼠标右击&#xff0c;点删除&…

APACHE KAFKA本机Hello World教程

目标 最近想要简单了解一下Apache Kafka&#xff0c;故需要在本机简单打个Kafka弄一弄Hello World级别的步骤。 高手Kafka大佬们&#xff0c;请忽略这里的内容。 步骤 Apacha Kafka要求按照Javak8以上版本的环境。从官网下载kafka并解压。 启动 # 生产kafka集群随机ID KA…

【机密计算标准】GB/T 41388-2022 可信执行环境基础安全规范

1 范围 本文件确立了可信执行环境系统整体技术架构&#xff0c;描述了可信执行环境基础要求、可信虚拟化系统、可信操作系统、可信应用与服务管理、跨平台应用中间件等主要内容及其测试评价方法。 2 规范性引用文件 下列文件中的内容通过文中的规范性引用面构成本文件必不…

❤️创意网页:如何创建一个漂亮的3D正六边形

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;欢迎踏入…

Python多线程编程Queue队列使用方法

一、多线程编程Queue队列 在多线程编程中&#xff0c;由于多个线程并发执行&#xff0c;可能会导致线程之间出现协调问题&#xff0c;为了保证线程间的同步和协调&#xff0c;Python提供了Queue模块&#xff0c;支持多线程间的数据交换和同步。Queue是一种线程安全的数据结构&…