使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1【优化篇】

简介: 使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1【优化篇】

一、优化项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" root@192.168.31.170:/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%40192.168.31.200@192.168.31.170: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

(图片点击放大查看)

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
21天前
|
监控 Serverless 数据库
Serverless 应用引擎常见问题之biphon-education-配置了SLS后一直重启如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
28 5
|
25天前
|
运维 监控 数据挖掘
应用研发平台EMAS产品常见问题之将阿里后台的日志落到我们后台失败如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
2月前
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
231 1
|
2月前
|
Java 计算机视觉 Python
我的自描外挂制作日志——FPS类游戏的自瞄【优化改进1】
我的自描外挂制作日志——FPS类游戏的自瞄【优化改进1】
31 1
|
22天前
|
存储 SQL Serverless
Serverless 应用引擎常见问题之应用下的【应用事件】以及企业级特性下的【事件中心】没有日志如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
33 0
|
2月前
|
Java 计算机视觉
我的自描外挂制作日志——FPS类游戏的自瞄【优化改进2】
我的自描外挂制作日志——FPS类游戏的自瞄【优化改进2】
19 0
|
2月前
|
供应链 Java 测试技术
开发Java应用时如何用好Log
开发Java应用时如何用好Log
68 3
|
13天前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
18 1
|
14天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
21 1
|
18天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位