前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用 shell 实现钉钉机器人告警推送

利用 shell 实现钉钉机器人告警推送

作者头像
Kevin song
发布2021-03-08 15:37:40
3.2K0
发布2021-03-08 15:37:40
举报

背景

在运维中需要对主机业务进行周期巡检,为减少人工巡检频率,降低业务停机风险,利用 shell 脚本对 Linux 系统服务运行状态进行主动巡检,异常服务通过钉钉机器人进行告警消息推送。

钉钉开发平台

https://developers.dingtalk.com/document/app/document-upgrade-notice

钉钉机器人设置

curl 介绍

curl是一个命令行访问URL的工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。可以用它构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的基本功能,curl还支持HTTPS/FTP/FTPS/TELNET/LDAP等协议。

curl 常用选项:

-v 详细输出,包含请求和响应的首部

-o test 将指定curl返回保存为test文件,内容从html/jpg到各种MIME类型文件

-O 把输出写到该文件中,保留远程文件的文件名

-C 在保存文件时进行续传

-x ip:port 指定使用的http代理

-c <file> 保存服务器的cookie文件

-H <header:value> 为HTTP请求设置任意header及值

-L 跟随重定向

-S 显示错误信息

-s 静默模式,不输出任何信息

-G 以get的方式发送数据

-f 连接失败是不显示http错误

-d 以post方式传送数据

curl 网站状态码

curl -I -m 15 -o /dev/null -s -w %{http_code} www.baidu.com

-I 仅测试HTTP头信息

-m 15 最多查询15s

-o /dev/null 屏蔽原有输出信息

-s 静默模式,不输出任何东西

-w %{http_code} 控制额外输出

curl 查看出口公网ip

curl myip.ipip.net

测试发送钉钉消息

curl -XPOST -s -L 'https://oapi.dingtalk.com/robot/send?access_token=885fef0ac3be012218955c12259747ae0a62db89e8ff4a62efffdf2aceee8ea8' -H 'Content-Type: application/json' -H "charset:utf-8" -d '{"msgtype": "text",

"text": {

"content": " This is a test message!"

}

}'

钉钉机器人消息

Linux系统服务状态钉钉告警脚本

cat dd.sh 
#!/bin/bash
#主机信息
name=`hostname`
ip=`ip a show |grep ens|grep inet |awk '{print $2}'|awk -F '/' '{print $1}'`
date=`date '+%Y-%m-%d-%H:%M:%S'`

#自定义接入钉钉函数
function SendMessageToDingding(){
        #钉钉机器人接口地址
        url="https://oapi.dingtalk.com/robot/send?access_token=885fef0ac3be012218955c12259747ae0a62db89e8ff4a62efffdf2aceee8ea8"

        #推送到钉钉
        curl -XPOST -s -L $url -H "Content-Type:application/json" -H "charset:utf-8"  -d "
        {
        \"msgtype\": \"text\", 
        \"text\": {
                 \"content\": \"监控主机名:$1\n主机IP: $2\n 异常服务:$3\n 巡检时间:$4\"           
                 },
         'at': {
                  'isAtAll': true
       }
    }"
}

#输入服务变量文件
cat /mnt/shell/service.txt | while read service
do
       stat=`systemctl status $service |grep Active|awk '{print $3}' |cut -c 2-8`
#判断服务状态
        if [ $stat != running ];then
#调用函数
SendMessageToDingding $name $ip $service $date
        fi
done

巡检服务文件

[root@elk-node1 shell]# cat  /mnt/shell/service.txt 
nginx
firewalld
filebeat
logstash

停止防火墙服务

systemctl    stop firewalld

执行脚本

钉钉机器人告警消息

计划任务

每天08:30 执行脚本

30  08   *   *  *  /usr/bin/bash /mnt/shell/dd.sh >> /tmp/dd.txt
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档