0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

系统监控相关知识及钉钉机器人告警脚本编写

jf_TEuU2tls 来源:CSDN技术社区 作者:雪龙翔宇 2022-11-18 09:18 次阅读

前言

大家好,这里是浩道linux,主要给大家分享linux、python网络通信相关的IT知识平台。

今天浩道跟大家分享硬核监控干货,一文带大家学习系统监控相关知识及钉钉机器人告警脚本编写!

一、背景

当前不同的公司服务器较多,在项目开发、部署和演示过程多次遇到服务器无故宕机的情况,另外各服务器上部署的中间件也存在无故下线的情况,如果出现以上情况就特别棘手,而技术人员无法第一时间感知。

二、操作说明
1、检查服务器curl命令是否可用


(1)调用相关命令进行检查

#查看当前版本
curl--version
#检查网站是否可达,若html显示在屏幕上则证明命令可用
curlhttp://www.baidu.com

(2)如果无法调用,则可参照文章进行curl安装

https://blog.csdn.net/qq_38215042/article/details/108768839

2、shell文件配置

(1)当前是将服务器CPU相关监听和中间件的Shell脚本文件分开设置的,主要是考虑到文件过大,在配置修改和定时命令执行时出现问题不好排查,执行时间也会比较耗时。


(2)在相应的shell脚本文件中,已经将配置可能要修改点作了标记,可根据实际情况进行针对性修改。


(3)在shell脚本修改完成后,查看脚本是否执行权限,没有则调用命令进行设置

#将sh文件添加可执行权限
chmodu+xdingtalk.sh
#或设置全部权限
chmod777dingtalk.sh

(4)权限设置后,可先调用执行一下,检查下是否有格式问题

./dingtalk.sh或相对路径执行./home/admin/server/dingtalk.sh

3、定时任务创建
定时任务常用命令如下

crontab-u//设定特定用户的定时服务
crontab-l//列出当前用户定时服务内容
crontab-r//删除当前用户的定时服务
crontab-e//编辑当前用户的定时服务
在设定编辑之前都建议列出服务查看一下:crontab -l


#对cron定时任务列表进行编辑
crontab-e
#i进行修改,ESC键退出编辑,;wq保存并退出
#每五分钟执行一次
*/5****shxx.sh
#每半小时执行一次
*/30****shxx.sh
#每天的15时25分执行一次
2515***shxx.sh

#中间件脚本文件
*/5****sh/home/admin/server/dingtalk.sh
#服务器脚本文件
*/5****sh/home/admin/server/dingtalk_server.sh

命令说明

ebfbd2b8-66d2-11ed-8abf-dac502259ad0.png

4、定时任务执行情况检查

#进入定时任务log下
cd/var/log
#查看定时任务是否调用
tail-fcron

三、Shell配置说明
1、服务器CPU、内存、磁盘监控脚本

#!/bin/bash

#【配置1】要@的人员手机号码,此处的手机号必须和钉钉上的一致
user="17858888888"
#user1="13888888888"
#user2="XXXX"

#【配置2】网卡配置(可选),此处配置的是想要展示的ip地址,使用ifconfig查看inet对应的ip
ifconfig="eth0"

#主机信息
Date=`date+%Y-%m-%d`
Date_time=`date"+%Y-%m-%d--%H:%M:%S"`
Host_name=`hostname`
IP_addr=`ifconfig$ifconfig|grep"inet"|awk'NR==1{print$2}'`

#获取cpu使用率
cpuUsage=`top-b-n1|fgrep"Cpu(s)"|tail-1|awk-F'id,''{split($1,vs,",");v=vs[length(vs)];sub(/s+/,"",v);sub(/s+/,"",v);printf"%d",100-v;}'`

#获取磁盘使用率
data_name="/"
diskUsage=`df-h|grep-w$data_name|awk-F'[%]+''{print$5}'`

#统计内存使用率
mem_used_persent=`free-m|awk-F'[:]+''NR==2{printf"%d",($2-$7)/$2*100}'`

#【配置3】钉钉webhook
Dingding_Url="https://oapi.dingtalk.com/robot/send?access_token=xxxxxx"


#【配置4】服务监听-发送钉钉消息,消息内容可修改
#at中atMobiles为数组结构,可添加上面配置的user1、user2等,可根据不同的业务@指定的人员,isAtAll是否@所有人设置
functionSendServerMessageToDingding(){
curl${Dingding_Url}-H'Content-Type:application/json'-d'{
"msgtype":"text",
"text":{"content":"服务监控:
服务器资源耗尽警告,请尽快处理!
巡查时间:'${Date_time}'
IP地址:'${IP_addr}'
资源状况如下:
【CPU可用:'${cpuUsage}'%】
【磁盘使用率:'${diskUsage}'%】
【内存使用率:'${mem_used_persent}'%】"},
"at":{"atMobiles":['${user}'],"isAtAll":false}
}'

}

#【配置5】此处可根据服务器的实际情况,进行阈值调整
functionserverCheck(){
if[["$cpuUsage">75]]||[["$diskUsage">90]]||[["$mem_used_persent">90]];
then
SendServerMessageToDingding
fi
}
serverCheck

2、中间件监控脚本

#!/bin/bash

#【配置1】中间件端口设置
Port_Nginx="80"
Port_MySQL="3306"
#...此处省略多个端口,可添加该服务器上的其他中间件配置
#Port_Nacos="xxx"
#Port_ElesticSearch="xxx"

#【配置2】网卡配置(可选),此处配置的是想要展示的ip地址,使用ifconfig查看inet对应的ip
ifconfig="eth0"

#【配置3】要@的人员手机号码,此处的手机号必须和钉钉上的一致
user="17858888888"
#user1="13888888888"
#user2="XXXX"

#主机信息
Date=`date+%Y-%m-%d`
Date_time=`date"+%Y-%m-%d--%H:%M:%S"`
Host_name=`hostname`
IP_addr=`ifconfig$ifconfig|grep"inet"|awk'NR==1{print$2}'`

#【配置4】中间件监控项
Nginx_status=`netstat-lntup|grep-w"$Port_Nginx"|wc-l`':Nginx'
MySQL_status=`netstat-lntup|grep-w"$Port_MySQL"|wc-l`':MySQL'
#...此处省略多项,按照自己需求配置即可,同上
#flink_status=`netstat-lntup|grep-w"$Port_flink"|wc-l`':flink'

#【配置5】钉钉webhook,此处为添加的钉钉机器人webhook,当前为已经添加使用的webhook
Dingding_Url="https://oapi.dingtalk.com/robot/send?access_token=xxxxxxx"

#【配置6】应用挂机-发送钉钉消息,消息内容可修改
#at中atMobiles为数组结构,可添加上面配置的user1、user2等,可根据不同的业务@指定的人员,isAtAll是否@所有人设置
functionSendDownMessageToDingding(){
curl-s"${Dingding_Url}"-H'Content-Type:application/json'-d"
{
'msgtype':'text',
'text':{'content':'服务监控
$1服务down,请尽快处理!
巡查时间:${Date_time}
IP地址:${IP_addr}
'},
'at':{'atMobiles':['${user}'],'isAtAll':false}
}"

}

#【配置7】应用恢复-发送钉钉消息,消息内容可修改
#at中atMobiles为数组结构,可添加上面配置的user1、user2等,可根据不同的业务@指定的人员,isAtAll是否@所有人设置
functionSendUpMessageToDingding(){
curl-s"${Dingding_Url}"-H'Content-Type:application/json'-d"
{
'msgtype':'text',
'text':{'content':'服务监控
$1服务已恢复正常运行!
巡查时间:${Date_time}
IP地址:${IP_addr}
'},
'at':{'atMobiles':['${user}'],'isAtAll':false}
}"

}

#【配置8】logpath,将消息记录到指定日志目录
log_path="/home/logs"

#【配置9】遍历--此处要配置【中间件】服务的信息,根据情况在in{$xxx,$yyy.....}中进行添加中间件
foriin{$Nginx_status,$MySQL_status}
do
statcode=`echo$i|awk-F':''{print$1}'`
name=`echo$i|awk-F':''{print$2}'`
old_statcode=`head-n1${log_path}/${name}.log`
if[$statcode-lt1]
then
if[$old_statcode-lt1]
thenecho"[ERROR]$nameisstillstopped!Status_code=$statcode"
else
echo"[ERROR]$nameisstopped!Status_code=$statcode"
SendDownMessageToDingding$name
fi
else
if[$old_statcode-ge1]
thenecho"[INFO]$nameisstillrunningnormally!Status_code=$statcode"
else
echo"[INFO]$namereturnedtonormalfunction!Status_code=$statcode"
SendUpMessageToDingding$name
fi
fi
echo$statcode>${log_path}/${name}.log
done

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    210

    文章

    28068

    浏览量

    205765
  • 系统监控
    +关注

    关注

    0

    文章

    18

    浏览量

    10880
  • 脚本
    +关注

    关注

    1

    文章

    385

    浏览量

    14810

原文标题:【监控肝货】系统监控及钉钉机器人告警脚本

文章出处:【微信号:浩道linux,微信公众号:浩道linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【KittenBot机器人试用申请】搬运机器人

    项目名称:搬运机器人试用计划:希望申请本套件,用它来制作搬运机器人。拿到第一步,学习该主控芯片和它的库函数;第二步,学习超音波模块,直流电机和步进电机,舵机和WiFi相关知识;第三步,
    发表于 07-10 09:42

    玩 High API 系列之:实现Ding功能

    。当然我们还可以通过邮件的方式通知到接收人。只需开通邮件推送服务,调用BatchSendMail API,就可以快速将邮件通知给多达10000。通过阿里云的API在自己的APP中实现和Ding
    发表于 02-05 12:17

    AliOS Things 3.0应用笔记:摄像头配网 + 群通知 + 天气显示

    的AliOS-Things源码路径。更改机器人的token更改http/http_request.c中的DINGTALK_TOKEN为你的
    发表于 10-16 13:30

    请问有没有人用过LABVIEW与机器人交互的?

    有没有大佬搞过自定义机器人推送消息的,WEBHOOK这么都搞不定,现在急需要用,跪谢了。
    发表于 12-07 11:43

    关在和企业微信上使用AI视频面试——AI得贤招聘官操作说明

    。其包含一键发布、简历库集合查重、AI简历解析、远程实时视频面试、AI视频面试、AI面试聊天机器人、AI面试电话机器人、编程能力评估系统、在线考试系统、背景调查服务等,用AI和RPA技
    发表于 03-07 19:30

    如何实现自动打卡

    看这篇文章的朋友想必都是公司使用考勤打卡的,这里直接开门见山讲述如何实现自动打卡。需要留公司一部旧安卓手机,安装
    发表于 09-14 08:09

    用于自动钻铆系统滑块式送模块设计与研究

    针对工业机器人平台自动钻铆系统中自动送难的问题,介绍了一种能够为自动钻铆机自动逐个输送铆钉的滑块式送模块。铆钉在从供管道到吹
    发表于 03-27 16:07 3次下载
    用于自动钻铆<b class='flag-5'>系统</b>滑块式送<b class='flag-5'>钉</b>模块设计与研究

    【快讯】云徙受邀出席未来组织大会,并荣获新零售MaX奖

    快讯】今日,云徙CTO李元佳受邀参加未来组织大会,并出席新零售100圆桌论坛。会上,云徙荣获新零售MaX奖。云徙致力于提供数字营销
    发表于 08-27 21:29 362次阅读

    升级与阿里云全面融合,确保“云一体”战略全面落地

    9月27日,阿里巴巴公布新一轮战略部署:升级为大钉事业部,与阿里云全面融合,并整合阿里集团所有相关力量,确保“云一体”战略全面落地。
    的头像 发表于 09-28 09:30 1839次阅读

    蓝凌、携手,用“云一体”赋能更多中国企业的数字化转型

    1月14日,6.0发布,宣布用户数突破4亿、组织数超过1700万;迎来阿里“云一体”战略后最重要的版本升级。 阿里云智能总裁张建锋
    的头像 发表于 01-20 09:06 1684次阅读

    气动打枪是利用压缩空气进行打的一种枪式打工具

    气动打枪是利用压缩空气进行打的一种枪式打工具,是由气缸和出枪头、扳机、气缸盖、活塞等组件组合而成的,气动打枪的气密性要求一般来说是
    发表于 03-03 14:47 3724次阅读

    调用REST端口实现通知

    已经成为很多企业日常工作必备的交流软件,知行软件也在通知上做出了一些努力,利用知行之桥的REST端口调用
    的头像 发表于 02-18 10:02 1566次阅读
    调用REST端口实现<b class='flag-5'>钉</b><b class='flag-5'>钉</b>通知

    AI具备文生文、文生图、应用生成等AI能力

    AI具备文生文、文生图、应用生成等AI能力 此前在4月18日的2023春峰会上宣布全面接入通义千问大模型,并实际演示了AI部分能力
    的头像 发表于 05-31 18:50 1717次阅读

    从AI玩具到AI工具,大模型改造的200天

    对此,在阿里云栖大会期间,「甲子光年」专访了首席产品官齐俊生,深入了解了过去200多天里的AI布局与AI产品观。
    的头像 发表于 11-12 11:36 1047次阅读
    从AI玩具到AI工具,<b class='flag-5'>钉</b><b class='flag-5'>钉</b>大模型改造的200天

    微软、宣布达成产品级合作

    2024年1月9日,2024新品发布会在杭州召开,发布7.5版本,推出基于70万家企业需求共创的AI助理产品,推动低门槛使用 AI,人人都能创造AI 助理。同时,
    的头像 发表于 01-10 09:59 466次阅读