shell脚本实现文件自动清理并推送钉钉机器人告警

简介: shell脚本实现文件自动清理并推送钉钉机器人告警

shell脚本实现文件自动清理并推送钉钉机器人告警

需求场景:

接上一篇shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警

当磁盘空间超过阈值时,这时需要人为去清理一些不需要的历史大日志文件,那能否做成自动化呢?

解决思路

1、在磁盘空间超过阈值时自动执行清理脚本即可

2、某台特定服务器,需要清理的历史大日志文件的目录是固定的,这时可以写文件清理脚本来实现

3、清理的文件名称、路径、大小最好能通过告警通知发送出来,所见及所知

比如需要清理一个MySQL服务器的历史binlog日志,调试修改后的最终脚本如下largesizefile_delete.sh

#!/bin/bash
# 监控目录和文件名
HOSTNAME=$(hostname)
HOSTIP=$(hostname -I)
dir_path="/var/lib/mysql"
filelists=`ls -ltrh $dir_path | grep binlog | head -n 3 | awk '{print $NF}'`
# webhook 地址
webhook_url="https://oapi.dingtalk.com/robot/send?access_token=XXXX"
set_payload_file(){
cat  > /opt/payload_result.json << \EOF
{       
"msgtype": "actionCard",
"actionCard": {
"title":"binlog日志文件清理通知",
"text":"
##### 服务器<font color=#67C23A>hostname</font>(<font color=#FF0000>hostip</font> )上MySQL binlog日志文件清理通知 \n
>  ##### <font color=#67C23A> 【文件路径】</font> :<font color=#FF0000> template1 </font> \n
>  ##### <font color=#67C23A> 【文件大小】</font> :<font color=#FF0000> template2</font> \n
>  ##### <font color=#67C23A>  此文件已经完成清理,请知悉</font> \n
"
}
}        
EOF
}
delete_file(){  
cd $dir_path
for file in $filelists; do
    if [[ -f "$file" ]]; then
      # 获取文件大小(单位:字节)
      file_size=$(stat -c "%s" "$file")
      file_size_mb=$((file_size/(1024*1024)))
      rm -f $file
      # 发送告警到 webhook 机器人
        message1="$dir_path/${file}"
        message2="${file_size_mb} MB"
        set_payload_file
        sed -i "s^template1^$message1^g" /opt/payload_result.json
        sed -i "s^template2^$message2^g" /opt/payload_result.json
        sed -i "s^hostname^$HOSTNAME^g" /opt/payload_result.json
        sed -i "s^hostip^$HOSTIP^g" /opt/payload_result.json
        response=$(curl -sS -H "Content-Type: application/json" -X POST -d @/opt/payload_result.json "${webhook_url}")
        if [ $? -eq 0 ]; then
            echo "Alert sent successfully"
        else
            echo "Failed to send alert: ${response}"
        fi
      fi
done
}
delete_file

模拟测试

在之前的/opt/disk_usage_check.sh 基础上

添加一行sh /opt/largesizefile_delete.sh 调用此脚本

(图片点击放大查看)

最终的效果如下

我先生成测试的几个binlog文件,模拟某个分区磁盘空间高的告警

(图片点击放大查看)

(图片点击放大查看)

sh /opt/disk_usage_check.sh进行测试

告警效果如下

(图片点击放大查看)

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
18天前
|
Shell Linux C++
【Shell 编程设计】 编写自己的清理后台的Shell脚本
【Shell 编程设计】 编写自己的清理后台的Shell脚本
38 1
|
18天前
|
Shell Linux
【Shell 命令集合 文件管理】Linux 清理临时文件 tmpwatch命令使用教程
【Shell 命令集合 文件管理】Linux 清理临时文件 tmpwatch命令使用教程
53 0
|
18天前
|
Shell
删除常规文件及隐藏文件shell脚本
删除常规文件及隐藏文件shell脚本
61 1
|
18天前
|
安全 机器人 Shell
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
68 0
|
18天前
|
传感器 人工智能 监控
智能耕耘机器人
智能耕耘机器人
54 3
|
8月前
|
人工智能 自然语言处理 机器人
智能电话机器人核心技术:自然语言处理
什么是自然语言处理? 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法.自然语言处理是一门融语言学、计算机科学、数学于一体的科学.因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别. 自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统.因而它是计算机科学的一部分. 自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域.
|
18天前
|
自然语言处理 机器人 Go
【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
|
18天前
|
传感器 人工智能 自然语言处理
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
|
18天前
|
传感器 机器学习/深度学习 算法
植保机器人具备智能感知与决策能力
植保机器人具备智能感知与决策能力
24 2