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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 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日志并进行多维度分析。
相关文章
|
15天前
|
监控 测试技术 开发者
一行代码改进:Logtail的多行日志采集性能提升7倍的奥秘
一个有趣的现象引起了作者的注意:当启用行首正则表达式处理多行日志时,采集性能出现下降。究竟是什么因素导致了这种现象?本文将探索Logtail多行日志采集性能提升的秘密。
|
15天前
|
存储 数据采集 监控
阿里云DTS踩坑经验分享系列|SLS同步至ClickHouse集群
作为强大的日志服务引擎,SLS 积累了用户海量的数据。为了实现数据的自由流通,DTS 开发了以 SLS 为源的数据同步插件。目前,该插件已经支持将数据从 SLS 同步到 ClickHouse。通过这条高效的同步链路,客户不仅能够利用 SLS 卓越的数据采集和处理能力,还能够充分发挥 ClickHouse 在数据分析和查询性能方面的优势,帮助企业显著提高数据查询速度,同时有效降低存储成本,从而在数据驱动决策和资源优化配置上取得更大成效。
110 9
|
18天前
|
运维 监控 Cloud Native
一行代码都不改,Golang 应用链路指标日志全知道
本文将通过阿里云开源的 Golang Agent,帮助用户实现“一行代码都不改”就能获取到应用产生的各种观测数据,同时提升运维团队和研发团队的幸福感。
|
19天前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
29 5
|
1月前
|
存储 SQL 监控
|
1月前
|
自然语言处理 监控 数据可视化
|
1月前
|
JSON 监控 JavaScript
Node.js-API 限流与日志优化
Node.js-API 限流与日志优化
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
279 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
8天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
312 3