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

这篇具有很好参考价值的文章主要介绍了使用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[@]}";do
        case $1 in
                start) systemctl start $app
                ;;
                
                # 检查应用是否运行 
                status) 
                    systemctl is-active $app 2>&1 >/dev/null # 引用正常运行会输出 active 字段,且返回结果为 0
                    if [ $? -eq 0 ];then

                      echo -e "\033[33m"
                      echo "$app" is running...
                      echo -e "\033[0m"

                    else
                      echo -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

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

 二、应用服务监控脚本

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

#!/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 ];then
        
        resultMessages=$messages
        echo -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 restartApp
    unset messages

    # 遍历所有应用
    for app in "${apps[@]}"
    do
        # 核对应用是否运行状态(active)
        sudo systemctl is-active $app 2>&1 >/dev/null
        if [ $? -eq 0 ];then
           echo "$app is running..."

        else
           # 重启异常的应用
           sudo systemctl restart $app
            
           # 统计重启的应用数量
           let restartCount++
            
            # 用变量记录重启的应用名,将另一个字符串连接到变量的末尾
            #restartApp="${restartApp} \n$app"
            restartApp="${restartApp} $app"

           # 检查重启后应用是否正常
           systemctl is-active $app 2>&1 >/dev/null
           if [ $? -ne 0 ];then
              # 统计重启仍然失败的应用数量
              let errorCount++
           fi
        fi
    done



# 计算正常运行的应用数量
let successCount=$count-$errorCount

# 使用变量存储最后结果
    messages=$(cat << EOF
标题: 应用异常通知
监控的应用总数量:$count
重启后运行应用数量:$successCount
发生重启的应用数量: $restartCount
重启后仍异常的应用数量: $errorCount
发生重启的应用有: $restartApp
提示:请检查异常的原因
系统当前时间:$(date)
EOF
)

}


# 执行脚本函数
AppAction
SendMessages

 文章来源地址https://www.toymoban.com/news/detail-594393.html

到了这里,关于使用shell监控应用运行状态通过企业微信接收监控通知的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【高效、实用】k8s运行状态自动检测shell脚本

    学习本章,您将获得轻松管理500台虚机和物理机搭建的k8s集群的方法 。 掌握两种技能: 1.分清哪些是k8s集群需要重点关注的信息 2.如何量身定制k8s集群的shell脚本,让您的集群如虎添翼的安全、稳定、强大 提示:有些朋友的环境与我的环境不一样,执行可能显示不一样,要

    2023年04月08日
    浏览(40)
  • 如何监控Linux和Oracle数据库运行状态

    背景: 在生产环境中,一般可能会发生服务器宕机或者数据库宕机的情况,如何准确的把握找准”生产事故“的具体发生时间,其实有很多方法,可以借助第三方的监控软件或者其他收费软件。 但是本人就是穷逼一个,不可能买或者使用盗版的三方软件。所有设计了以下流

    2024年02月16日
    浏览(61)
  • 网络安全工具:通过监控分析日志数据保护企业网络

    由于混合工作模式的兴起以及业务运营向云环境的迁移,企业网络变得更加分散和复杂,仅安装外围安全解决方案只会创建一个基本的防御层,系统、服务器和其他网络实体会生成记录所有网络活动的日志。集中式日志管理系统可以帮助管理员自动监控网络日志,全面了解网

    2024年01月20日
    浏览(52)
  • 【Linux命令详解 | ps命令】 ps命令用于显示当前系统中运行的进程列表,帮助监控系统状态。

    在Linux系统中, ps 命令是一个重要的工具,用于展示当前正在运行的进程列表。作为一个博主,了解如何使用 ps 命令可以帮助你监控系统状态,定位问题,以及优化资源分配。本文将从参数列表、知识点讲解和实际示例等方面,深入介绍 ps 命令。 下表列出了 ps 命令的常用参

    2024年02月13日
    浏览(56)
  • 可以与宝塔共存的一个 “魔法” 服务器状态监控应用 ——xui

    之前有一期我们搭建了一个服务器监控,颜值非常不错,这期我们再来搭建一个 “特殊” 的服务器监控 ——XUI。 不仅可以监控服务器的数据,还可以干一些高级的,大家感兴趣的事情。 重要的是,它可以和宝塔面板共存! 一个非常直观,简洁大气的监控面板。 系统状态监

    2024年02月02日
    浏览(51)
  • 【docker】通过docker ps 查看容器运行状态发现没有端口号,解决PORTS没有端口号问题

    目录 1、遇到问题  2、添加端口号  3、杀掉正在运行的容器

    2024年02月13日
    浏览(54)
  • 使用Python监控服务器在线状态

    在公司内网有一台服务器,有动态的公网IP,使用DDNS对外提供服务,但是会因为停电、服务器卡死等原因导致服务器离线。服务器离线后无法及时获知,因此需要实现在服务器离线的时候能够发送消息到手机上。 公司办理的是联通的商务宽带,有赠送一台沃云的ECS,但是一直

    2024年02月04日
    浏览(56)
  • 【微信小程序】通过监听 WebSocket 的状态变化来判断Socket是否已经建立连接

    在微信小程序中,可以通过监听 WebSocket 的状态变化来判断是否已经建立连接。具体的操作步骤如下: 创建 WebSocket 对象并进行连接: 监听 WebSocket 的状态变化: 通过监听上述的状态变化,可以判断 WebSocket 是否已经建立连接。当连接成功时, onSocketOpen 会被触发;连接失败时

    2024年02月07日
    浏览(62)
  • 基于微信小程序的企业员工薪资管理系统(源码+文档+包运行)

    毕设帮助、技术解答、源码交流 联系方式见文末。 本基于微信小程序的企业职工薪资查询系统正是采用计算机技术和网络设计的新型系统,可以有效的把工资信息与网络相结合,为用户提供工作帮助和管理需求。本系统采用MySQL数据库存储数据,兼容性更强,可跨越多种平台

    2024年02月02日
    浏览(52)
  • 【架构实战】如何通过 langchain 把LLM大模型能力集成到企业应用中?

    本文为您提供关于如何通过 langchain 把 LLM 大模型能力集成到企业应用中的详细实践指南。在本文中,我将简要介绍 LLM 模型及其能力,并提供一种基于 langchain 的解决方案,以便企业可以将 LLM 模型集成到其应用程序中。 LLM(Language Model)是一种基于深度学习的语言模型,它可

    2024年02月07日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包