rsyslog学习

一、rsyslog日志服务简介

二、rsyslog的配置详解

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

四、实现日志存储在mysql中

一、rsyslog日志服务简介

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

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

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

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

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

    支持多线程

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

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

    支持自定义输出格式

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

    模块化

2、日志的记录格式

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

二、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/maillog
mail.!info  /var/log/maillog: 除了指定的日志级别(info)所有日志级别信息,保存至/var/log/maillog
*.info      /var/log/maillog: 所有facility的info级别,保存至/var/log/maillog
mail.*     /var/log/maillog:  mail的所有日志级别信息,都保存至/var/log/maillog
mail.notice;news.info  /var/log/maillog: mail的notice以上记得日志级别和news的info以上的级别保存至/var/log/maillog
mail,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 restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]

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

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

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

[13:15 root@centos6.8~]# tail /var/log/messages
Oct 16 12:48:36 centos6 kdump: started up
Oct 16 12:48:39 centos6 abrtd: Init complete, entering main loop
Oct 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"] start
Oct 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"] start
Oct 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.sql
mysql> USE Syslog
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> 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:46
DeviceReportedTime: 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:46
DeviceReportedTime: 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:50
DeviceReportedTime: 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:52
DeviceReportedTime: 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: NULL
4 rows in set (0.00 sec)

原创文章,作者:麦德良,如若转载,请注明出处:http://www.178linux.com/52548

(0)
上一篇 2016-10-24 09:08
下一篇 2016-10-24 09:09

相关推荐

  • MySQL慢日志监控脚本实例剖析

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1577326        公司线上的 MySQL 慢日志,之前一直没有做好监控。趁着上周空闲,我就把监控脚本写了下,…

    Linux干货 2016-08-15
  • RHCE系列之ntp服务器—-实践篇

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1319520 上篇Linux实战部署系列之ntp服务器—-理论篇为大家介绍时间的相关概念和ntp的原理,本篇博文将带大家一起部署生产环境中实现简单…

    Linux干货 2016-08-15
  • 一些基础命令的基本用法介绍

    节选一部分常用参数用法 基础命令 tty 切换X Window或命令行模式 Ctrl+Alt+F1~F6  tty1~tty6文字界面 Ctrl+Alt+F7  图形界面 startx 登录图形界面系统 date 日期 date +%Y/%m/%d  当前日期 date +%H:…

    Linux干货 2016-10-31
  • GOPS 2016全球运维大会 • 北京站

    GOPS 2016全球运维大会 • 北京站已经圆满落幕,最新GOPS大会推荐:GOPS2017全球运维大会 • 深圳站 基本信息: GOPS2017全球运维大会 • 深圳站 时间:2017-04-21 08:00:00 至 2017-04-22 18:00:00结束 地点:深圳    会议规模:5000人 会议详情:http://www….

    Linux干货 2016-11-03
  • ☞Nginx

    Nginx 概述 yum安装Nginx 编译安装Nginx 主要文件路径 主配置文件nginx.conf main block:全局配置段 http/https 协议相关配置段 性能优化初步 调试、定位问题的配置 events段配置 worker、method、accept_mutex http协议相关配置段 虚拟主机 基于PORT、IP、Server Na…

    Linux干货 2016-10-24
  • yum详解及源码包的编译安装

    yum的功能:     在我们使用rpm包安装程序时,各个程序包之间可能存在非常严重的依赖关系,这就导致我们在安装一个包的同时还需要安装其他存在依赖关系的包,因此我们可以使用rpm包的前端管理工具yum,可通过yum所支持的文件共享机制来解决各个rpm包之间的依赖关系。 yum仓库的配置文件:   …

    Linux干货 2016-08-25