rsyslog日志服务详解

时间:2020-12-18 17:26:04

内容:

1、rsyslog日志服务简介

2、rsyslog的配置详解

3、实现日志服务器收集日志及last、lastb、dmseg命令的使用

4、实现日志存储在mysql中


一、rsyslog日志服务简介

    日志的概念好理解,日志作用可用于排障和追溯审计的等


        1、rsyslog是一个C/S架构的服务,可监听于某套接字,帮其它主机记录日志信息,在linux系统中可以分类两个日志:

        klogd:kernel,记录内核相关的日志

        syslogd:service,记录应用程序的日志

rsyslog:是CentOS 6以后的系统使用的日志系统,与之前的syslog日志系统相比,具有以下优点:

            支持多线程

            支持TCP、SSL、TLS、RELP等协议

            强大的过滤器,可实现过滤日志信息中的任意部分

            支持自定义输出格式

            适用于企业级别日志记录需求

            模块化

    2、日志的记录格式

        日期时间 主机进程[pid]:事件内容

rsyslog日志服务详解

二、rsyslog配置


    1、程序包:rsyslog

    程序环境:

    配置文件:/etc/rsyslog.conf, /etc/rsyslog.d/

    主程序:/usr/sbin/rsyslogd

    模块路径:/usr/lib64/rsyslog/

    Unit File:/usr/lib/systemd/system/rsyslog.service

    2、rsyslog中的术语:

        facility:设施、信道;

        auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, user, uucp, syslog, local0-local7

        priority:记录日志的等级,如果等级是info,代表包含了info以及以上的所有等级事件日志都记录

        debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)

    3、配置文件:

    由三部分组成:严格按照配置段位置添加配置

[12:58 root@centos6.8~]# grep "####" /etc/rsyslog.conf#### MODULES ####
#### GLOBAL DIRECTIVES ####
#### RULES ####

        MODULES:定义了模块的选修,如接下来的使用mysql模块记录日志则需要在这里配置

        GLOBAL DIRECTIVES:定义了全局的环境

        RULES:定义了记录日志的设施以及等级等信息

其格式为:

日志定义格式: facility.priority    Target    facility: 设施,从功能或程序上对日志进行分类,并由专门的工具负责记录日志;      常用的facility:        lpr: 打印相关的日志        auth:认证相关的日志        user:用户相关的日志        cron:计划任务相关的日志        kern:内核相关的日志        mail:邮件相关的日志        mark:标记相关的日志        news:新闻相关的日志        uucp:文件copy相关的日志        daemon:系统服务相关的日志        authpri: 授权相关的日志        security:安全相关的日志        local0-local7:自定义相关的日志信息(自定义时可以使用通配符)        通配符:           *:所有           f1,f2,f3......:列表           !:取反            priority:日志级别    常用的日志级别:debug:   调试info:   消息notice: 注意    warn,warning: 警告err,error: 错误crit: 严重级别alert: 需要立即修改该的信息emerg,panic: 内核崩溃,内核恐慌等严重的信息       通配符:       *:所有日志级别       none:没有任何级别,也就是不记录日志信息                 Target:文件路径    可以使用的有:        /var/log/messages        用户:*当前登录系统的所有用户        日志服务器:@SERAVER_IP        管道:| COMMAND

          

举例:mail.info  /var/log/maillog:  比指定级别更高的日志级别,包括指定级别自身,保存到/var/log/maillog中mail.=info  /var/log/maillog: 明确指定日志级别为info,保存至/var/log/maillogmail.!info  /var/log/maillog: 除了指定的日志级别(info)所有日志级别信息,保存至/var/log/maillog*.info      /var/log/maillog: 所有facility的info级别,保存至/var/log/maillogmail.*     /var/log/maillog:  mail的所有日志级别信息,都保存至/var/log/maillogmail.notice;news.info  /var/log/maillog: mail的notice以上记得日志级别和news的info以上的级别保存至/var/log/maillogmail,news.crit  -/var/log/maillog:  mail和news的crit以上的日志级别保存/var/log/maillog中;“-”代表异步模式


三、实现日志服务器收集日志

        前面已经介绍,rsyslog是一个C/S架构,可以通过套接字来进行监听记录工作,起可以基于TCP和UDP工作,默认的监听端口是514,只需要在modules打开即可:

        1、修改服务端配置,打开服务监听端口,并重启服务:

#### modules ####…………# Provides UDP syslog reception$ModLoad imudp$UDPServerRun 514# Provides TCP syslog reception$ModLoad imtcp$InputTCPServerRun 514[13:05 root@centos6.8~]# service rsyslog restartShutting down system logger:                               [  OK  ]Starting system logger:                                    [  OK  ]


        2、在客户端的配置中,定义将日志发往服务端:

#### RULES ####*.*     @10.1.252.109


        3、服务端已经收到日志:

[13:15 root@centos6.8~]# tail /var/log/messagesOct 16 12:48:36 centos6 kdump: started upOct 16 12:48:39 centos6 abrtd: Init complete, entering main loopOct 16 13:05:50 centos6 kernel: Kernel logging (proc) stopped.Oct 16 13:05:50 centos6 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1547" x-info="http://www.rsyslog.com"] exiting on signal 15.Oct 16 13:05:50 centos6 kernel: imklog 5.8.10, log source = /proc/kmsg started.Oct 16 13:05:50 centos6 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="2418" x-info="http://www.rsyslog.com"] startOct 18 10:20:43 localhost kernel: imklog 5.8.10, log source = /proc/kmsg started.Oct 18 10:20:43 localhost rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="2205" x-info="http://www.rsyslog.com"] startOct 18 10:26:20 localhost root: Oct 18 10:26:20 localhost root:


    4、其它几个日志文件:

        last -num:记录登录系统成功的记录

        lastb -num :记录登录系统失败的记录

    命令的读取日志文件:

        /var/log/btmp:登录当前系统的所有的失败的尝试;

        /var/log/wtmp:所有成功登录至当前系统的相关信息;

        dmesg:系统引导过程中的日志信息;

        /var/log/dmesg:系统引导过程中的日志信息; 

    文本查看工具;

        也可以使用dmesg命令;

四、实现日志存储在mysql中

    前提:准备好msql server或mariadb server;


    1、安装rsyslog连接至mysql server的驱动模块;

[13:24 root@centos6.8~]# yum install -y rsyslog-mysql [13:24 root@centos6.8~]# rpm -ql rsyslog-mysql/lib64/rsyslog/ommysql.so/usr/share/doc/rsyslog-mysql-5.8.10/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

        可以看到其实rsyslog模块提供的启动mysql的模块还有createDB.sql,它的作用就是定义了日志的记录表格式,可以直接导入该sql语句到mysql即可


        2、在mysql server准备rsyslog专用的用户账号;

mysql>GRANT ALL ON Syslog.* TO 'rsyslog'@'127.0.0.1' IDENTIFIED BY 'rsyslogpass';mysql>GRANT ALL ON Syslog.* TO 'rsyslog'@'local' IDENTIFIED BY 'rsyslogpass';mysql> FLUSH PRICVILEGES

        3、导入该sql语句到mysql即可,生成所需要的数据库和表;

[13:24 root@centos6.8~]# mysql -ursyslog -h127.0.0.1 -p123456 <  /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sqlmysql> USE SyslogReading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> SHOW TABLES;+------------------------+| Tables_in_Syslog       |+------------------------+| SystemEvents           || SystemEventsProperties |+------------------------+2 rows in set (0.00 sec)mysql> DESC SystemEvents    -> ;+--------------------+------------------+------+-----+---------+----------------+| Field              | Type             | Null | Key | Default | Extra          |+--------------------+------------------+------+-----+---------+----------------+| ID                 | int(10) unsigned | NO   | PRI | NULL    | auto_increment || CustomerID         | bigint(20)       | YES  |     | NULL    |                || ReceivedAt         | datetime         | YES  |     | NULL    |                || DeviceReportedTime | datetime         | YES  |     | NULL    |                || Facility           | smallint(6)      | YES  |     | NULL    |                || Priority           | smallint(6)      | YES  |     | NULL    |                || FromHost           | varchar(60)      | YES  |     | NULL    |                || Message            | text             | YES  |     | NULL    |                || NTSeverity         | int(11)          | YES  |     | NULL    |                || Importance         | int(11)          | YES  |     | NULL    |                || EventSource        | varchar(60)      | YES  |     | NULL    |                || EventUser          | varchar(60)      | YES  |     | NULL    |                || EventCategory      | int(11)          | YES  |     | NULL    |                || EventID            | int(11)          | YES  |     | NULL    |                || EventBinaryData    | text             | YES  |     | NULL    |                || MaxAvailable       | int(11)          | YES  |     | NULL    |                || CurrUsage          | int(11)          | YES  |     | NULL    |                || MinUsage           | int(11)          | YES  |     | NULL    |                || MaxUsage           | int(11)          | YES  |     | NULL    |                || InfoUnitID         | int(11)          | YES  |     | NULL    |                || SysLogTag          | varchar(60)      | YES  |     | NULL    |                || EventLogType       | varchar(60)      | YES  |     | NULL    |                || GenericFileName    | varchar(60)      | YES  |     | NULL    |                || SystemID           | int(11)          | YES  |     | NULL    |                |+--------------------+------------------+------+-----+---------+----------------+24 rows in set (0.00 sec)

        4、配置rsyslog加载ommysql模块

#### MODULES ####......$ModLoad ommysql

        5、配置RULES,将所期望的日志信息记录于mysql中;

        其格式为:

            facility.priority :ommysql:DBHOST,DB,DBUSER,DBUSERPASS

        所以添加以下信息:

*.* :ommysql:127.0.0.1,Syslog,rsyslog,123456

        6、启动mysql服务,并重启rsyslog服务,mysql已经记录日志,到此为止,日志信息已经成功的存储于数据库中;

mysql> SELECT * FROM SystemEvents\G*************************** 1. row ***************************                ID: 1        CustomerID: NULL        ReceivedAt: 2016-10-16 13:35:46DeviceReportedTime: 2016-10-16 13:35:46          Facility: 0          Priority: 6          FromHost: centos6           Message: imklog 5.8.10, log source = /proc/kmsg started.        NTSeverity: NULL        Importance: NULL       EventSource: NULL         EventUser: NULL     EventCategory: NULL           EventID: NULL   EventBinaryData: NULL      MaxAvailable: NULL         CurrUsage: NULL          MinUsage: NULL          MaxUsage: NULL        InfoUnitID: 1         SysLogTag: kernel:      EventLogType: NULL   GenericFileName: NULL          SystemID: NULL*************************** 2. row ***************************                ID: 2        CustomerID: NULL        ReceivedAt: 2016-10-16 13:35:46DeviceReportedTime: 2016-10-16 13:35:46          Facility: 5          Priority: 6          FromHost: centos6           Message:  [origin software="rsyslogd" swVersion="5.8.10" x-pid="3081" x-info="http://www.rsyslog.com"] start        NTSeverity: NULL        Importance: NULL       EventSource: NULL         EventUser: NULL     EventCategory: NULL           EventID: NULL   EventBinaryData: NULL      MaxAvailable: NULL         CurrUsage: NULL          MinUsage: NULL          MaxUsage: NULL        InfoUnitID: 1         SysLogTag: rsyslogd:      EventLogType: NULL   GenericFileName: NULL          SystemID: NULL*************************** 3. row ***************************                ID: 3        CustomerID: NULL        ReceivedAt: 2016-10-16 13:35:50DeviceReportedTime: 2016-10-18 10:48:37          Facility: 18          Priority: 6          FromHost: localhost           Message:  nidhai        NTSeverity: NULL        Importance: NULL       EventSource: NULL         EventUser: NULL     EventCategory: NULL           EventID: NULL   EventBinaryData: NULL      MaxAvailable: NULL         CurrUsage: NULL          MinUsage: NULL          MaxUsage: NULL        InfoUnitID: 1         SysLogTag: root:      EventLogType: NULL   GenericFileName: NULL          SystemID: NULL*************************** 4. row ***************************                ID: 4        CustomerID: NULL        ReceivedAt: 2016-10-16 13:35:52DeviceReportedTime: 2016-10-18 10:48:39          Facility: 18          Priority: 6          FromHost: localhost           Message:  D        NTSeverity: NULL        Importance: NULL       EventSource: NULL         EventUser: NULL     EventCategory: NULL           EventID: NULL   EventBinaryData: NULL      MaxAvailable: NULL         CurrUsage: NULL          MinUsage: NULL          MaxUsage: NULL        InfoUnitID: 1         SysLogTag: root:      EventLogType: NULL   GenericFileName: NULL          SystemID: NULL4 rows in set (0.00 sec)


        OK,更多文章请关注我的博客

本文出自 “6638225” 博客,转载请与作者联系!