![(Linux)使用 logrotate 和 rsyslog 组织 /var/log,而不会破坏重要系统](https://linux22.com/image/738708/%EF%BC%88Linux%EF%BC%89%E4%BD%BF%E7%94%A8%20logrotate%20%E5%92%8C%20rsyslog%20%E7%BB%84%E7%BB%87%20%2Fvar%2Flog%EF%BC%8C%E8%80%8C%E4%B8%8D%E4%BC%9A%E7%A0%B4%E5%9D%8F%E9%87%8D%E8%A6%81%E7%B3%BB%E7%BB%9F%20.png)
由于这是在征求意见,所以很可能会引发要求关闭的呼声,但我不知道如何或在哪里以更合适的方式提出问题。如果冒犯了您,请提前致歉 - 这不是故意的,而且这是一个实际的问题,即“如果我这样做,我会破坏什么,这样做值得吗?”
我讨厌 /var/log 目录变得杂乱无章;里面有日志文件、旧日志文件,还有包含这两个文件的目录。我正在考虑使用 logrotate 和 rsyslogd 来确保目录看起来像这样:
chrony
mail
cron
messages
所有这些都是目录。每个目录都包含一个文件和一个目录:
chrony.log
history
其中logrotate用于将旧日志移动到历史目录中,当前日志是唯一的文件在每个目录中。我认为这将使读取目录、查找相关日志文件变得更容易,而且更整洁。
我怀疑某些日志不容易移动 - “lastlog” 应该在 /var/log 中吗?如果我这样做会严重破坏任何东西吗?
(我倾向于认为一般来说目录应该是叶节点或分支,所以我不喜欢有 /etc/httpd.conf 和 /etc/httpd.conf.d - 为什么不只是 /etc/httpd.conf.d 包含 base_config 和其他文件)。
我想知道,这一切是否因为 splunk 而变得毫无意义——或者因为其他离线日志存储/转发而变得毫无意义?
答案1
是的,日志文件和配置文件很乱。这就是每个软件项目都会发明自己的文件的原因。然后,固执己见的系统管理员将它们打包到 Linux 发行版中,而进行非特权日志记录有时需要具有特殊权限的目录。
我不会列举您必须任意更改以重构 /var/log 的所有内容,但这里有一些类别:
- 配置文件记录在那里,包括logrotate。
- 在路径中编译。我不知道 /var/log/lastlog 在身份验证堆栈中的确切配置位置。
- 安全构建包括文件权限和 SELinux。在 CentOS 上,有些东西将 logrotate 标记为 lastlog_t。
- 发行版与 Linux FHS 之间的差异的文档。仅仅因为 FHS 说 /var/log/messages 是 syslog 文件并不意味着这一点,但它是有记录的先例。
随心所欲。就我个人而言,如果我可以递归地 grep 文件,我不会去弄乱它。或者搜索 systemd 日志。或者更好的是,将日志转发到中央搜索引擎。