Linux日志怎么分析_从基础到进阶全流程讲透【教学】

发布时间 - 2025-12-19 00:00:00    点击率:
Linux日志分析是理解结构、定位线索、结合上下文快速判断根源的过程,核心在于知道看什么、在哪看、怎么看、怎么关联,并通过分类日志路径、三板斧筛选、解读信号及跨服务串联实现高效排障。

Linux日志分析不是“翻文件”,而是通过理解日志结构、定位关键线索、结合上下文快速判断问题根源的过程。核心在于:知道看什么、在哪看、怎么看、怎么关联。

一、搞清日志在哪、分哪几类

Linux日志分散在多个位置,不同服务写入不同路径,不能只盯/var/log/messages

  • 系统级日志:/var/log/syslog(Debian/Ubuntu)、/var/log/messages(RHEL/CentOS),记录内核、systemd、基础服务启动/错误
  • 服务专属日志:/var/log/nginx/access.log、/var/log/mysql/error.log、/var/log/secure(认证相关),必须查对应服务的配置确认实际路径
  • journald日志:systemd系统默认启用,用journalctl查,比文本日志更结构化(含PRIORITY、UNIT、SYSLOG_IDENTIFIER等字段)
  • 应用自定义日志:比如Java应用常写到/opt/app/logs/app.log,得看部署文档或ps -ef | grep java找参数

二、快速定位问题的三板斧

别从头滚日志。先用时间、级别、关键词锚定异常段落:

  • 按时间筛选:journalctl --since "2025-04-10 14:30:00" --until "2025-04-10 14:45:00"
  • 按服务/单元过滤:journalctl -u nginx.service -p err(只看nginx的error及以上级别)
  • 文本日志中精准搜:grep -i "connection refused\|timeout\|segfault\|oom" /var/log/messages | tail -20;用awk '{print $1,$2,$3,$NF}'快速看时间+末尾状态

三、读懂日志里的“人话”信号

日志不是乱码,每行都有模式。重点关注这几类信息:

  • 时间戳格式:syslog是“Apr 10 14:22:01”,journald是“2025-04-10 14:22:01”,时区不一致会导致误判,先用date和timedatectl check
  • 严重级别缩写:debug/info/notice/warn/err/crit/alert/emerg(数字7~0),但很多程序不规范——比如MySQL把慢查询记为Warning,实际要关注
  • 进程标识:[1234] 或 [nginx: worker process],可配合ps aux | grep 1234查进程状态
  • 典型错误模式:Permission denied(SELinux或权限)、No route to host(网络不通)、Connection refused(端口没监听)、Out of memory(OOM killer已杀进程,查dmesg)

四、进阶:串联+聚合+自动化

单点日志只能看表象。真问题往往跨服务、跨时间、跨主机:

  • 时间对齐查因果:比如Web返回502,先查nginx error.log里upstream timed out时间,再查同一秒前后backend服务日志是否有GC停顿或DB锁等待
  • 用awk/sed做轻量聚合:统计HTTP状态码分布:awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
  • 用rsyslog+ELK或Loki做集中分析:小团队可用rsyslog转发到一台中心日志机;中大型建议用Loki+Grafana,成本低、查起来快,支持正则提取标签
  • 写简单巡检脚本:每天凌晨用shell检查/var/log下各日志大小增长是否异常(突增可能意味着循环报错)、最近1小时ERROR行数是否超阈值,邮件告警

基本上就这些。日志分析能力不靠背命令,而靠建立“服务行为—日志输出—系统状态”的映射习惯。多看几次真实故障现场,比读十篇教程管用。


# mysql  # linux  # java  # centos  # nginx  # app  # access  # 端口  # ubuntu  # ai  # stream 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 微信推文制作网站有哪些,怎么做微信推文,急?  实例解析angularjs的filter过滤器  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  Android okhttputils现在进度显示实例代码  EditPlus 正则表达式 实战(3)  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Laravel集合Collection怎么用_Laravel集合常用函数详解  如何在万网开始建站?分步指南解析  潮流网站制作头像软件下载,适合母子的网名有哪些?  海南网站制作公司有哪些,海口网是哪家的?  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  如何用PHP快速搭建高效网站?分步指南  Laravel如何为API编写文档_Laravel API文档生成与维护方法  Laravel观察者模式如何使用_Laravel Model Observer配置  如何在IIS7中新建站点?详细步骤解析  Laravel如何创建自定义Facades?(详细步骤)  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  Laravel定时任务怎么设置_Laravel Crontab调度器配置  详解jQuery停止动画——stop()方法的使用  java中使用zxing批量生成二维码立牌  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  原生JS获取元素集合的子元素宽度实例  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  如何登录建站主机?访问步骤全解析  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  利用 Google AI 进行 YouTube 视频 SEO 描述优化  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  如何正确选择百度移动适配建站域名?  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  三星、SK海力士获美批准:可向中国出口芯片制造设备  如何为不同团队 ID 动态生成多个非值班状态按钮  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  浅谈redis在项目中的应用  如何基于云服务器快速搭建网站及云盘系统?  Laravel distinct去重查询_Laravel Eloquent去重方法  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  EditPlus中的正则表达式 实战(4)