平时怎么分析日志?常用哪些命令?
五个经典回答示范
我的常用组合:grep 三板斧——grep -c 数量、grep -v 排除、-E 扩展正则;awk 统计——按字段计数汇总,如 awk '{print $1}' access.log | sort | uniq -c | sort -rn | head 找 Top IP;实时跟踪——tail -f 加 grep 过滤;journalctl 看服务日志按时间与优先级过滤。统计 5xx:awk '$9>=500' access.log 统计与占比一步出。
我讲三个实战场景命令:故障时段分析——sed -n '/13:00:00/,/13:05:00/p' 提取时间窗口;错误聚类——grep ERROR app.log | awk -F'Exception' '{print $2}' | sort | uniq -c | sort -rn | head 看异常类型分布;慢请求定位——awk '$NF>2' 取响应超 2 秒的请求聚合接口维度。进阶习惯:复杂分析直接上 Python 脚本处理,命令行做探索,两者边界是数据量与重复度。
资深视角:日志分析的能力分层。命令层——grep/awk/sed 是探索期的手术刀,快但要熟悉正则与字段结构;平台层——规模化后必然走向集中式:ELK 或 Loki 加结构化日志规范(JSON 格式、统一字段:时间、级别、traceid、业务标识),从 grep 文本进化为按字段检索与聚合;规范层——日志分级治理:什么级别记什么内容、采样与脱敏(身份证手机号不落日志)、保留周期合规。好的日志体系让平均故障定位时间(MTTR)降一个量级。
追问『日志太多看不过来』:先过滤后分析——时间窗、级别、关键字三层收窄;聚合统计优先于逐行读;『怎么追一次请求的完整链路』:traceid 串联——请求入口生成全链路透传,日志按 traceid 聚合;『日志时间对不上』:时区与时间同步检查——NTP 与统一 UTC 存储,展示层转本地。
『日志分析就是 vi 打开肉眼找,Ctrl+F 搜报错,文件太大就等等加载,实在不行让开发自己查。』——点评:GB 级日志 vi 打开是不可能的任务;『让开发查』放弃了运维的第一响应职责——日志分析是运维的基本功与价值所在。
- 打开 模拟练习,选择「运维/DBA」方向,限时 3 分钟作答本题。
- 对照上方答题框架,逐点检查:哪些要素没覆盖、哪里表达啰嗦。
- 用自己项目的真实经历替换框架中的占位内容,重讲一遍并录音回听。
这类题在真实面试中常被追问细节,
建议进入限时模式练一遍。