Linux系统应用日志问题排查的六大套路

简介: 场景一:过滤出关键字附近的日志因为通常时候我们用grep拿到的日志很少,我们需要查看附近的日志.套路: 按行号查看,过滤出关键字附近的日志首先,得到关键日志的行号,

场景一:过滤出关键字附近的日志


因为通常时候我们用grep拿到的日志很少,我们需要查看附近的日志.

套路: 按行号查看,过滤出关键字附近的日志

首先,得到关键日志的行号,

cat -n test.log | grep "error"  
复制代码

如得到"error"关键字所在的行号是102行。此时如果我想查看这个关键字前10行和后10行的日志:

cat -n test.log |tail -n +92|head -n 20
复制代码
  • tail -n +92 表示查询92行之后的日志
  • head -n 20 表示在前面的查询结果里再查前20条记录

显示行号,分页查看,使用空格翻页(使用more/less)

cat -n test.log | grep "error" | more
复制代码


场景二:查看指定时间段内的日志


由于应用日志太多,通常我们只想查看某个时间段的日志。

套路:

sed -n '/2020-02-20 17:00:/,/2020-02-20 17:10:/p' app.log
sed -n '/2020-02-20 17:00:00/,/2020-02-20 17:10:00/p' app.log
复制代码

这个需要注意的地方是17:00:00或者17:00必须出现过。如果没有任何日志出现,通过如下命令请先查看是否存在。

grep "2020-02-20 17:10:00" app.log
复制代码


场景三:查看日志中特定字符的匹配数目


我们有时候想查看下,某个错误出现了多少次。

套路:

统计整个文件出现的error次数。

grep "error" test.log | wc -l
复制代码

统计指定时间内,该日志文件中的出现错误的次数。

sed -n '/2020-02-21 00:00:/,/2020-02-21 17:10:/p' app.log  | grep 'error' | wc -l
复制代码


场景四:实时查看日志


我们上下游之间进行联调时,需要实时查看日志。比如接口是否被调用,消息有没有接收到,等等。

套路:

tail -f test.log
复制代码

默认只能查看10行数据,如果要看更多,比如说100行,可以通过如下命令。

tail -100f test.log
tailf -100 app.log
复制代码

我个人非常喜欢该命令,和上下游系统联调的时候,经常会用到。


场景五:查询最后100行,并查找关键字“error”


通常我们在服务器部署应用启动报错的时候,通常因为某些错误导致应用直接中断,可能会用到下面的命令,只查看最近的错误日志信息。

套路:

tail -n 100 test.log | grep 'error'
复制代码

关键字文字标红,你值得拥有。

tail -n 100 test.log | grep 'error' --color
复制代码

查询最后100行,并查找关键字“error”,文字标红,上下扩展两行

tail -n 20 test.log | grep '结果' --color -C2
复制代码

类似参数说明:

  • -A: 显示匹配行及前面多少行, 如: -A3, 则表示显示匹配行及前3行
  • -B: 显示匹配行及后面多少行, 如: -B3, 则表示显示匹配行及后3行
  • -C: 显示匹配行前后多少行, 如: -C3, 则表示显示批量行前后3行


场景六:日志文件超大时,使用vim查找


有时候文件内容太多,通过过滤不太好定位出具体的错误信息,我们不妨使用vim来查看。

套路:

先用vim命令打开文件

vim test.log 
复制代码

然后进行相应操作,比如说下面几个常规使用方法。

  • 跳到文本的最后一行:按“G”,即“shift+g”
  • 跳到文本第一行的第一个字符:先按两次“g”,
  • 跳转到当前行的第一个字符:在当前行按“0”。
  • 查找某个关键词:查找格式为英文冒号+问号+关键词,从最后往上查找关键字,点N往上。如:?com.common.exception

相信你学会了上面这六大套路,足够应对绝大部分应用日志问题排查了。


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
10月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
898 3
Linux系统禁用swap
|
10月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
1481 3
WGLOG日志管理系统是怎么收集日志的
WGLOG通过部署Agent客户端采集日志,Agent持续收集指定日志文件并上报Server,Server负责展示与分析。Agent与Server需保持相同版本。官网下载地址:www.wgstart.com
|
10月前
|
Prometheus 监控 Cloud Native
基于docker搭建监控系统&日志收集
Prometheus 是一款由 SoundCloud 开发的开源监控报警系统及时序数据库(TSDB),支持多维数据模型和灵活查询语言,适用于大规模集群监控。它通过 HTTP 拉取数据,支持服务发现、多种图表展示(如 Grafana),并可结合 Loki 实现日志聚合。本文介绍其架构、部署及与 Docker 集成的监控方案。
890 122
基于docker搭建监控系统&日志收集
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
964 3
Linux系统初始化脚本
|
11月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
695 18
|
10月前
|
Ubuntu
在Ubuntu系统上设置syslog日志轮替与大小限制
请注意,在修改任何系统级别配置之前,请务必备份相应得原始档案并理解每项变更可能带来得影响。
1200 2
|
10月前
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
1108 1
|
10月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1394 1