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 # 查看自本次启动以来的日志
以上示例涵盖了日志管理的一些基础方面。在实际应用中,日志管理可能根据机制更加繁杂,与需求和环境磨合和优化。