linux系统137服务报警,SHELL 调用钉钉机器人-之Linux 系统磁盘监控单个服务占用磁盘20%报警...

知识预热;python

(1).shell 发送post 请求接口;linux

function checkmountchj(){

mountpath="/chj"

if [ ! -d ${mountpath}  ]

then

runenv=${RUNTIME_ENV}

ip=$(hostname -i)

apiurl="http://api域名/image/init/v1"

echo $runevn $ip

/bin/curl ${apiurl} -X POST -H "Content-Type:application/json" -d "{\"run_type\":\"${runenv}\",\"instanceip\":\"${ip}\"}"

else

echo "$rundate磁盘检查成功"

fi

}

checkmountchj

1.运维和钉钉机器人背景;web

如今企业面向工具化钉钉提供了人性化智能化的优质服务,运维过程当中不免会出现各类报警渠道接入门槛比较高,须要各类封装接口或者封装sdk,由此引出钉钉报警,运维人员shell 脚本基本大众化,都能按照本身的需求进行开发;shell

2.钉钉自定义机器人(webhook)json

(1).在机器人管理页面选择“自定义”机器人,输入机器人名字并选择要发送消息的群。若是须要的话,能够为机器人设置一个头像。点击“完成添加”,完成后会生成Hook地址,以下图:api

80c339e3db4d31e3021960d43e2b3feb.png

点击“复制”按钮,便可得到这个机器人对应的Webhook地址,其格式以下:生成 access_token 认证惟一标识,每个自定义机器人都不同;bash

https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx

(3).使用自定义机器人服务器

获取到Webhook地址后,用户能够向这个地址发起HTTP POST 请求,便可实现给该钉钉群发送消息。注意,发起POST请求时,必须将字符集编码设置成UTF-8。markdown

当前自定义机器人支持文本 (text)、链接 (link)、markdown markdown)、ActionCard、FeedCard消息类型**,你们能够根据本身的使用场景选择合适的消息类型,达到最好的展现样式。app

自定义机器人发送消息时,能够经过手机号码指定“被@人列表”。在“被@人列表”里面的人员收到该消息时,会有@消息提醒(免打扰会话仍然通知提醒,首屏出现“有人@你”)。

当前机器人尚不支持应答机制 (该机制指的是群里成员在聊天@机器人的时候,钉钉回调指定的服务地址,即Outgoing机器人)。

(4).测试自定义机器人

经过下面方法,能够快速验证自定义机器人是否能够正常工做:

Linux 使用命令行工具curl

curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \

-H 'Content-Type: application/json' \

-d '{"msgtype": "text",

"text": {

"content": "我就是我, 是不同的烟火"

}

}'

(5).查看自定义机器人发送结果; (由于我测试调用两次因此出现)

5d499fd1eb4ab96c2f127ffbe1dd2cfa.png

(6).测试消息类型及数据格式;

{

"msgtype": "text",

"text": {        "content": "我就是我, 是不同的烟火@156xxxx8827"

},

"at": {

"atMobiles": [

"156xxxx8827",

"189xxxx8325"

],

"isAtAll": false

}

}

8a076ab1cd16dfdfb63048b1efd2fed4.png

linux 测试方法 curl 进行测试命令;

curl 'https://oapi.dingtalk.com/robot/send?access_token=你的token'  -H "Content-Type:application/json"  -d "{\"msgtype\": \"text\",

\"text\": {

\"content\": \"服务器异常,请快速处理下\"

},

\"at\": {

\"atMobiles\": [

\"183xxx50xx\",

],

\"isAtAll\": false

}

}"

钉钉结果以下;(标红部分为钉钉机器人群的名称)

c980c171fd1ae2068a97f0ffa0e69cd8.png

(4).实战磁盘监控脚本案例;

#!/bin/bash

#author:lijx

"

1.定义日志路径,脚本须要变量参数,执行系统指标过滤;

"

logPath="/chj/logs"

envs=$(ls -lrt /chj/logs/ |awk '{print $9}'|tr -d "\r"|grep -v "^$"|grep -v "logdelrecord"|grep -v "filebeat"|grep -v "rsyslog")

DiskCapacity=$(df -m /chj/ |awk 'NR==2 {print $2}')

thresholdValue=$(echo "$DiskCapacity * 0.15" | bc  |awk -F "." '{print $1}')

runLog="/var/log/app_check_run.log"

start_current_date=`date "+%Y-%m-%d %H:%M:%S"`

function alarmdingdingDisk(){

"

1.经过curl 发送post请求到叮叮机器人

2.将环境以及应用信息传递到content 中;

"

conTent=$(echo "k8s应用磁盘报警 k8s宿主机:$3 环境: $1 应用名称: $2" 时间: ${start_current_date})

apiurl="https://oapi.dingtalk.com/robot/send?access_token=此处须要跟进实际状况生成"

/bin/curl $apiurl -X POST -H "Content-Type: application/json" -d "{\"msgtype\": \"text\",\"text\": {\"content\": \"$conTent\"}

}"

}

function traverseDir(){

"

1.动态获取系统环境列表,磁盘chj空间大小;

2.使用bc 计算磁盘容量和当前占用单个文件大小;

3.进行比较,计算知足单个应用占用/chj 20%条件将发送报警

"

for env in $envs

do

appName=$(/bin/du -sm /chj/logs/$env/* |awk '{print $2}' |awk -F "/" '{print $NF}'|tr -d "\r")

for app in $appName

do

appDiskValue=$(/bin/du -sm /chj/logs/$env/$app|/bin/awk '{print $1}')

if [ $appDiskValue -ge $thresholdValue ]

then

hostIp=$(hostname -I |awk '{print $1}')

alarmdingdingDisk $env $app $hostIp

else

testing="this is test"

echo "未发现应用,占用/chj/磁盘20%"

echo "检查环境: $env 检查应用名称: $app 文件大小:${appDiskValue}M 当前运行时间: $start_current_date" >> $runLog

fi

done

done

}

traverseDir

(5).验证日志结果;

cdfc66e17f85a46e46015e6075d5cb6d.png

(6).查看叮叮机器人群内容;

2151b5209ff6642d13a8696dcbdca207.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值