Azure Linux 上的日志记录和监视

Azure Linux 基于 systemd 构建,并使用 systemd 日志作为其主日志记录系统。 内核、系统服务和应用程序的日志通过收集并编制索引 journalctl,从而提供系统活动的统一可查询视图。 Azure Linux 附带用于监视文件系统、磁盘、内存、进程、服务和网络的标准 Linux 工具集。

本文介绍如何通过系统日志查看系统日志、查找传统应用程序日志文件,以及使用标准实用工具监视 Azure Linux 系统上的系统运行状况和性能。

Note

Azure Linux 4.0 现在位于 preview 中,严格限制为评估和测试目的。 它不适合生产用途。

先决条件

  • 可以使用 shell 访问进行身份验证的 Azure Linux 系统。
  • 具有 sudo 特权的用户帐户。 某些日志和审核事件需要提升的权限才能读取。

使用 systemd 日志查看系统日志

systemd journal 是 Azure Linux 上的中央日志记录系统。 journalctl使用命令从内核、系统服务和应用程序查询和筛选日志条目。

查看所有日志条目

使用以下命令查看日志收集的每个日志条目:

journalctl

该命令将在寻呼器中打开日记,以便滚动浏览从最旧到最新的条目。

查看特定服务的日志

使用以下命令仅查看特定服务发出的日志条目。 替换为 <SERVICE> 服务名称,例如 sshdsystemd-networkd

journalctl -u <SERVICE>

例如,若要查看 SSH 服务日志,请运行:

journalctl -u sshd

实时跟踪日志

使用以下命令跟踪新写入的日志条目,类似于 tail -f

journalctl -f

使用 Ctrl+C 停止关注日志。

按优先级筛选日志

通过将该优先级传递给 journalctl,仅显示具有给定严重级别或更高级别的条目。 例如,若要仅显示错误级别条目及更高条目,请运行以下命令:

journalctl -p err

有效的优先级范围为 emerg(最严重)到 debug(最轻微)。

Note

当该目录存在时,systemd 日志会将日志持久存储在 /var/log/journal/ 下。 如果 /var/log/journal/ 缺少日志数据,则日志数据仅保留在内存中,并在重新启动时丢失。 journalctl 与系统计时器集成,以便进行自动日志记录。

查看传统日志文件

许多应用程序和服务还会将传统日志文件写入 /var/log/。 下表列出了 Azure Linux 虚拟机上的常见位置(VM):

路径 Purpose
/var/log/messages 内核和系统服务中的常规系统消息。
/var/log/secure 身份验证和 sudo 事件。
/var/log/dmesg 来自最新启动的内核消息。
/var/log/httpd/ 安装 httpd 时的 Apache HTTP 服务器日志
/var/log/mysql/ 安装这些软件包后生成的 MySQL 或 MariaDB 日志。

使用以下命令实时监视传统日志文件。 将路径替换为要遵循的日志文件:

sudo tail -f /var/log/messages

查看内核环缓冲区消息

使用以下命令直接查看内核环缓冲区消息:

sudo dmesg

监视系统运行状况和性能

Azure Linux 包括用于监视文件系统、内存、进程、服务和网络的标准 Linux 实用工具集。

监视文件系统和磁盘

使用以下命令检查磁盘空间、阻止设备和文件系统状态:

  • df -h:以易读单位显示已挂载文件系统的磁盘使用情况。
  • du -sh <DIRECTORY>:显示目录的总磁盘使用情况。
  • lsblk:以树状视图列出块设备及其关系。
  • blkid:显示每个块设备的文件系统类型和 UUID。
  • tune2fs:检查或修改 ext2ext3ext4 文件系统的参数。
  • fsck.ext4:检查并修复 ext4 文件系统。

监视内存和进程

使用以下命令检查内存使用情况、CPU 使用率和正在运行的进程:

  • free -h:以易于阅读的单位显示内存和交换空间使用情况。
  • top:提供 CPU、内存和进程活动的实时视图。
  • iostat:报告 CPU 和磁盘 I/O 统计信息。
  • vmstat:以固定间隔报告内存、CPU 和 I/O 统计信息。
  • sar:收集和报告历史 CPU、内存、磁盘和网络使用情况。 sarsysstat 包提供。

监视服务和系统运行状况

使用以下命令检查服务状态和整体系统运行状况:

  • systemctl status <SERVICE>:显示服务是否在启动时加载、处于活动状态和启用,以及最近的日志条目。
  • systemd-analyze:分析系统启动性能,包括每个单元花费的时间。
  • uptime:显示系统运行的时间以及当前负载平均值。

监视网络

使用以下命令检查侦听端口和活动网络连接:

  • ss:列出活动套接字、侦听端口和已建立的连接。 ssnetstat 的现代替代方案。
  • netstat:用于列出网络连接的旧版工具,适用于 ss 不可用时,或在需要其特定输出格式时。

审计和轮转日志

Azure Linux 包括用于审核安全相关事件和管理日志文件增长的额外工具:

  • auditd:收集系统调用、文件访问和安全事件的审核记录。
  • ausearch:查询由 auditd 生成的审核日志记录。
  • aureport:从审核日志记录生成摘要报告。
  • logrotate:根据配置的保留策略轮换、压缩和删除日志文件。

若要详细了解 Azure Linux 系统管理,请参阅 Get Azure Linux 系统管理入门