跳转至

Linux 系统日志之深入解析

1、系统默认日志

在Linux中,系统默认日志的位置通常位于/var/log目录下。这个目录包含了各种日志文件,每个文件都记录了不同类型的信息。以下是/var/log目录下一些重要的日志文件及其简要描述:

1.1 文件

  • message 文件存储了系统启动和关闭的事件、硬件和设备的状态变化、网络事件、系统错误和警告等。ubuntu在系统配置中默认关闭了message的显示,如果需要的话可以删除/etc/rsyslog.d/50-default.conf文件内关于messages的注释后重启日志服务,恢复显示
  • alternatives.log 文件记录了使用系统中管理多个软件版本工具时产生的日志
  • auth.log 文件记录了系统身份验证和授权相关活动的日志文件
  • btmp 文件记录了所有失败的登录尝试信息
  • dmesg 文件记录了系统开机内核自检的信息,使用dmesg命令查看
  • kern.log 文件记录了内核产生的日志,有助于在定制内核时解决问题。
  • lastlog 文件记录了每个用户最近的登录事件
  • syslog 文件通常会记录启动和关闭事件、系统错误、安全事件、网络活动、内核消息等。它是通过系统日志守护进程(rsyslog 或 syslog-ng)收集和管理的。
  • ubuntu-advantage-timer.log 文件记录了与商业Ubuntu Advantage 服务定时任务(timer)相关的日志信息
  • wtmp 文件记录了登录注销以及关机信息的日志(同样不能用vim查看,使用last命令)
  • bootstrap.log 文件记录了系统引导(bootstrap)过程中的一些关键信息。这个文件通常包含了系统启动时的日志,例如内核加载、初始化进程、硬件检测等。
  • cloud-init.log 文件记录了 cloud-init服务在初始化过程中的所有活动。这包括它读取的数据源、应用的配置、执行的命令等。如果你遇到云实例启动问题或配置问题,查看此日志文件通常是一个很好的起点。
  • dpkg.log 文件记录了安装或dpkg命令清除软件包的日志。
  • faillog 文件记录了用户登录失败信息。此外,错误登录命令也会记录在本文件中。
  • ubuntu-advantage.log 文件记录了是商业Ubuntu Advantage服务的日志文件,提供了一系列针对Ubuntu系统的增值功能,如基础设施支持、安全更新、合规性保证等

2 日志级别

根据日志信息的重要程度不同,分为不同的级别 数字级别越小,优先级越高,消息越重要

级别 英文表示 意义

  • 0 EMERG(紧急) 导致主机系统不可用的情况
  • 1 ALERT(警告) 必须马上采取解决措施
  • 2 CRIT 严重 比较严重的情况
  • 3 ERR 错误 运行出现错误
  • 4 WARNING 提醒 提醒用户的重要事件
  • 5 NOTICE 注意 不会儿影响系统,提醒用户
  • 6 INFO 信息 一般信息
  • 7 DEBUG 调式 程序调式
  • 8 None 没有 不做记录

3 查看和解析日志文件:

当我们查看和解析Ubuntu中的日志文件时,通常会使用命令行工具,如cat、tail、grep等工具。

这些工具可以帮助我们快速定位和分析日志文件中的关键信息

以下是一些示例,展示如何使用这些工具来查看和解析/var/log/syslog文件:

3.1、查看整个日志文件

#使用cat命令可以查看整个日志文件的内容:
cat /var/log/syslog

3.2、查看日志文件的最后几行

使用tail命令可以查看日志文件的最后几行,通常用于监视实时日志:

# 查看最后100行  
tail -n 100 /var/log/syslog  

# 实时查看新添加的日志
tail -f /var/log/syslog 

3.3、搜索特定的日志条目

使用grep命令可以搜索包含特定关键词的日志条目:

# 搜索包含"error"的日志条目
grep "error" /var/log/syslog  

3.4、结合使用tail和grep

你可以将tail和grep命令结合起来,实时搜索新添加的日志中的特定条目:

tail -f /var/log/syslog | grep "error"  # 实时搜索包含"error"的新日志条目

3.5、使用less浏览大型日志文件

对于非常大的日志文件,less命令提供了一个分页查看的方式。

在less中,你可以使用上下箭头键浏览文件,按/键后输入关键词进行搜索,按q键退出查看

less /var/log/syslog

3.6、 查看特定时间段的日志

如果你知道错误发生的大致时间,你可以使用awk来查看特定时间段的日志:

# 查看3月27日10点到11点的日志
awk '/Mar 27 10:00:00/,/Mar 27 11:00:00/' /var/log/syslog  

以上示例展示了基本的查看和解析日志文件的方法。根据你的具体需求,你可能还需要使用更复杂的过滤和搜索技术,或者结合多个工具来实现更精确的分析。

同时,对于特定的日志文件(如/var/log/auth.log、/var/log/kern.log等),可能需要根据不同的情况,调整命令以适应不同的格式和内容。

四、日志管理

日志管理通常涉及到收集、存储、分析和监控日志文件。下文整理了一些常用的日志管理工具和方法:

4.1、使用rsyslog或syslog-ng收集日志

rsyslog和syslog-ng是常用的系统日志守护程序,用于收集、处理和转发系统日志。我们可以配置它们来将日志发送到远程服务器或本地文件

4.2、使用logwatch分析日志

logwatch是一个日志分析工具,它可以生成日志报告的摘要,帮助你快速识别潜在的问题。你可以通过配置logwatch来定期发送这些报告

4.3、使用ELK进行日志集中管理

ELK(Elasticsearch、Logstash和Kibana)是一个现如今比较流行的日志集中管理解决方案。你可以使用Logstash来收集、解析和转换日志,然后使用Elasticsearch进行存储和搜索,最后通过Kibana进行可视化和分析

4.4、使用journalctl查看systemd日志

Ubuntu提供了一个比较强大的systemd日志工具journalctl,方便我们查看和管理systemd系统的日志。

journalctl            # 查看所有日志  
journalctl -u nginx   # 查看nginx服务的日志  
journalctl -b         # 查看自本次启动以来的日志

以上示例涵盖了日志管理的一些基础方面。在实际应用中,日志管理可能根据机制更加繁杂,与需求和环境磨合和优化。