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

文章目录

  • 前言
  • 一、监控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; doif ! 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_urlfi
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.mzph.cn/news/1654.shtml

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

相关文章

[爬虫]解决机票网站文本混淆问题-实战讲解

前言 最近有遇到很多小伙伴私信向我求助,遇到的问题基本上都是关于文本混淆或者是字体反爬的问题。今天给大家带来其中一个小伙伴的实际案例给大家讲讲解决方法 📝个人主页→数据挖掘博主ZTLJQ的主页 ​​ 个人推荐python学习系列: ☄️爬虫J…

架构训练营3:架构设计流程和架构师职责

架构师相关职责: 架构师是业务和技术之间的桥梁,架构师不能只顾技术,不懂业务,架构师很容易两头不讨好 三个核心能力: 判断:1业务理解力2.技术能力3.沟通能力 拆解:1技术深度2.技术宽度3.技术…

基于单片机指纹考勤系统的设计与实现

功能介绍 以51单片机作为主控系统;利用指纹采集模块存储打卡信息;12864显示当前考勤信息,时间 ;如果迟到 语音播报 您已迟到;按键进行注册指纹、删除指纹、设置当前时间和签到时间、查询打卡等;具有掉电保存…

利用Python和Selenium编程,实现定时自动检索特定网页,发现特定网页内容发生变化后,向管理员发送提醒邮件(一)

一、项目需求 要求爬取某单位网站,登录后台查看是否有新增“网友提问”,如果有新的提问,向特定邮箱发出提醒邮件。 二、项目分析 (一)判断是否可用爬虫爬取相关内容 首先查看该网站的robots.txt文件,发现…

JAVA开发(记一次504 gateway timeout错误排查过程)

一、问题与背景: 最近在发布一个web项目,在测试环境都是可以的,发布到生产环境通过IP访问也是可以的,但是通过域名访问就出现504 gateway timeout。通过postman去测试接口也是一样。ip和端口都可以通,域名却不行&…

JVM面试题总结

一.请简述对象的创建过程 对象的new字节码执行指令如下图 首先0指令new出一片内存空间,然后进行对象的初始化,初始化完成前变量都是初始值如m0 然后创建连接,t指向对象。 二.DCL单例要不要加volatile? DCL单例就是要懒汉式从创建…

SignalTap II 软件使用步骤

文章目录 前言一、SignalTap II是什么?二、使用步骤三、总结四、参考资料 前言 环境: 1、Quartus18.1 2、板子型号:原子哥开拓者2(EP4CE10F17C8) 要求: 能够使用SignalTap II进行片上调试。 一、SignalTap II是什么? S…

Docker部署Mysql数据库详解

目录 1. Docker部署Mysql 1.1 Mysql容器 1.1.1 创建Mysql容器 1.1.2 进入Mysql容器并登录Mysql 1.1.3 持久化数据 1.2 远程登录Mysql 1.2.1 修改root加密方式 1.2.2 在容器启动时配置加密方式为mysql_native_password 1.3 Mysql编码 1.3.1 Mysql编码问题 1.3.2 Mysql编码…

大模型开发(六):OpenAI Completions模型详解并实现多轮对话机器人

全文共8500余字,预计阅读时间约17~30分钟 | 满满干货(附代码),建议收藏! 代码下载点这里 一、 Completions与Chat Completions基本概念 经过海量文本数据训练的大模型会在全量语义空间内学习语法关系和表达风格,并通过某些微调过…

java学习路程之篇十、知识点、数组介绍、二维数组介绍、静态初始化、访问元素、遍历元素、动态初始化、内存图、数组常见问题

文章目录 01、数组介绍02、数组静态初始化03、数组元素访问04、数组遍历操作05、数组动态初始化06、数组内存图07、数组常见问题08、二维数组介绍09、二维数组静态初始化10、二维数组遍历11、二维数组动态初始化12、二维数组内存图 01、数组介绍 02、数组静态初始化 03、数组元…

Python爬虫学习笔记(一)————网页基础

目录 1.网页的组成 2.HTML (1)标签 (2)比较重要且常用的标签: ①列表标签 ②超链接标签 (a标签) ③img标签:用于渲染,图片资源的标签 ④div标签和span标签 &…

Dcat-admin使用 Alpine 双向数据绑定

介绍 Alpine.js 这东西真的轻量级,和vue相似,和 livewire 同一个作者,推荐大家使用,可以平替jquery 效果 实现 在 bootstrap.php 引入js Admin::headerJs([https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-y/alpinejs/3.9.0/…

在Windows下安装Anaconda平台

Anaconda介绍 安装Python的方法有很多,其中利用Anaconda来安装,是最为安全和便捷的方法之一。在Python中安装类库,各个类库之间可能存在相互依赖、版本冲突等问题。为了解决这个问题,Python社区提供了方便的软件包管理工具&#…

Swift 中的 Actors 使用以及如何防止数据竞争

文章目录 前言Actors 的基本原理Actor 是引用类型,但与类相比仍然有所不同 为什么会出现数据竞争如何防止数据竞争使用 async/await 访问数据防止不必要的暂停非隔离(nonisolated)访问为什么在使用 Actors 时仍会出现数据竞争?总结 前言 Actors 是 Swif…

mongodb,redis,mysql 区别

一、MySQL 关系型数据库。 在不同的引擎上有不同 的存储方式。 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。 开源数据库的份额在不断增加,mysql的份额页在持续增长。 缺点就是在海量数据处理的时候效率会显著变慢。 二、Mo…

CDA数据分析系01 anaconda

简介 数据处理集成包,不局限于python 创建一个新的environment conda create --name python34 python3.4 激活一个environment activate python34 # for windows conda的package管理 类似pip,conda install xxxx 查看已安装的python包 conda list…

如何用Three.js + Blender打造一个web 3D展览馆

作者:vivo 互联网前端团队- Wei Xing 运营活动新玩法层出不穷,web 3D炙手可热,本文将一步步带大家了解如何利用Three.js和Blender来打造一个沉浸式web 3D展览馆。 一、前言 3D展览馆是什么,先来预览下效果: 看起来像…

【电路原理学习笔记】第4章:能量与功率:4.5 稳压电源与电池

第4章:能量与功率 4.5 稳压电源与电池 电网采用交流电形式将电能从发电站传输给用户,这是因为交流电易于转换成适宜传输的高压和终端用户使用的低压。在远距离传输时,采用高电压传输的效率和效益要高得多。对于给定的功率,较高的…

蓝桥杯,我劝你不要参加的8个完美理由

蓝桥杯,是一个全国高校的IT技术比拼,如果你参加了,可能不止是刷题数量的剧增,还有你的软件人生 我劝你不要参加,因为如果你参加了,可能会有以下烦恼: 目录 1、会让你变得上进 2、会提前感受码…

http连接处理(中)(四)

2. 结合代码分析请求报文解析 上一节我们对http连接的基础知识、服务器接收请求的处理流程进行了介绍,接下来将结合流程图和代码分别对状态机和服务器解析请求报文进行详解。 流程图部分,描述主、从状态机调用关系与状态转移过程。 代码部分&#xff…