一、优化项1
在上一篇文章《业务服务器免装插件,使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1》中,使用rsync同步业务服务器日志文件有些异常日志文件过大,需要进行屏蔽处理
进行了脚本的优化,优化内容如下
1、只同步源服务器上当天的日志文件(日志文件名中有日期)
2、排除掉异常的日志文件,加到排除名单文件中
vi /opt/server_logfiles_rsync.sh
#!/bin/bash
LOCK=/var/log/logs_rsync_record.log
FILENAME_MONTH=`date +%m`
FILENAME_DAY=`date +%e`
echo "同步日期:" >> ${LOCK} 2>&1
echo `date '+%Y-%m-%d_%T'` >> ${LOCK} 2>&1
echo "================= logs Rsync starting===============================" >> ${LOCK} 2>&1
rsync --progress -avz --exclude-from='/opt/exclude-files.txt' --perms --chmod=ugo+r -og --chown=root:root -e "ssh -p 22" [email protected]:/data/*_${FILENAME_MONTH}_${FILENAME_DAY}_*.txt /datarsync/ >> ${LOCK} 2>&1
echo "================= logs Rsync Finished===============================" >> ${LOCK} 2>&1
vim /opt/exclude-files.txt
test1_05_27_2023.test2.txt
(图片点击放大查看)
二、优化项2
针对同步过来异常大小的日志,可以实现自动定时检测并推送告警
1、主要是针对要检测目录下的文件,如果超过500MB的阈值就进行告警
2、服务器需要通过堡垒机登录到SSH后台进行处理,钉钉告警消息中给出堡垒机的URL和SSH URI方便快速登录 具体脚本如下
vi /opt/monitor_files_size.sh
#!/bin/bash
# 监控目录和文件名
dir_path="/datarsync"
# webhook 地址(自行修改)
webhook_url="https://oapi.dingtalk.com/robot/send?access_token=2862f188988f60fbc377740cecc308bd46c17eCXXXXXXXXXXXaf83bfa84c4a52"
set_payload_file(){
cat > /opt/payload_result.json << EOF
{
"msgtype": "actionCard",
"actionCard": {
"title":"日志文件大小异常告警",
"text":"
##### 同步到GrayLog本地的日志文件大小异常告警 n
> ##### <font color=#67C23A> 【文件路径】</font> :<font color=#FF0000> template1 </font> n
> ##### <font color=#67C23A> 【文件大小】</font> :<font color=#FF0000> template2,请及时关注并排查</font> n
> ##### <font color=#67C23A> 登录堡垒机: https://192.168.31.170 进行处理</font> n
> ##### <font color=#67C23A> 复制此链接👇在浏览器打开调用SecureCRT登录: </font> n
> ##### <font color=#FF0000> ssh://yuanfan%40root%[email protected]:2222 </font> n
"
}
}
EOF
}
scan_file(){
for file in $dir_path/*; do
if [[ -f "$file" ]]; then
# 获取文件大小(单位:字节)
file_size=$(stat -c "%s" "$file")
file_size_mb=$((file_size/(1024*1024)))
# 判断文件大小是否超过 500MB
if (( $file_size > 524288000 )); then
# 发送告警到 webhook 机器人
message1="File:${file}"
message2="(${file_size_mb} MB),超过了500MB"
set_payload_file
sed -i "s^template1^$message1^g" /opt/payload_result.json
sed -i "s^template2^$message2^g" /opt/payload_result.json
response=$(curl -sS -H "Content-Type: application/json" -X POST -d @/opt/payload_result.json "${webhook_url}")
echo $message
if [ $? -eq 0 ]; then
echo "Alert sent successfully"
else
echo "Failed to send alert: ${response}"
fi
fi
fi
done
}
scan_file
(图片点击放大查看)
1、钉钉告警效果如下
(图片点击放大查看)
2、浏览器中复制链接,调用SecureCRT只需输入个人的堡垒机密码即可快速登录服务器
(图片点击放大查看)
(图片点击放大查看)
这里用的堡垒机为QAX堡垒机,仅做演示
Tips:Crontab定时任务设置
crontab -e
crontab -l
#每分钟同步一次
*/1 * * * * /opt/server_logfiles_rsync.sh
#每小时检测一次文件大小
0 */1 * * * /opt/monitor_files_size.sh
(图片点击放大查看)
原文始发于微信公众号(WalkingCloud):使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1【优化篇】
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论