rsyslog可用于系统日志、交换机、路由器等日志的集中收集,研究的较浅,了解到:客户端可收集多个系统日志,如corn、message、secure等;服务端收到日志后经过template将不一样主机的日志,按IP或主机名存放到同一个文件中,若日志格式固定,也可经过action来抽取日志存放到其余文件或转发给其余主机。html
基本架构是c/s模式vim
最新版本8.35centos
官方手册:https://www.rsyslog.com/doc/v8-stable/configuration/index.html缓存
安装服务器
centos7 x86_64架构
cd /etc/yum.repos.d/app
wget http://rpms.adiscon.com/v8-stable/rsyslog.repo异步
yum update -y rsyslogtcp
Client端配置ide
cp /etc/rsyslog.conf /etc/rsyslog.conf.bk
1)
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
vim /etc/rsyslog.d/application_log.conf
$ModLoad imfile
$InputFilePollInterval 10
$InputFileName /alidata/www/ultron/runtime/log/*.log
$InputFileTag backen_A:
$InputFileStateFile info
$InputRunFileMonitor
#使用 TCP 发送到 "example.com" 的518端口
\*.\* @@example.com:518
*.* @@remote-hos:514.该配置默认是注释掉的,能够取消注释。并将remote-host修改成本身的服务器地址
2)
也可对非系统日志作转发,在/etc/rsyslog.d/下新增配置文件
vim app.conf
ruleset(name="remote"){
action(type="omfwd"
target="log_server_ip"
port="514" #端口
protocol="tcp" #使用协议
queue.type="linkedList" #使用异步处理
queue.spoolDirectory="/var/run/rsyslog" #队列目录
queue.fileName="remoteQueue" #队列名称
queue.maxDiskSpace="5g" #队列占最大磁盘空间
queue.saveOnShutdown="on" #保存内存数据若是rsyslog关闭
action.resumeRetryCount="-1" #无限重试插入失败
)
stop
}
$WorkDirectory /var/run/rsyslog #默认为/var/lib/rsyslog
module(load="imfile" PollingInterval="5")
input(type="imfile"
File="/alidata/www/runtime/log/201806/*.log" #日志路径
Facility="local1"
Severity="info"
Tag="clilog" #定义日志标签,重要,服务端根据这个标签能够识别日志
PersistStateInterval="1" #回写偏移量数据到文件间隔时间(秒),根据实际状况而定
Ruleset="remote" #rsyslog.conf中定义的rule名称
)
重启rsyslog:systemctl restart rsyslog
Server端配置
cp /etc/rsyslog.conf /etc/rsyslog.conf.bk
编辑配置文件/etc/rsyslog.conf:取消TCP、UDP链接的注释,修改为以下
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCP
#在global device前配置日志收集后按主机名和日期存放在/data/log目录下
$template Remote,"/data/log/%hostname%/%$year%%$month%/%$DAY%_cli.log"
:fromhost-ip, !isequal, "127.0.0.1" ?Remote
@ ~
重启rsyslog:systemctl restart rsyslog
ps,最好先重启服务端,在重启客户端,这样客户端就能将队列缓存日志上传给服务端了
集中日志后,紧接着就是分析、报警之类的