无法通过rsyslog服务器获取应用程序日志

问题描述 投票:0回答:1

我在服务器上使用此模板按客户端主机名排列日志:

$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 

在客户端:

*.*@10.x.x.x:514

问题是日志仅由

sshlog.cron
日志和
compiz
日志组成。

如何通过客户端主机名获取auth.log、syslog和基于应用程序的日志的客户端日志?

server rsyslog
1个回答
0
投票

要从客户端收集

auth.log
syslog
以及基于客户端主机名的其他日志,您可以在客户端计算机上使用 rsyslog 配置。既然您提到您是一名具有 C# 经验并且熟悉 Neo4J 和 Blazor 的软件工程师,我将为您提供使用 rsyslog 在 Linux 客户端上进行日志转发的基本配置。请根据您的具体要求和系统配置进行调整。

  1. 在客户端编辑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")
    }
    

    此配置的作用如下:

    • 加载UDP模块并指定UDP服务器在端口514上运行。
    • 如果日志来自指定的IP地址(将'10.x.x.x'替换为您服务器的IP),它将被写入文件
      /var/log/%HOSTNAME%/%PROGRAMNAME%.log
  2. 重新启动rsyslog

    编辑配置后,重新启动 rsyslog 服务以应用更改:

    sudo systemctl restart rsyslog
    
  3. 验证

    确保日志从客户端转发到服务器。您可以通过在客户端计算机上生成一些日志(例如,通过运行一些测试命令)并检查它们是否出现在服务器上

    /var/log/%HOSTNAME%
    目录中的相应日志文件中来完成此操作。

此配置将从指定客户端的 IP 地址收集日志,并根据客户端主机名将它们存储在单独的日志文件中。您可以根据您的具体要求和日志文件的结构进一步调整它。确保将“10.x.x.x”替换为服务器的实际 IP 地址。此外,如果日志消息中有该信息,您可以按特定应用程序名称过滤日志。

© www.soinside.com 2019 - 2024. All rights reserved.