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.www58058.com/52548

(0)
麥德良麥德良
上一篇 2016-10-24
下一篇 2016-10-24

相關推薦

  • 第4周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。     ~]# cp -r /etc/skel/ /home/tuser1     ~]# chmod 700 /home/tuser1/ 2、…

    Linux干貨 2016-12-25
  • 基于ssl協議和openssl工具建立私有CA

    前言     要自建CA需先了解openssl工具和ssl協議還有各加密類型     ssl(Secure Socket Layer)安全套接字層當前版本為3.0,瀏覽器與Web服務器之間的身份認證和加密數據傳輸,它工作在傳輸層和各應用層之間,用戶可以選擇是否使用ssl進行傳輸,選擇ssl協議將調用…

    Linux干貨 2015-05-07
  • 端口轉發實例

    什么是端口轉發?      端口轉發(Port forwarding),有時被叫做隧道,是安全殼(SSH) 為網絡安全通信使用的一種方法。端口轉發是轉發一個網絡端口從一個網絡節點到另一個網絡節點的行為,其使一個外部用戶從外部經過一個被激活的NAT路由器到達一個在私有內部IP地址(局域網內部)上的一個端口。 為什么需要端口轉發? …

    2017-04-13
  • 初學第一篇

    本菜雞出現了。。。 第一次接觸Linux,相對老司機要差遠了,這幾個月的辣眼睛,我就承包了,希望越來越好~~~ ————我是分割線,下面是正文————- 都是講過的東西,不過里面內容都是11手打,作業也自己做后再比對答案 一、–第一天的課程暫時不寫了,…

    Linux干貨 2017-09-02
  • Linux文件管理&bash特性

    Linux上的文件管理命令 目錄管理命令: mkdir:make directories mkdir [OPTION]… DIRECTORY… -p: 自動按需創建父目錄; -v: verbose,顯示詳細過程; -m MODE:直接給定權限; 注意:路徑基名方為命令的作用對象;基名之前的路徑必須得存在; r…

    Linux干貨 2016-09-28
  • linux進程管理及計劃任務

    進程管理: 什么是進程?   在Linux系統當中:觸法任何一個事件時,系統都會將它定義成為一個進程,并且給予這個進程一個ID,稱為PID,同時依據觸發這個進程的用戶與相關屬性關系,給予這個PID一組有效的權限設置。 進程與程序: 程序(program):通常為二進制程序放置在存儲媒介中,以物理文件的形式存在。 進程(process):程序被觸發后…

    Linux干貨 2016-09-13
欧美性久久久久