1、rsyslog简介
syslog是日志收集存储系统,负责记录遵守此服务的内核、程序的日志信息。一般记录为:“日期时间,主机,进程:事件”。syslog不仅可以记录本地的系统日志,也可以通过tcp, udp协议记录远程主机的程序日志信息。
syslog:系统日志,是一种服务,有两个进程
syslogd:记录应用程序相关的日志
klogd:记录内核相关的日志
rsyslog:是syslog的升级版,使用多线程并发记录本地或远程日志,支持存储日志信息在MySQL,PGSQL, Oracle等RDBMS中。同时拥有强大的过滤器功能,可以对日志中任意内容进行过滤。
rsyslog是CentOS 6以后的系统使用的日志系统,与之前的syslog日志系统相比,具有以下优点:
支持多线程
支持TCP、SSL、TLS、RELP等协议
强大的过滤器,可实现过滤日志信息中的任意部分
支持自定义输出格式
适用于企业级别日志记录需求
模块化
日志的记录格式:
日期时间 主机 进程[pid]:事件内容
2、rsyslog的一些概念
系统上的应用程序指定某一信道记录日志,信道默认已经设定了日志的记录级别,一旦应用程序产生了日志信息,通过该信道就会把日志文件记录在指定的本地文件、数据库或远程rsyslog服务器中。
当然应用程序输出的日志一般也会按照级别划分,比如sshd_conf中就定义了信道为authpriv,级别为info的日志输出:
# Logging — SyslogFacility AUTHPRIV — #LogLevel INFO
3、rsyslog支持的facility与priority
facility:设施、信道
从功能或程序上对日志进行分类,并由专门的工具负责记录其日志
常用的facility: lpr: 打印相关的日志 auth: 认证相关的日志 user: 用户相关的日志 cron: 计划任务相关的日志 kern: 内核相关的日志 mail: 邮件相关的日志 mark: 标记相关的日志 news: 新闻相关的日志 uucp: 文件copy相关的日志 daemon: 系统服务相关的日志 authpri: 授权相关的日志 security: 安全相关的日志 syslog: 由syslogd服务产生的日志信息,虽然服务名称改为rsyslogd,但是很多配置都还是沿用了syslogd的,这里并没有修改服务名 local0-local7:自定义相关的日志信息(自定义时可以使用通配符)priority:级别
debug #有调式信息的,日志信息最多
info #一般信息的日志,最常用
notice #最具有重要性的普通条件的信息
warning, warn #警告级别
err, error #错误级别,阻止某个功能或者模块不能正常工作的信息
crit #严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert #需要立刻修改的信息
emerg, panic #内核崩溃等严重信息
###从上到下,级别从低到高,记录的信息越来越少,如果设置的日志内性为err,则日志不会记录比err级别低的日志二、rsyslog配置
1、程序环境
程序包:rsyslog
配置文件:/etc/rsyslog.conf, /etc/rsyslog.d/*.conf
主程序:/usr/sbin/rsyslogd
模块路径:/lib64/rsyslog/
Unit File:/usr/lib/systemd/system/rsyslog.service
2、配置文件/etc/rsyslog.conf格式详解
由三部分组成,必须严格按照配置段位置添加配置
[root@centos6.8~]# grep "####" /etc/rsyslog.conf
#### MODULES ####
#### GLOBAL DIRECTIVES ####
#### RULES ####
MODULES:定义装载的模块,如接下来的使用mysql模块记录日志则需要在这里配置
GLOBAL DIRECTIVES:定义了全局的环境
RULES:定义了记录日志的设施以及等级等信息
定义规则的格式为:
facility.priority Target
facility可以使用的通配符:
*:所有
,:列表,如f1,f2,f3...
!:取反
priority可以使用的通配符:
*:所有日志级别
none:没有任何级别,也就是不记录日志信息
Target:目标,指日志保存的位置
可以使用的有:
文件,如/var/log/messages
用户:* 表示当前登录系统的所有用户
日志服务器:@host ##host: 必须要监听在tcp或udp协议514端口上提供服务;
管道:| COMMAND
例如: