练习 18:日志:/var/log,rsyslog,logger

原文:Exercise 18. Logging, /var/log, rsyslog, logger

译者:飞龙

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

守护进程是在后台运行的程序。所以问题来了:他们怎么告诉你他们在做什么?他们如何告诉你有什么问题?这个问题是由日志文件解决的,其中守护进程写入其状态和操作。在 Debian 中,这个文件位于/var/log目录下。

但谁写入这些文件?最明显的答案是守护进程本身,这实际上往往是错误的。在某些情况下,守护程序确实会自己编写日志文件,但通常它们通过名为rsyslogd的守护程序(称为 日志记录守护程序)来实现。它将日志写入不同的文件,来简化搜索和分析。为了区分这个文件,它有一个概念叫做“设施”。这是标准设施的列表:

设施
设施说明
设施
设施说明

auth

授权相关消息

LOCAL0

本地使用 0

authPriv

敏感的安全信息

LOCAL1

本地使用1

cron

Cron信息

local2

本地使用 2

daemon

系统守护程序

local3

本地使用 3

ftp

FTP 守护消息

local4

本地使用 4

kern

内核消息

local5

本地使用 5

lpr

行式打印机子系统

local6

当地使用 6

mail

邮件子系统

local7

当地使用 7

news

新闻子系统

security

auth 的过时名称

syslog

由 syslogd 内部生成的消息

user

uucp

UUCP 子系统

每个条目也标记有严重性状态,以便分析发生了什么:

代码名称
严重性
描述
一般说明

alert

警报

必须立即采取行动。

应立即纠正,因此通知可以解决问题的人员。一个例子是丢失备用 ISP 连接。

crit

严重

严重情况。

应立即纠正,但表示主系统出现故障,一个例子就是主 ISP 连接的丢失 。

debug

调试

调试级别消息。

信息对开发人员有用,用于调试应用程序,在操作期间无用。

emerg

紧急

系统不可用

通常影响多个应用程序/服务器/站点的“紧急”状态。在这个级别,通常会通知所有技术人员。

err

错误

错误情况。

非紧急故障,应转发给开发人员或管理员;每个项目必须在给定的时间内解决。

error

错误

err 的弃用名称

---

info

信息

信息消息

正常操作的信息 - 可以用于收集报告,测量吞吐量等 - 无需采取任何行动。

notice

注意

正常但重要的状况。

不正常但不是错误情况的事件,可能汇总为邮件发给开发者或者管理员,来定位潜在问题 - 不需要立即采取行动。

panic

紧急

emerg 的弃用名称

---

warning

警告

警告情况。

警告消息,而不是错误,但表示如果不采取行动,将发生错误,例如文件系统 85% 占满 - 每个条目必须在给定时间内解决。

warn

警告

warning 的弃用名称

---

因为如果日志文件留给自己,它们往往会变得非常大,并且消耗所有可用的磁盘空间,所以有一种称为轮替的机制。默认情况下,这种机制通常只保留最后 7 天的日志文件,包括今天。轮替由logrotate守护进程执行,来帮助你了解这个守护进程做了什么。我为你将其写出来:

让我重复一下:

  • 日志是一个记录时间的过程,使用自动化的计算机程序,来提供审计跟踪,可用于了解系统活动和诊断问题。

  • 日志守护程序是程序,其他程序可能要求它在日志文件中写入内容。

  • 每个日志条目具有设施(日志类别)和严重性 (它是多么重要)属性。

  • 轮替是一个过程,仅保留有限数量的日志文件,来避免填满磁盘。

  • 在 Debian 中,日志文件通常位于/var/log目录中。

这是处理日志的有用命令(要记住打开相关的手册页,并找出有什么选项):

  • logger Hello, I have a kitty! - 编写一个自定义日志消息。

  • ls -altr /var/log - 列出日志目录,以这样一种方式,最后修改的文件到最后。

  • grep user1 /var/log/auth.log - 列出文件中包含user1的所有行。

  • grep -irl user1 /var/log - 列出所有包含user1的文件 。

  • find /var/log -mmin -10 - 找到在过去 10 分钟内被修改的任何文件。

  • tail /var/log/auth.log - 打印日志文件的最后 10 行。

  • tail -f /var/log/auth.log - 实时跟踪日志文件。配置守护进程时非常有用。

现在你将学习如何查看日志,并将一些东西写入系统日志。

这样做

你会看到什么

解释

  • 打开 root (超级用户)shell。这是因为作为user1工作时,出于安全的考虑,你不能读取所有日志文件。

  • 将目录更改为/var/log

  • 按日期排序打印所有文件,最后修改的文件在底部。

  • auth.log打印最后 10 行,包含登录系统的信息。

  • auth.log打印包含user1的最后 10 行。

  • 重启exim4邮件服务器。

  • 打印最近 5 分钟内的文件更改。现在,你可以轻松找到exim4在哪个文件中 记录其操作。

  • exim4日志打印出最后 10 行 。

  • 在当前目录中的所有文件 搜索rcconf。现在,你可以轻松找到 Debian 包系统记录其操作的位置。

  • dpkg.log打印最后 10 行,含有软件包安装和删除信息。

  • 打印用户最后登录的信息。

  • 打印所有用户最近登录的信息。

  • 将你的消息传递给rsyslogd守护程序。

  • 按日期排序打印所有文件,最后修改的文件位于底部。现在你可能会看到这里就是你的消息。

  • 从消息中打印出最后10行,你可以看到你的消息确实已记录。

附加题

阅读rsyslogdlogger的手册页。 通过阅读相应的手册页,找出lastlastlog之间的区别。 阅读logrotate手册页并记住它的存在。 执行tail -f /var/log/auth.log,并生成vm1的第二个连接(如果你在 Windows 上工作,则为 putty)。不错吧?

Last updated