
核心摘要
- 监控优先级上,业务北极星指标和应用 RED 指标仍然最重要,因为它们直接关联营收和用户体验。
- Linux 日志监控的价值不只是触发告警,更重要的是在故障发生时提前筛出高价值线索,减少临场翻日志的时间。
/var/log下的系统日志、认证日志、内核日志、启动日志、计划任务日志、Web 访问日志、数据库日志和安全审计日志,适合作为运维基础监控清单。- 对日志做告警时,不建议只看“是否有日志”,更应该围绕
error、failed、FAILED、Failed password等高信号关键词建立规则。 - 不同 Linux 发行版和服务安装方式会导致日志路径略有差异,例如
/var/log/syslog与/var/log/messages、/var/log/auth.log与/var/log/secure,监控前需要按实际环境确认。
在监控领域,通常最应该监控的是业务的北极星指标、应用的 RED 指标,因为这些指标直接关联业务营收和用户体验。对于下层的机器类指标、日志等,也会配置告警规则,但是级别通常比较低。
这类日志告警的核心价值,是提前从纷繁复杂的指标、日志数据中提取重点信息。等到故障发生时,运维和研发可以优先读取这些少量但有价值的线索,提升故障定位效率。
系统日志是最基础的监控数据。Linux 系统日志文件通常存储在 /var/log 目录下,不同日志文件记录不同信息。下面这 17 类常见 Linux 日志文件,可以作为日志监控清单,用来查漏补缺。
Linux 日志文件监控总览
| 序号 | 日志文件 | 主要记录内容 | 适合关注的问题 |
|---|---|---|---|
| 1 | /var/log/syslog 或 /var/log/messages |
系统消息、守护进程、系统进程、内核消息 | 系统错误、警告、OOM、稳定性问题 |
| 2 | /var/log/auth.log 或 /var/log/secure |
登录、权限变化、认证事件 | 登录失败、未授权访问、安全风险 |
| 3 | /var/log/kern.log |
Linux 内核消息 | 硬件、驱动、内核相关异常 |
| 4 | /var/log/boot.log |
系统启动过程、服务启动状态 | 服务启动失败、启动延迟 |
| 5 | /var/log/dmesg |
kernel ring buffer 消息 | 硬件组件、驱动、内核初始化问题 |
| 6 | /var/log/cron |
计划任务运行情况 | 任务调度失败、任务未按预期执行 |
| 7 | /var/log/maillog 或 /var/log/mail.log |
邮件服务器活动、投递和错误 | 邮件投递失败、邮件服务异常 |
| 8 | /var/log/httpd/access.log 或 /var/log/apache2/access.log |
Apache 访问请求 | Web 流量、访问行为、潜在安全威胁 |
| 9 | /var/log/httpd/error.log 或 /var/log/apache2/error.log |
Apache 错误 | Web 服务配置、应用错误、客户端问题 |
| 10 | /var/log/NGINX/access.log |
NGINX 访问请求 | Web 流量、DDoS、未授权访问尝试 |
| 11 | /var/log/NGINX/error.log |
NGINX 错误 | NGINX 配置、服务错误、客户端相关问题 |
| 12 | /var/log/mysql.log 或 /var/log/mysql/error.log |
MySQL 活动和错误 | 查询、连接、性能和数据库运行问题 |
| 13 | /var/log/ufw.log |
UFW 防火墙事件 | 允许或拒绝的连接、可疑访问 |
| 14 | /var/log/audit/audit.log |
audit daemon 审计事件 | 安全审计、合规、系统活动和变更 |
| 15 | /var/log/daemon.log |
系统守护进程消息 | 后台服务运行状况和性能 |
| 16 | /var/log/btmp |
失败登录尝试 | 未授权访问尝试 |
| 17 | /var/log/wtmp |
登录和注销事件 | 用户活动、登录历史、异常行为 |
系统与内核日志
/var/log/syslog 或 /var/log/messages
/var/log/syslog 或 /var/log/messages 捕获广泛的系统消息,包括来自各种守护进程、系统进程和内核的消息。它们相当于系统活动的综合记录。
这类日志对 Linux 日志分析很重要,因为其中包含系统错误、警告和其他重要事件。常见例子包括 OOM 日志。监控这些日志,有助于诊断影响系统稳定性和性能的问题。
建议监控:
- 系统级
error、warning、failed等关键词。 - OOM 相关日志。
- 短时间内持续出现的同类系统错误。
/var/log/kern.log
/var/log/kern.log 包含 Linux 内核消息,包括硬件事件、驱动程序消息和其他内核相关活动。
内核日志对于诊断硬件和驱动相关问题很重要,这些问题往往会影响系统稳定性和性能。除了直接读取日志文件,也可以通过 dmesg 命令查看内核日志。
例如,使用下面的命令查看内核错误:
dmesg -T | grep -i error
同样,也可以把 error 作为关键词配置告警规则。
/var/log/dmesg
/var/log/dmesg 包含来自内核 ring buffer 的消息,记录硬件组件、驱动程序和内核初始化等信息。
这个日志适合用于硬件诊断和系统性能排查。遇到硬件故障、驱动异常或启动早期问题时,可以优先查看它。
/var/log/boot.log
/var/log/boot.log 记录与系统启动过程相关的事件,包括启动的服务及其状态。
这个日志适合排查启动问题,例如启动失败的服务、启动过程延迟,以及其他与启动相关的异常。可以使用下面的命令浏览文件,查找标有 FAILED 或 ERROR 的行:
less /var/log/boot.log
认证、登录与安全日志
/var/log/auth.log 或 /var/log/secure
/var/log/auth.log 或 /var/log/secure 记录认证相关事件,例如成功和失败的登录尝试、用户权限更改,以及其他身份验证机制。
这个日志对识别未经授权的访问尝试和潜在安全漏洞很重要。通过它可以了解谁访问了系统,以及何时访问系统。
例如,使用下面的命令查看登录失败记录:
grep "Failed password" /var/log/auth.log
自然也可以把 Failed password 作为关键词配置告警规则。
/var/log/btmp
/var/log/btmp 记录失败的登录尝试,提供未经授权访问尝试的记录。它对安全监控很重要,有助于检测和响应未授权访问尝试。
使用下面的命令查看失败的登录尝试:
lastb
/var/log/wtmp
/var/log/wtmp 记录登录和注销事件,用于跟踪系统上的用户活动。
它适合用于审核用户活动、了解系统使用模式,以及检测异常登录行为。可以使用下面的命令查看登录历史记录:
last
/var/log/ufw.log
/var/log/ufw.log 记录与简单防火墙 UFW 相关的事件,包括允许和拒绝的连接尝试。
防火墙日志对网络安全监控和检测未经授权的访问尝试很重要。可以通过 tail 等命令查看 UFW 日志,重点关注来自同一 IP 的重复拒绝尝试,这可能表明存在安全威胁。定期审查这类日志,有助于确认防火墙规则是否有效。
/var/log/audit/audit.log
/var/log/audit/audit.log 包含来自审计守护程序的详细记录,会捕获广泛的系统事件,用于安全审计和合规性目的。
审计日志适合做更细粒度的安全分析。它能提供系统活动和更改的全面视图,帮助确认系统行为是否符合策略。
可以使用 ausearch 和 aureport 工具从审计日志中搜索和生成报告。定期审计有助于确保系统安全和符合策略。
任务、邮件与后台服务日志
/var/log/cron
/var/log/cron 记录计划任务的运行情况。它有助于诊断任务调度和执行方面的问题。
如果某个定时任务没有执行、执行失败,或者执行时间与预期不一致,/var/log/cron 是应该优先查看的日志之一。
/var/log/maillog 或 /var/log/mail.log
/var/log/maillog 或 /var/log/mail.log 捕获与邮件服务器活动相关的事件,包括电子邮件投放和错误。
监控邮件日志对邮件服务器管理和解决电子邮件投递问题很重要。它们有助于确保组织内外的可靠通信。
可以使用下面的命令检查邮件日志,查找包含 error 或 failed 的行:
tail -f /var/log/maillog
/var/log/daemon.log
/var/log/daemon.log 记录来自系统守护进程的消息,这些守护进程是系统上运行的后台服务。
守护进程日志适合监控后台服务的运行状况和性能,也有助于解决服务运行问题。
Web 服务器日志
/var/log/httpd/access.log 或 /var/log/apache2/access.log
/var/log/httpd/access.log 或 /var/log/apache2/access.log 记录对 Apache Web 服务器的所有访问请求,包括 IP 地址、请求类型和响应状态等详细信息。
访问日志适合监控 Web 流量、识别潜在安全威胁、观察访问者行为,并帮助优化网站性能。
/var/log/httpd/error.log 或 /var/log/apache2/error.log
/var/log/httpd/error.log 或 /var/log/apache2/error.log 捕获 Apache Web 服务器遇到的错误,包括 Apache 服务器配置问题、应用程序错误和客户端相关问题。
错误日志适合诊断 Web 服务器及其上运行的应用程序问题。监控这类日志,有助于保障网站和 Web 服务顺利运行。
/var/log/NGINX/access.log
/var/log/NGINX/access.log 记录对 NGINX Web 服务器的所有访问请求,包括 IP 地址、请求方法、响应状态和用户代理等详细信息。
监控 NGINX 访问日志,有助于了解 Web 流量和用户行为,也有助于识别潜在安全威胁,例如 DDoS 攻击或未经授权的访问尝试。
可以使用下面的命令实时监控访问:
tail -f /var/log/NGINX/access.log
分析这些日志有助于优化 Web 性能和改进安全措施。像 goaccess 这样的工具,可以提供实时 Web 日志分析和可视化报告。
/var/log/NGINX/error.log
/var/log/NGINX/error.log 捕获 NGINX Web 服务器遇到的错误,包括配置问题、服务器错误和与客户端相关的问题。
错误日志适合诊断 Web 服务器及其托管应用程序的问题。它们能够提供问题出现的位置和时间,帮助保障网站和 Web 服务顺利运行。
数据库日志
/var/log/mysql.log 或 /var/log/mysql/error.log
/var/log/mysql.log 或 /var/log/mysql/error.log 记录与 MySQL 数据库服务器相关的活动和错误,包括查询、连接和性能问题。
监控 MySQL 日志对数据库管理、故障排除和确保数据库高效运行很重要。遇到数据库连接异常、查询问题或性能问题时,这类日志是重要线索。
Linux 日志监控建议
先按场景分级,而不是把所有日志都设成高优先级
日志告警通常位于业务指标和应用 RED 指标之后。更合理的做法是按场景设定告警级别:
- 安全相关:登录失败、重复拒绝连接、异常认证事件,可以更早进入关注列表。
- 稳定性相关:OOM、内核错误、服务启动失败、守护进程异常,需要能在故障排查时快速定位。
- 业务入口相关:Web 访问日志和错误日志,应与访问状态、错误信息和异常流量结合分析。
- 基础服务相关:cron、mail、MySQL 等日志,应围绕任务失败、投递失败、连接失败和服务错误建立规则。
优先监控高信号关键词
日志量通常很大,不适合把所有内容都变成告警。可以先从原文中提到的关键词开始:
| 场景 | 可关注关键词或命令 |
|---|---|
| 登录失败 | Failed password、lastb |
| 内核错误 | dmesg -T | grep -i error |
| 启动失败 | FAILED、ERROR |
| 邮件问题 | error、failed |
| Web 访问分析 | tail -f /var/log/NGINX/access.log、GoAccess |
| 登录历史 | last |
监控前确认实际路径
同一类日志在不同系统中可能有不同路径。例如系统日志可能是 /var/log/syslog,也可能是 /var/log/messages;认证日志可能是 /var/log/auth.log,也可能是 /var/log/secure;Apache 日志也会因安装方式不同而落在 /var/log/httpd/ 或 /var/log/apache2/ 下。
因此,配置采集和告警前,需要先确认当前机器上实际存在的日志文件和服务路径。
FAQ
Linux 日志文件通常在哪里?
Linux 系统日志文件通常存储在 /var/log 目录下。不同日志文件记录不同类型的信息,例如系统消息、认证事件、内核消息、启动过程、计划任务、Web 请求、数据库活动和安全审计事件。
Linux 日志监控应该优先看哪些文件?
如果是做基础查漏补缺,可以优先覆盖 /var/log/syslog 或 /var/log/messages、/var/log/auth.log 或 /var/log/secure、/var/log/kern.log、/var/log/boot.log、Web 服务器访问和错误日志、MySQL 日志、UFW 日志、audit 日志,以及 btmp、wtmp 这类登录记录。
日志告警应该怎么配置关键词?
可以先从高信号关键词开始,例如认证失败中的 Failed password,内核和服务错误中的 error,启动异常中的 FAILED 或 ERROR,邮件投递问题中的 failed。关键词需要结合具体日志类型使用,避免把低价值噪声全部变成告警。
/var/log/auth.log 和 /var/log/secure 有什么区别?
二者都用于记录认证相关事件,但常见于不同 Linux 发行版或系统配置中。监控前应以当前机器实际存在的日志文件为准。
/var/log/btmp 和 /var/log/wtmp 分别看什么?
/var/log/btmp 记录失败的登录尝试,可以通过 lastb 查看;/var/log/wtmp 记录登录和注销事件,可以通过 last 查看。前者更偏安全告警,后者更适合用户活动审计和登录历史排查。
总结
Linux 日志监控的目的,不是把 /var/log 下的每一行都变成告警,而是把系统、认证、内核、启动、任务、邮件、Web、数据库、防火墙、审计和登录记录中的关键信息提前整理出来。
当故障或安全事件发生时,这些日志能帮助你更快回答几个关键问题:系统发生了什么、谁访问过、哪个服务异常、错误从什么时候开始、是否存在重复失败或可疑访问。把上面 17 类日志纳入基础监控清单,就能覆盖大部分 Linux 运维场景中的常见排查入口。
本文翻译自:https://sematext.com/blog/17-linux-log-files-you-must-be-monitoring/
