一、rsyslog 介绍
它提供高性能、出色的安全功能和模块化设计。虽然它开始作为一个常规的syslog,rsyslog已经演变成一种瑞士军刀伐木,能够接受来自各种来源的投入,转换他们,并输出到不同的目的地的结果。如果应用有限的处理,RSYSLOG 每秒可向当地目的地发送超过 100 万条消息。
二、环境部署
2.1 拓扑图
实验中关闭防火墙和selinux。
2.2 server上部署操作
rsyslog默认已经在各发行版安装,如果系统中没有的话,可以用yum 进行安装,如下:
yum -y install rsyslog
编辑rsyslog配置文件,路径/etc/rsyslog.conf.建议修改前备份.
grep -v "^#" /etc/rsyslog.conf | grep -v "^$"
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$ModLoad immark # provides --MARK-- message capability
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
$WorkDirectory /var/lib/rsyslog
$AllowedSender tcp, 192.168.248.0/24
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"
:fromhost-ip, !isequal, "127.0.0.1" ?Remote
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none /data/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
a.$AllowedSender tcp, 192.168.248.0/24 允许 30.0网段内的主机以tcp协议来传输
b.$template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" 定义模板,接受日志文件路径,区分了不同主机的日志
c.:fromhost-ip, !isequal, "127.0.0.1" ?Remote 过滤server 本机的日志。
d.$InputTCPServerRun 514 开启tcp,tcp和udp 可以共存的
创建日志目录,选择合适的位置,尽量内存空间大一些。
mkdir -pv /data/log
systemctl restart rsyslog
lsof -i:514 #查看514 是否是tcp协议
2.3 client上的部署操作
安装与server步骤一致
编辑rsyslog配置文件,路径 /etc/rsyslog.conf。
grep -v "^#" /etc/rsyslog.conf | grep -v "^$"
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$template myFormat,"%timestamp% %fromhost-ip% %msg%\n"
$ActionFileDefaultTemplate myFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none @@192.168.248.128
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
module(load="imfile" PollingInterval="5")
$InputFileName /var/log/yum.log
$InputFileTag nova-info:
$InputFileStateFile state-nova-info
$InputRunFileMonitor
#module(load="imfile" PollingInterval="5") 加载imfile 模块,并5秒刷新一次
#$InputFileName /var/log/yum.log 要监控的日志文件路径
#$InputFileTag nova-info: 定义文件标签 ,注意最后是冒号:
#$InputFileStateFile state-nova-info 定义状态文件
#$InputRunFileMonitor 激活读取,可以设置多组日志读取,每组结束时设置本参数
3.1重启客户端的syslog服务
systemctl restart rsyslog
3.2验证rsyslog服务器的日志服务(收集系统其它服务日志如:yum.log)
在client中yum安装一个nginx的服务
在server端中出现安装nginx的日志
收集多台客户端同理。
server端将日志收集起来以ip分开,将日志按其原有的名字保存
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$template Remotelogs,"/var/log1/%fromhost-ip%/%programname%-%$YEAR%-%$MONTH%-%$DAY%-%$HOUR%-%$MINUTE%.log" #定义一个 Remotelogs模板
#/var/log1/%fromhost-ip%/%programname%-%$YEAR%-%$MONTH%-%$DAY%-%$HOUR%-%$MINUTE%.log ##生成一个var/log的路径,以不同ip的二级目录生成的不同日志
*.* ?Remotelogs #?引用Remotelogs 模板
& ~ #(& ~ # 忽略所有的日志)#符号"& ~"表示了一个重定向规则,被用来告知rsyslog守护进程停止对日志消息的进一步处理,并且不要在本地写入
client端直接配置rsyslog.conf文件
*.* @@**ip名字**