rsyslog

本文介绍了开源软件Rsyslog,它用于UNIX和类Unix系统在IP网络中转发和收集日志。阐述了其多线程、多协议传输等特性,讲解了配置文件的组成部分及规则编写。还说明了将日志信息发送到其他服务器和存储在MySQL的具体操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

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, syslog

  • priority表示优先级,有下面几类
    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展示界面,也非常简单,这里就不安装了。

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值