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

审核编辑:汤梓红

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

    关注

    206

    文章

    27031

    浏览量

    201383
  • 系统监控
    +关注

    关注

    0

    文章

    18

    浏览量

    10841
  • 脚本
    +关注

    关注

    1

    文章

    372

    浏览量

    14632

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

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

收藏 人收藏

    评论

    相关推荐

    智能清洁机器人

    自动蔽障,自动清扫的功能。清洁机器人是实现智能清扫的主题部分,我们将要做到的是:完成机械结构的设计与制作、硬件电路的设计及实现、底层软件的编写以及系统调试、智能手机蓝牙通讯技术的研究及实现、清洁
    发表于 11-08 22:30

    基于树梅派的网络监控机器人Verybot

    v.youku.com/v_show/id_XNjYxNjk1MDQ4.html 这个机器人相关的技术资料可以看我的博客,上面的内容目前正不断更新 blog.csdn.net/u013474552
    发表于 01-21 21:17

    智能语音机器人

    ` 本帖最后由 星希望532 于 2015-12-2 20:06 编辑 作品名称:基于微型操作系统的智能多平台控制语音机器人http://v.youku.com/v_show
    发表于 12-02 19:08

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

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

    【深圳】诚聘机器人硬件工程师

    猎头岗位:机器人硬件工程师-智能硬件(年薪:36-45万)工作职责:1、编写技术文档和BOM资料等;2、负责传感器采集、电机驱动、机器人主控等硬件电路的原理图完善设计、PCB绘制;3、设计嵌入式
    发表于 01-17 11:57

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

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

    零基础玩转工业机器人

    介绍DELTA并联机器人的基础知识系统设计原理,并结合ABB和FANUC机器人,介绍了工业生产中的常用并联机器人机型与编程操作。本书依据学
    发表于 10-29 17:03

    机器人系统是什么?

    机器人的移动通常是从管理机器人总体任务进度的中央处理器发出位置变化请求时开始的。导航系统通过制定行程计划或轨迹以开始执行位置变化请求。行程计划需考虑可用路径、已知障碍位置、机器人能力及
    发表于 09-10 10:44

    智能监控机器人该怎么设计?

    智能监控机器人是近年来机器人应用工程中一项前沿性的题目,智能化探测小车是智能行走机器人的一种。智能监控
    发表于 10-14 07:37

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

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

    未来家庭的监控机器人要具备什么特征?

    未来家庭的监控机器人应该要具备以下特征:1.拟人化设计,具有可爱的操作接口让很容易从远 端监控.2.监控
    发表于 10-30 02:25

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

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

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

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

    如何实现自动打卡

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

    PDF——工业机器人技术及应用

    的编程与调试;第6章介绍了工业机器人的典型应用,对几类典型工业机器人系统组成、周边设备及工作站布局做了较为详细的介绍;第7章介绍了工业机器人的管理与维护。本书每章最后都设计了思考与练
    发表于 10-16 21:21