我在服务器上使用此模板按客户端主机名排列日志:
$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
在客户端:
*.*@10.x.x.x:514
问题是日志仅由
sshlog.cron
日志和 compiz
日志组成。
如何通过客户端主机名获取auth.log、syslog和基于应用程序的日志的客户端日志?
要从客户端收集
auth.log
、syslog
以及基于客户端主机名的其他日志,您可以在客户端计算机上使用 rsyslog 配置。既然您提到您是一名具有 C# 经验并且熟悉 Neo4J 和 Blazor 的软件工程师,我将为您提供使用 rsyslog 在 Linux 客户端上进行日志转发的基本配置。请根据您的具体要求和系统配置进行调整。
在客户端编辑rsyslog配置:
在客户端计算机上打开 rsyslog 配置文件,通常位于
/etc/rsyslog.conf
或 /etc/rsyslog.d/50-default.conf
,然后添加以下行:
$ModLoad imudp
$UDPServerRun 514
if $fromhost-ip == '10.x.x.x' then {
action(type="omfile" file="/var/log/%HOSTNAME%/%PROGRAMNAME%.log")
}
此配置的作用如下:
/var/log/%HOSTNAME%/%PROGRAMNAME%.log
。重新启动rsyslog:
编辑配置后,重新启动 rsyslog 服务以应用更改:
sudo systemctl restart rsyslog
验证:
确保日志从客户端转发到服务器。您可以通过在客户端计算机上生成一些日志(例如,通过运行一些测试命令)并检查它们是否出现在服务器上
/var/log/%HOSTNAME%
目录中的相应日志文件中来完成此操作。
此配置将从指定客户端的 IP 地址收集日志,并根据客户端主机名将它们存储在单独的日志文件中。您可以根据您的具体要求和日志文件的结构进一步调整它。确保将“10.x.x.x”替换为服务器的实际 IP 地址。此外,如果日志消息中有该信息,您可以按特定应用程序名称过滤日志。