当前位置: 首页 > news >正文

LogAnalyzer实战:除了看系统日志,我这样用它监控Nginx访问和MySQL慢查询

LogAnalyzer实战:除了看系统日志,我这样用它监控Nginx访问和MySQL慢查询

当你第一次部署完LogAnalyzer,看着系统日志在网页上整齐排列时,可能会觉得这已经足够。但真正的高手知道,这只是冰山一角。本文将带你解锁LogAnalyzer的隐藏技能——如何将它变成Nginx访问日志和MySQL慢查询的监控利器。

1. 为什么要把应用日志接入LogAnalyzer

传统的日志分析方式往往让我们陷入几个困境:多台服务器日志分散难以集中查看;不同格式的日志需要不同的分析工具;历史日志检索效率低下。而LogAnalyzer恰好能解决这些问题:

  • 统一平台:所有日志集中存储和展示
  • 灵活过滤:支持基于时间、主机、优先级等多维度筛选
  • 可视化统计:自动生成图表展示日志趋势
  • 长期存储:数据库存储便于历史查询

特别是对于Nginx访问日志和MySQL慢查询这类结构化程度高的日志,经过适当配置后,LogAnalyzer能发挥出远超系统日志分析的威力。

2. Nginx访问日志监控实战

2.1 配置Nginx日志格式

首先需要确保Nginx的日志格式适合后续解析。推荐使用JSON格式,这样更容易被LogAnalyzer处理:

http { log_format json_combined escape=json '{' '"time_local":"$time_local",' '"remote_addr":"$remote_addr",' '"request":"$request",' '"status": "$status",' '"body_bytes_sent":"$body_bytes_sent",' '"http_referer":"$http_referer",' '"http_user_agent":"$http_user_agent",' '"request_time":"$request_time",' '"upstream_response_time":"$upstream_response_time"' '}'; access_log /var/log/nginx/access.log json_combined; }

2.2 使用Filebeat转发日志

相比直接使用rsyslog,Filebeat对Nginx日志的支持更好:

# filebeat.yml 配置示例 filebeat.inputs: - type: log paths: - /var/log/nginx/access.log json.keys_under_root: true json.add_error_key: true output.logstash: hosts: ["logstash_host:5044"]

然后在Logstash中配置将日志写入Syslog数据库:

# logstash.conf input { beats { port => 5044 } } filter { mutate { add_field => { "[syslog][priority]" => "info" "[syslog][facility]" => "local0" } } } output { jdbc { driver_class => "com.mysql.jdbc.Driver" connection_string => "jdbc:mysql://localhost:3306/Syslog" username => "rsyslog" password => "rsyslog" statement => [ "INSERT INTO SystemEvents (ReceivedAt, FromHost, SysLogTag, Message, Priority) VALUES (NOW(), ?, ?, ?, ?)", "%{host}", "nginx", "%{message}", "%{[syslog][priority]}" ] } }

2.3 LogAnalyzer中的高级分析技巧

日志进入LogAnalyzer后,可以利用其强大的过滤功能:

  • 流量异常检测:过滤status为5xx的请求
  • 慢请求分析:按request_time排序找出性能瓶颈
  • 热点URL统计:使用Message字段的正则匹配统计访问频次

提示:在LogAnalyzer中创建自定义视图时,可以利用SQL的WHERE条件实现更复杂的过滤,比如Message LIKE '%/api/%'来单独监控API请求。

3. MySQL慢查询日志监控方案

3.1 配置MySQL慢查询日志

首先确保MySQL开启了慢查询日志:

-- 设置慢查询阈值(秒) SET GLOBAL long_query_time = 1; -- 开启慢查询日志 SET GLOBAL slow_query_log = 'ON'; -- 指定日志文件路径 SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';

3.2 使用rsyslog处理慢查询日志

创建一个rsyslog配置文件专门处理MySQL慢查询:

# /etc/rsyslog.d/mysql-slow.conf module(load="imfile" PollingInterval="10") input(type="imfile" File="/var/log/mysql/mysql-slow.log" Tag="mysql-slow" Severity="warning" Facility="local1") if $syslogtag == 'mysql-slow' then { action(type="ommysql" server="localhost" db="Syslog" uid="rsyslog" pwd="rsyslog") }

3.3 在LogAnalyzer中分析慢查询

慢查询日志进入LogAnalyzer后,可以:

  1. 创建自定义视图过滤包含Query_time的条目
  2. 使用正则表达式提取关键信息:
    Query_time: (\d+\.\d+).*?SET timestamp=\d+;\s*(.*)
  3. 按查询时间排序找出最耗时的查询
  4. 统计高频出现的慢查询模式

4. 高级技巧:自定义日志解析与报警

4.1 使用LogAnalyzer的数据库视图

直接操作Syslog数据库可以解锁更多可能:

-- 创建视图统计每小时HTTP状态码分布 CREATE VIEW http_status_stats AS SELECT DATE_FORMAT(ReceivedAt, '%Y-%m-%d %H:00') AS hour, SUBSTRING_INDEX(SUBSTRING_INDEX(Message, '"status": "', -1), '"', 1) AS status, COUNT(*) AS count FROM SystemEvents WHERE SysLogTag = 'nginx' GROUP BY hour, status;

4.2 设置基于日志的报警

虽然LogAnalyzer本身没有报警功能,但可以通过定时查询数据库实现:

#!/bin/bash # 检查过去5分钟内是否有500错误 count=$(mysql -ursyslog -prsyslog Syslog -Nse " SELECT COUNT(*) FROM SystemEvents WHERE SysLogTag = 'nginx' AND Message LIKE '%\"status\": \"5%\"' AND ReceivedAt > DATE_SUB(NOW(), INTERVAL 5 MINUTE)") if [ "$count" -gt 0 ]; then # 发送报警通知 echo "$count 500 errors in last 5 minutes" | mail -s "Nginx Alert" admin@example.com fi

4.3 性能优化建议

当日志量很大时,需要注意:

  • 数据库索引优化

    ALTER TABLE SystemEvents ADD INDEX (ReceivedAt); ALTER TABLE SystemEvents ADD INDEX (SysLogTag);
  • 日志轮转策略

    • 定期归档旧日志
    • 考虑按业务拆分不同的日志源
  • 前端优化

    • 减少一次性加载的日志条数
    • 多用过滤条件缩小查询范围

5. 实战案例:电商日志监控系统

某电商平台使用LogAnalyzer构建了完整的日志监控体系:

  1. Nginx访问日志:监控API响应时间,自动标记慢于500ms的请求
  2. MySQL慢查询:识别未使用索引的查询,每周生成优化报告
  3. 应用错误日志:实时监控异常堆栈,第一时间通知开发团队

关键配置包括:

  • 使用Filebeat收集各节点日志
  • Logstash进行日志预处理和丰富
  • 每小时自动生成关键指标报告
  • 重要错误自动创建工单

这套系统帮助他们将故障平均修复时间(MTTR)从2小时缩短到15分钟,大幅提升了系统稳定性。

http://www.jsqmd.com/news/908160/

相关文章:

  • Haskell与TensorFlow:用函数式编程构建安全可靠的AI系统
  • 视频隐写术实战:位置与精度如何决定信息隐藏的成败
  • Java(分支结构)
  • 别再凭感觉选电阻了!手把手教你计算MOSFET驱动电阻的功耗与封装(附Excel计算模板)
  • 魔百盒M401A安装Home Assistant Supervisor实录:我踩过的那些坑与终极解决方案
  • 定点乘法避坑指南:DSP和嵌入式开发中精度丢失与溢出处理的实战经验
  • Web安全实战解析与核心技术落地指南
  • AI赋能客户体验:从智能客服到预测性服务的实战指南
  • 从CoinGecko拆解数据产品架构:工程实践与商业模式深度分析
  • 别再混淆了!用Python的sklearn手把手教你算多分类的Precision、Recall和Accuracy
  • 算法练手题目:Cable master
  • 神仙免费云服务器 - 阿贝云
  • 164-基于Python的甜点销售数据可视化分析系统
  • 2026 夹层锅、蒸汽夹层锅、不锈钢封头、行星炒锅、食品杀菌锅、压力容器反应釜厂家综合榜单:用料、工艺、耐用度多维度行业分析 - 海棠依旧大
  • Gemini实战:用AI写CI/CD脚本,提升研发效能
  • 别再让CPU扛下所有:手把手教你用ethtool配置网卡TSO/GRO,网络性能飙升指南
  • ♪苍穹外卖♪Day2 | 项目日记
  • Hermes Agent 完全使用指南:从安装到多平台部署的全流程教程
  • 战略落地难?试试分拆对
  • 别再让GUI卡死了!用PySide6的QThread+QMutex实现一个带暂停/恢复功能的下载器
  • 自动语音识别技术原理与实战:从MFCC到端到端模型
  • 线性回归假设深度解析:从理论到实践的完整诊断与修正指南
  • 智能文档信息提取:OCR与AI技术融合的实战指南
  • 项目介绍 MATLAB实现基于SVM-LSTM支持向量机(SVM)结合长短期记忆网络(LSTM)进行回归预测(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的鼓励是我
  • PyTorch实战:手把手教你用L1范数给CNN模型‘瘦身’(附完整代码与可视化)
  • 别再手动复制了!微信小程序+vantUI组件库,用npm一键安装的保姆级避坑指南
  • 别再模拟SPI了!STM32 CubeMX配置硬件SPI驱动1.28寸屏(GC9A01)保姆级教程
  • Claude Code + GLM-5 深度赋能测试:开发 8 大 Skill 构建 AI 测试助手集群
  • AI赋能商业社交:从精准连接到智能维护的完整指南
  • 别再硬编码了!用HTN框架让游戏AI自己找最优解(附Unity/Unreal实现思路)