RSyslog如何自动接收日志消息?

RSyslog如何自动接收日志消息?

相关部分:

anisha@linux-trra~> sudo cat /var/log/messages
Aug 29 13:04:22 linux kernel: imklog 5.6.3, log source = /proc/kmsg started.
Aug 29 13:04:22 linux rsyslogd: [origin software="rsyslogd" swVersion="5.6.3" x-pid="1879" x-info="http://www.rsyslog.com"] start
Aug 29 13:04:22 linux kernel: [7.585951] type=1400 audit(1346225659.436:4): apparmor="STATUS" operation="profile_load" name="/sbin/syslog-ng" pid=807 comm="apparmor_parser" Aug 29 13:04:22 linux kernel: [7.667712] type=1400 audit(1346225659.518:5): apparmor="STATUS" operation="profile_load" name="/sbin/syslogd" pid=830 comm="apparmor_parser"

我无法通过ps -el.

  • 节目如何进行自动地知道他们必须向 RSyslog 发送消息吗?

  • 是否所有程序都将其消息转储到一处,然后 RSyslog 拾取相关消息?

  • Syslog 的手册页显示 Syslog 从 /dev 中的套接字读取其消息。那么,它与上述两点有何关联呢?

答案1

默认情况下,所有 syslog 守护进程都从以下位置读取传入消息: /dev/log

此外,syslog 可以绑定到端口 514 上的 UDP 套接字。请参阅 /etc/services::

$ cat /etc/services | grep syslog
syslog          514/udp

第二个主要用于在系统日志守护程序之间传递日志。即每个集群一台日志服务器。

作为程序员,您不会直接写入 /dev/log ,而是调用 posix 函数syslog::

#include <syslog.h>

void openlog(const char *ident, int option, int facility);
void syslog(int priority, const char *format, ...);
void closelog(void);

事实上,所有高级语言都在这些函数之上提供了一个抽象层。

相关内容