【运维】shell监控脚本结合钉钉机器人实现服务及服务器监控告警

news2024/12/23 6:15:21

文章目录

  • 前言
  • 一、监控shell脚本和钉钉机器人
  • 二、创建钉钉机器人:
    • 1.在钉钉群聊里点击设置
    • 2.在设置里点击机器人选项
    • 3.再点击添加机器人
    • 4.再点击选择自定义机器人
    • 5.设置机器人名称、是否加密、是否限制ip、以及触发关键字
    • 6.获取机器人的Webhook地址
  • 三、编写监控脚本:
    • 1.代码编写
    • 2.解释主要与钉钉机器人联动的代码
    • 3.钉钉官网代码
  • 四、设置定时任务
    • 1.使用Cron或其他工具设置定时任务来定期运行监控脚本
    • 2.给脚本加执行权限
  • 五、测试和部署
  • 总结


前言

当我们运维服务和服务器时,监控告警是必不可少的一项工作。通过监控告警,我们可以及时发现并解决潜在的问题,保证服务的稳定性和可靠性。而结合shell脚本和钉钉机器人,能够更加方便地实现服务及服务器的监控告警。

本文将介绍如何利用shell脚本编写监控脚本,监控服务器的状态、服务的运行情况等,并通过钉钉机器人发送告警信息。文章将详细介绍如何编写一些常见的监控脚本,如检查HTTP服务的可用性、检查磁盘空间使用情况等。同时,还将介绍如何配置和使用钉钉机器人,将监控脚本的告警信息实时发送到指定的钉钉群组中。

通过本文的学习和实践,您将能够掌握利用shell脚本和钉钉机器人实现服务及服务器监控告警的方法,提升运维工作的效率和准确性。希望本文能为您在实现监控告警方面提供一些思路和帮助。

一、监控shell脚本和钉钉机器人

钉钉机器人是钉钉平台提供的一种自动化机器人,可以通过接口与其他系统进行集成,实现自动化的消息推送和交互。钉钉机器人可以用于各种场景,包括但不限于实时监控告警、任务提醒、数据推送等。

钉钉机器人的主要功能包括:

  • 消息推送:可以向指定的钉钉群组或个人发送消息,包括文本、链接、图片等形式的消息。
  • 交互式应答:可以通过设置机器人的关键词和相应的回复内容,实现对用户消息的自动应答。
  • 定时任务:可以设置机器人定时发送消息,例如每天定时发送日报等。
  • 消息安全:可以通过设置密钥,对消息进行加密,确保消息的安全性。

我们可以实现监控shell脚本的告警功能,及时通知相关人员或群组,以便及时处理问题。接下来,我将介绍如何实现监控shell脚本结合钉钉机器人实现服务及服务器监控告警。

二、创建钉钉机器人:

1.在钉钉群聊里点击设置

2.在设置里点击机器人选项

在这里插入图片描述

3.再点击添加机器人

在这里插入图片描述

4.再点击选择自定义机器人

在这里插入图片描述

5.设置机器人名称、是否加密、是否限制ip、以及触发关键字

在这里插入图片描述

6.获取机器人的Webhook地址

(不要公布在外部网站上,泄露后有安全风险)
在这里插入图片描述
到这里你自定义的机器人就设置好了,如有不明可以参考钉钉官方文档。

三、编写监控脚本:

在服务器上创建一个shell脚本,用于监控服务或服务器的状态。
在脚本中添加相应的监控逻辑,例如检查服务是否正常运行、服务器负载是否过高等。
如果发现异常情况,可以使用curl命令将告警信息发送到钉钉机器人的Webhook地址。
使用curl发送告警信息:

1.代码编写

在监控脚本中,使用curl命令发送HTTP POST请求到钉钉机器人的Webhook地址。
在请求的数据中,包含告警信息的JSON格式,例如

#!/bin/bash

# 定义需要监控的端口列表(这里示例两个端口)
port_list="3306 46231"

# 定义接收通知的钉钉机器人的 Webhook URL
webhook_url="https://oapi.dingtalk.com/robot/send?access_token=xxxxx这里需要将xxxxxxxx替换为真实access_token"

#定义主机名称
zhujiname="我的服务器"

# 获取本机IP地址输出本机的ip地址
local_ip=$(hostname -I | awk '{print $1}')

# 遍历所有端口并检查其连接状态
for port in $port_list; do
    if ! nc -z localhost $port; then
        # 如果发现不正常连接,通过钉钉机器人发送通知消息
        curl -H "Content-Type: application/json" \
            -d '{
                "msgtype": "text",
                "text": {
                    "content": "服务器监控: Port '"$port"' is not active on ('"$zhujiname"') ('"$local_ip"') at '"$(date)"'"
                }
            }' $webhook_url
    fi
done

# 检查系统内存用量是否大于 90%
mem_used=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}')
if (( $(echo "$mem_used > 90" | bc -l) )); then
    # 如果内存用量过高,通过钉钉机器人发送通知消息
    curl -H "Content-Type: application/json" \
        -d '{
            "msgtype": "text",
            "text": {
                "content": "服务器监控: Memory usage is too high ('"$mem_used"'%) on ('"$zhujiname"') ('"$local_ip"') at '"$(date)"'"
            }
        }' $webhook_url
fi

# 检查系统磁盘使用情况是否大于 90%
disk_used=$(df -h / | awk '/\//{print $(NF-1)}')
if (( ${disk_used%\%} > 90 )); then
    # 如果磁盘使用情况过高,通过钉钉机器人发送通知消息
    curl -H "Content-Type: application/json" \
        -d '{
            "msgtype": "text",
            "text": {
                "content": "服务器监控: Disk usage is too high ('"$disk_used"') on ('"$zhujiname"') ('"$local_ip"') at '"$(date)"'"
            }
        }' $webhook_url
fi

2.解释主要与钉钉机器人联动的代码

# 如果发现不正常连接,通过钉钉机器人发送通知消息
        curl -H "Content-Type: application/json" \
            -d '{
                "msgtype": "text",
                "text": {
                    "content": "服务器监控: Port '"$port"' is not active on ('"$zhujiname"') ('"$local_ip"') at '"$(date)"'"
                }
            }' $webhook_url   #这里的$webhook_url 我上方已经定义webhook地址,上方content里的内容可以自行定义,如果设置了触发关键词就要填写,例如我的关键词设置了‘服务器监控’,就必须再加上关键词,否则不会触发脚本发送

3.钉钉官网代码

curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \
 -H 'Content-Type: application/json' \
 -d '{"msgtype": "text","text": {"content":"我就是我, 是不一样的烟火"}}'

四、设置定时任务

1.使用Cron或其他工具设置定时任务来定期运行监控脚本

crontab -e
*/10 * * * * /root/jiankong.sh

2.给脚本加执行权限

chmod +x jiankong.sh

五、测试和部署

运行监控脚本并确保能够正确发送告警消息
在这里插入图片描述

脚本执行成功,消息发送成功。

总结

以上就是shell脚本+钉钉机器人实现监控服务器的内容,本文主要讲述了钉钉机器人的创建方法以及结合shell脚本的使用,大家可以根据个人的需求自行创建属于自己的机器人,监控脚本只作为参考,你可以写出更优秀的脚本。

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

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

相关文章

MySQL表关联更新

背景: 有两张表,一张class信息表,一张student信息表,但student表里的信息存在错误,需要用class表中的信息去更新student表数据。 方法一: update student_info s set class_name (select class_name fr…

一本通12951917:装箱问题

不知道说什么废话好了 题目 装箱问题 描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品…

Spring 的依赖注入

Spring 的依赖注入 文章目录 Spring 的依赖注入每博一文案1. 依赖注入1.1 构造注入1.1.1 通过参数名进行构造注入1.1.2 通过参数的下标,进行构造注入1.1.3 不指定参数下标,不指定参数名字,通过自动装配的方式 1.2 set 注入 2. set注入的各种方…

uniapp 小程序 picker 日期时间段选择(精确到年月日时分+周几)

效果图&#xff1a; picker时间选择器 精确到年月日时分周几 需要引入moment.js&#xff0c;有可能引入后在项目内会报错&#xff0c;可以考虑把选择日期作为一个组件引入 1、timepage.vue组件封装 <template><view><picker mode"multiSelector" :va…

人才输送|捷码帮我走出求职迷茫期!

大家好&#xff0c;我是边文军。 很荣幸应余老师之邀&#xff0c;在这里和各位兄弟姐妹分享应聘青岛英哲低代码工程师的求职经历&#xff0c;希望能给大家提供点帮助。 01 自我介绍 先来做一个自我介绍吧&#xff01;我是计算机专业出身&#xff0c;学的移动应用开发专业。学…

【贪心算法part01】| 455.分发饼干、376.摆动序列、53.最大子序和

目录 &#x1f388;LeetCode455.分发饼干 &#x1f388;LeetCode376.摆动序列 &#x1f388;LeetCode53.最大子序和 &#x1f388;LeetCode455.分发饼干 链接&#xff1a;455.分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;…

决赛结束,颁奖在即:2023隐私计算大会暨“星河杯”隐私计算大赛颁奖典礼震撼来袭!

7月11日-12日&#xff0c;首届“星河杯”隐私计算大赛4个赛题共计37支团队陆续完成决赛评审&#xff0c;决出的大赛获奖团队代表将受邀出席7月26日在青岛星河湾酒店举办的2023隐私计算大会暨首届“星河杯”隐私计算颁奖典礼。 2023隐私计算大会暨首届“星河杯”隐私计算大赛颁奖…

上海市静安区财政局领导带队调研合合信息,政企共话科技创新

近日&#xff0c;上海市静安区财政局副局长应文婷一行赴市北高新园区&#xff0c;实地走访科技企业上海合合信息科技股份有限公司&#xff08;简称“合合信息”&#xff09;&#xff0c;了解公司技术创新成果及产业布局&#xff0c;倾听企业在发展过程中的政策需求。合合信息董…

【FPGA】Vivado 保姆级安装教程 | 从官网下载安装包开始到安装完毕 | 每步都有详细截图说明 | 支持无脑跟装

目录 &#xff08;如果你有安装包&#xff0c;可跳转至 Step5&#xff09; Vivado 介绍 Step1&#xff1a;进入官网 Step2&#xff1a;注册账号 Step3&#xff1a;进入下载页面 Step4&#xff1a;下载安装包 Step5&#xff1a;安装 Step6&#xff1a;等待软件安装完成 …

Linux--在vim中查看man手册中某个函数的库函数 !man 函数名

比如我用到fork函数&#xff0c;但是我不知道它的库函数&#xff0c;在不想退出vim的情况下&#xff0c;我们可以在命令模式下输入以下指令&#xff1a; !man fork 示例&#xff1a; 注&#xff1a;默认打开的是man手册最底部&#xff0c;需要往上翻才能找到库函数

中国农机自动化:靠补贴喂养还是真市场需求?

近年来&#xff0c;随着科技的快速发展和农业现代化进程的加快&#xff0c;中国农机自动化技术得到了广泛应用和推广。但高速的发展之下&#xff0c;不禁有人疑问&#xff1a;中国农机自动化&#xff1a;靠补贴喂养还是真市场需求&#xff1f; 政策补贴大力支持农机自动化引担忧…

Vue中值的传递(父传子,子传父,子父同步)

1.父组件->子组件传递数据 ①父组件通过 v-bind: 属性绑定的形式&#xff0c;把数据传递给子组件 ②子组件中&#xff0c;通过props接收父组件传递过来的数据 2.子组件->父组件传递数据 1.在子组件中&#xff1a; 在emits定义自定义事件通过触发事件来触发自定义函数&am…

天翎低代码平台构建的奥林巴斯管理系统

企业痛点&#xff1a; 奥林巴斯&#xff08;中国&#xff09;有限公司是一家主营工业、医疗和消费者市场的国际公司。随着集团业务的高速的发展&#xff0c;公司也不断的优化产品和服务&#xff0c;以创新之心与时俱进&#xff0c;公司管理层也深刻意识到&#xff0c;想让集团能…

wpf prism使用

目录 1.Nuget中安装prism框架&#xff1a; 2.改造程序启动入口 3.View和ViewModel自动关联 4.绑定 5.Command 6.Event Aggregator&#xff08;事件聚合器&#xff09;、消息通知 7.弹窗、对话服务 DialogService 8.Region区域 9.Navigation导航 10.module 模块 1.Nug…

java读取邮件标题时,突然报错Failed to load IMAP envelope

生产环境之前可以正常使用imap协议收取邮件&#xff0c;突然有一天报错Failed to load IMAP envelope&#xff0c;可以确定邮件服务器、账号密码、配置都是正确的&#xff0c;使用foxmail可以正常连接并成功收取邮件&#xff0c;因此可以推测java代码可能有兼容性问题&#xff…

翻遍200个网站,整理了这套CSDN最系统的网络安全学习路线

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…

MySQL第七次

1、 string类型数据的命令操作&#xff1a; 2、 list类型数据的命令操作&#xff1a; 3、 hash类型数据的命令操作&#xff1a; 4、Keys相关的命令操作 二、举例说明list和hash的应用场景 hash&#xff1a;电商购物车 以用户id为key&#xff0c;商品id为field&#xff0c;商品数…

知识图谱推理的学习逻辑规则(上)7.19+(下)7.20

知识图谱推理的学习逻辑规则 摘要介绍相关工作模型 &#xff08;7.20&#xff09;知识图谱推理逻辑规则概率形式化参数化规则生成器具有逻辑规则的推理预测器 优化E步骤M步骤 实验实验设置实验结果 总结 原文&#xff1a; 摘要 本文研究了在知识图谱上进行推理的学习逻辑规则…

Airbnb 引入 HTTP Streaming,网页性能得到大幅度提升

Airbnb 通过引入HTTP Streaming来提升网站的页面加载性能。他们将测试的每个页面&#xff08;包括主页&#xff09;的首次内容绘制&#xff08;First Contentful Paint&#xff0c;FCP&#xff09;时间降低了大约 100 毫秒。他们还最小化了后端慢查询对加载时间的影响。 Airbn…

机房监控教程:管理不求人,即学即用!

供电系统的可靠性直接影响到广电数据中心机房设备的正常运转&#xff0c;涉及信息存储、节目录制采编传输、影音数据等生产质量和播出质量。 为确保数据中心机房安全运行&#xff0c;实现对数据中心机房各系统设备的统一监控与有效管理&#xff0c;减轻机房维护人员工作负担&am…