我想在中央服务器上配置 rsyslog,以便客户端的所有日志都存储在一个地方,现在我遇到的问题是我不知道如何实现 rsyslog,以便它根据客户端计算机上的程序创建日志,即像' httpd' 等并将它们保存在不同的文件中,即 '/var/log/httpd.log' 并且当它将日志发送到远程服务器时,文件应该保存为 '/var/log/ip-address of host/httpd .log' 我有这两个问题
我希望我说清楚了我的问题。请帮忙。
为了基于程序创建日志,我相信我将不得不在客户端使用类似的东西
if $programname == 'httpd' and $syslogseverity <= '6' then /var/log/httpd.log
if $programname == 'httpd' and $syslogseverity <= '6' then ~
Run Code Online (Sandbox Code Playgroud)
我也发现了这个问题,但它并没有完全解决我的问题
您需要首先配置 rsyslog 服务器以便能够接收来自客户端的消息
编辑服务器的 rsyslog 配置文件并创建或确保存在以下行:
$ModLoad imuxsock
$ModLoad imklog
# provides UDP syslog reception. For TCP, load imtcp. For TCP use InputServerRun 514
$ModLoad imudp
# This will save the log file is a separate directory for each client's IP
$template FILENAME,"/var/log/%fromhost-ip%/syslog.log"
#Create a rule for each application you need to filter, ie: httpd messages
$template HTTPD,"/var/log/%fromhost-ip%/httpd.log"
#Create a separate log rule for the specific application
if $programname == 'httpd' then ?HTTPD
&~
#Dump all remaining messages that do not match the filters created into one file
*.* ?FILENAME
Run Code Online (Sandbox Code Playgroud)
之后,您需要转到每个客户端并将以下行添加到 rsyslog.conf 文件中:
$ModLoad imuxsock
$ModLoad imklog
# Provides UDP forwarding. For TCP use @@server_ip
*.* @server_ip:514
Run Code Online (Sandbox Code Playgroud)
你应该准备好。客户端发送到服务器的所有内容都将使用您创建的规则进行过滤,并且消息将根据您在服务器端创建的模板保存到每个客户端的 IP 地址文件夹中的文件中。
| 归档时间: |
|
| 查看次数: |
15404 次 |
| 最近记录: |