简介
Rsyslog是一个开源软件实用程序,用于UNIX和类Unix计算机系统,用于在IP 网络中转发日志消息,收集日志。它实现了基本的syslog协议,通过基于内容的过滤,丰富的过滤功能,灵活的配置选项扩展了它,并添加了诸如使用TCP进行传输等功能。
特性
- 多线程;
- 可以通过许多协议进行传输UDP,TCP,SSL,TLS,RELP;
- 存储日志信息于MySQL、PGSQL、Oracle等数据管理系统;
- 强大的过滤器,实现过滤日志信息中任何部分的内容;
- 自定义输出格式;
配置文件
配置文件/etc/rsyslog.conf主要有3个部分
- MODULES :模块
- GLOBAL DRICTIVES :全局设置
- RULES:规则
RULES
比较重要的就是规则的编写
格式为
facilty.priority target
facilty表示设备设施,表示从功能或程序上对日志收集进行分类,一般有下面这几类
auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, user, uucp, local0-local7, syslogpriority表示优先级,有下面几类
debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)target表示将日志信息发送到哪里,
- 文件:记录日志事件于指定的文件中;通常应该位于/var/log目录下;文件路径之前的”-“表示异步写入;
- 用户:将日志事件通知给指定的用户;是通过将信息发送给登录到系统上的用户的终端进行的;
- 日志服务器:@host,把日志送往指定的服务器主机; host:即日志服务器地址,监听在tcp或udp协议的514端口以提供服务;
- 管道: | COMMAND
将日志信息发送到别的服务器
日志收集服务器IP:192.168.253.128
日志发送方IP:192.168.253.129
服务端:修改配置文件 /etc/rsyslog.conf
$ModLoad imudp ##取消注释
$UDPServerRun 514 ##取消注释
$ModLoad imtcp ##取消注释
$InputTCPServerRun 514 ##取消注释
启动服务
systemctl start rsyslog
客户端:修改配置文件 /etc/rsyslog.conf
$ModLoad imudp ##取消注释
$UDPServerRun 514 ##取消注释
$ModLoad imtcp ##取消注释
$InputTCPServerRun 514 ##取消注释
*.info;mail.none;authpriv.none;cron.none @192.168.253.128 ##这里@192.168.253.128表示日志信息发送到192.168.253.128
启动服务
/etc/init.d/rsyslog start ##因为是centos6 所以启动方式不太一样不过不影响实验
现在我们在客户端安装一个vsftpd
yum install vsftpd -y
在服务端我们看一下有没有收到日志信息
这里的node1是客户端192.168.253.129的主机名
将日志信息存储在mysql
环境:
系统:centos7
IP:192.168.253.128
先安装一下mysql,这里用二进制包。版本为mysql5.6
tar -zxf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql5.6
ln -sv /usr/local/mysql5.6 /usr/local/mysql
useradd -M -s /sbin/nologin mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql5.6 --datadir=/usr/local/mysql5.6/data
PATH="/usr/local/mysql/bin/:$PATH"
启动数据库
mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &
表示安装数据库完成
现在我们安装一下rsyslog和mysql连接的模块
yum install rsyslog-mysql
我们可以看一下这个模块安装完之后有什么文件
[root@localhost src]# rpm -ql rsyslog-mysql
/usr/lib64/rsyslog/ommysql.so ##模块
/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql ##创建rsyslog存放日志的表结构的sql语句
然后我们导入这个sql文件
mysql </usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
然后进入数据库看一下
可以看到表都创建好了。
添加一个用户给rsyslog访问数据库
grant all on Syslog.* to 'rsyslog'@'127.0.0.1' identified by 'rsyslog'; 在数据库里面,设置授权rsyslog用户访问权限
修改主配置文件/etc/rsyslog.conf
$ModLoad ommysql ##打开连接mysql的模块
*.info;mail.none;authpriv.none;cron.none :ommysql:127.0.0.1,Syslog,rsyslog,rsyslog
重启一下rsyslog服务
systemctl restart rsyslog
然后我们为了有一些日志产生我们安装个telnet
yum install telnet
进入数据库
执行一个命令
select * from Syslog.SystemEvents \G;
从截图可以看出来安装telnet这个日志已经保存进去了。放在数据库可能不太好观察。有兴趣的可以配合loganalyzer,这是一个web展示界面,也非常简单,这里就不安装了。