一、rsyslog 介绍

它提供高性能、出色的安全功能和模块化设计。虽然它开始作为一个常规的syslog,rsyslog已经演变成一种瑞士军刀伐木,能够接受来自各种来源的投入,转换他们,并输出到不同的目的地的结果。如果应用有限的处理,RSYSLOG 每秒可向当地目的地发送超过 100 万条消息。

rsyslog如何将日志写入mysql rsyslog推送全部日志_ide


二、环境部署

2.1 拓扑图

rsyslog如何将日志写入mysql rsyslog推送全部日志_linux_02

实验中关闭防火墙和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的服务

rsyslog如何将日志写入mysql rsyslog推送全部日志_ide_03

在server端中出现安装nginx的日志

rsyslog如何将日志写入mysql rsyslog推送全部日志_配置文件_04


收集多台客户端同理。

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名字**