我对 syslog、rsyslog 和 syslog-ng 有点困惑。
我可以从哪里获得源代码syslog()
?
rsyslog 和 rsyslogd 之间有什么区别?
答案1
基本上,它们都是一样的,都允许在中央存储库中记录来自不同类型系统的数据。
但它们是三个不同的项目,每个项目都试图改进前一个项目,使其更加可靠、功能更多。
该Syslog
项目是第一个项目。它始于 1980 年。它是Syslog
协议的根项目。当时 Syslog 是一个非常简单的协议。一开始它只支持 UDP 传输,因此它不能保证消息的传递。
接下来是syslog-ng
在 1998 年。它扩展了基本syslog
协议,增加了以下新功能:
- 基于内容的过滤
- 直接登录数据库
- TCP 用于传输
- TLS 加密
接下来是Rsyslog
在 2004 年。它扩展了syslog
协议,增加了以下新功能:
- RELP 协议支持
- 缓冲操作支持
假设今天它们有三个并发项目,它们在版本上分别发展,但同时也根据邻居所做的事情并行发展。
我个人认为今天syslog-ng
在大多数情况下都是参考,因为它是最成熟的项目,提供您可能需要的主要功能,此外还有简单全面的设置和配置。
答案2
这是 3 种不同类型的日志管理器:它使您的系统能够收集过滤、传输/存储日志。
Syslog
(守护进程也称为sysklogd
)是常见 Linux 发行版中的默认 LM。轻量但不太灵活,您可以将按设施和严重性排序的日志流重定向到文件并通过网络(TCP、UDP)。rsyslog
sysklogd
是配置文件保持不变的“高级”版本(您可以syslog.conf
直接将文件复制到其中rsyslog.conf
,它就可以工作);但是您会得到很多新的很酷的东西:- 您可以监听 TCP/UDP/... 连接,但有限制(端口、源 IP)
- 你可以加载很多模块
- 您可以通过程序、来源、消息、pid 等来区分日志过滤(例如,每个标有“连接关闭”消息的消息都会被保存到文件 closed.log 中)
- 您可以按照一条或多条规则丢弃邮件 访问http://www.rsyslog.com这确实很好
Syslog-ng 是“下一代”。我认为它是管理日志的最佳方式:一切都是对象(源、目标、过滤器和转发规则),语法清晰。就功能而言,我怀疑
rsyslog
和syslog-ng
有什么不同。
答案3
我可以从哪里获得 syslog() 的源代码
这是由glibc或其他 Unix 版本上的 libc 实现。此调用基本上将您的消息提交到 syslog unix 域套接字 /dev/log。此套接字通常由系统记录器(例如 rsyslog、syslog-ng、nxlog 等)创建。
答案4
它们都是 syslog 守护进程,其中 rsyslog 和 syslog-ng 是速度更快、功能更丰富的传统 syslogd 的替代品(大部分都无人维护)。syslog-ng 从零开始(使用不同的配置格式),而 rsyslog 最初是 syslogd 的一个分支,支持并扩展了其语法。近年来,rsyslog 也开始支持更新的配置格式。到目前为止,如果不深入讨论细节并引发激烈争论,就很难对这两者进行比较。
Syslog 总体上比较令人困惑,因为它可以表示多种含义。我尝试在这里解释一下:https://sematext.com/blog/2017/01/30/what-is-syslog-daemons-message-formats-and-protocols/