rsyslog日志服務

一、知識整理:

1、日志服務rsyslogd新特點:

    多線程;

    基于SSL/TLS/UDP/TCP/RELP網絡協議傳輸日志信息;

    強大的過濾器,實現過濾日志信息中任何部分的內容;

    自定義的輸出格式;

    日志消息的及時分析框架

    存儲日志信息與MySQL、PGSQL、OracleRDBMS

    配置文件中可以寫簡單的邏輯判斷

    syslog配置文件相兼容

2、常見日志文件及作用

    /var/log/cron 記錄了系統定時任務相關的日志;

    /var/log/cups 記錄打印信息的日志;

    /var/log/dmesg 記錄了系統在開機時內核自檢的信息,也可以使用dmesg命令直接查看內核自檢信息。

    /var/log/btmp 記錄錯誤登錄的日志,這個文件是二進制文件,不能直接vi查看,而要使用lastb命令查看;

    /var/log/lastlog 記錄系統中所有用戶最后一次的登錄時間的日志。這個文件也是二進制文件,不能直接vi,而要使用lastlog命令查看。

    /var/log/mailog 記錄郵件信息;

    /var/log/message 記錄系統重要信息的日志,記錄Linux系統的絕大多數重要信息,如果系統出現問題,首先要檢查的就是應該是這個日志文件;

    /var/log/secure 記錄驗證和授權方面的信息,只要涉及賬戶和密碼的程序都會記錄。比如說系統的登錄,ssh的登錄,su切換用戶,sudo授權,甚至添加用戶和修改用戶密碼;

    /var/log/wtmp 永久記錄所有用戶的登錄、注銷信息,同時記錄系統的啟動、重啟、關機事件。同樣這個文件也是一個二進制文件不能直接vi而需要使用last命令來查看;

    /var/run/utmp 記錄當前已經登錄的用戶的信息。這個文件會隨著用戶的登錄和注銷而不斷變化,只記錄當前登錄用戶的信息,同樣這個文件不能直接vi,要使用w,who,users等命令;

    除了系統默認的日志外,rpm包安裝的系統服務也默認把日志記錄在/var/log/下(源碼包在指定目錄下)。不過這些日志不是系統記錄和管理的,而是各個服務使用自己的日志管理文檔來記錄。

3、基本格式:日志基本格式

日志產生時間;發生事件的服務器主機名;發生事件的服務名或程序名;具體信息。

日志配置文件/etc/rsyslog.conf,/etc/rsyslog.d/* ,配置文件格式簡介:

服務名稱[連接符號]日志等級      日志記錄位置

(1)服務名稱(facility):auth 安全和認證相關信息(不推薦使用authpriv替代)

    authpriv 安全和認證信息(私有的)

    cron 系統定時任務crontat產生的日志

    daemon 和各個守護進程相關的日志

    ftp    ftp守護進程產生的日志

    kern 內核產生的日志(不是用戶進程產生的)

    local0-7 為本地使用預留的服務

    lpr   打印產生的日志

    mail     郵件日志信息

    syslog syslogd服務產生的日志信息,雖然服務名稱改為rsyslogd,但是很多配置都還是沿用了syslogd的,這里并沒有修改服務名

    user 用戶等級類別的日志信息

    uucp uucp子系統的日志信息,uucp是早期Linux系統進行數據傳遞的協議,后來也常用在新聞組服務中

(2)連接符:. 只要比指定等級高的都記錄下來

    .= 只記錄等于指定等級的日志

    .! 代表不等于指定等級的日志都記錄

(3)日志等級(priority):debug  一般的調試信息說明

    info 基本的通知信息

    notice  普通信息,但是有一定的重要性

    warning 警告信息,但是還不會影響到服務或系統的運行

    err 錯誤信息,已經可以影響到服務或系統的運行了

    crit 臨界狀況信息

    alert 警告狀態信息,必須采取行動

    emerg 疼痛等級信息,系統已經無法使用

(4)可使用的日志記錄位置

    /var/log/

    系統設備文件如/dev/lp0

    轉發給遠程主機,如@192.168.0.1.210:514

    用戶名,如root

    模塊: 如:ommysql:

4、日志輪替

日志文件的命名規則:

如果配置文件中擁有dateext”參數,那么日志會用日期來作為日志文件的后綴,例如secure-20150202.這樣的話日志文件名不會重疊,所有也就不需要日志文件的改名,只需要保存指定的日志個數,刪除多余的日志文件即可。

日志輪替(logrotate)配置文件/etc/logrotate.conf

daily 日志輪替周期是每天

weekly 每周

monthly 每月

rotate #   保留日志的文件的個數,0指沒有備份

compress  日志輪替時,舊的日志進行壓縮

creat  MODE  OWNER  GROUP

 建立新日志,同時指定新日志的權限與所有者和所屬組;如creat 0600 root utmp

mail address 當日志輪替時,輸出內容通過郵件發送到指定的郵件地址

missingok 如果日志不存在,則忽略該日志的警告信息

notifempty 如果日志為空文件,則不進行日志輪替

minsize 大小  日志輪替的最小值,日志達到最小值才會輪替

size 大小

dateext 使用日期作為日志輪替文件的后綴 如secure-20155555

注意:rpm包安裝的程序默認輪替,源碼包安裝的需要自己修改配置或添加配置、指定日志目錄等:

    vim /etc/logrotate.conf 打開后添加

    /usr/local/apache2/logs/access_logerror_log或其他日志) {

    daily

    create

    rotate 30

    }  (也可以在定義虛擬主機時定義)

日志由/sbin/init負責記錄。

 

二、命令詳解:

1logrotate命令 [] 配置文件名

如果此命令沒有選項,則會按照配置文件中的條件進行日志輪替

-v 顯示日志輪替過程

-f 強制進行日志輪替

2、logger命令:

logger -a shell command interface to the syslog(3) system log module

logger [ options] [message]

logger -p local2.notice  "how are you"

 

三、課后練習:

LogAnalyzer 是一款syslog日志和其他網絡事件數據的Web前端。它提供了對日志的簡單瀏覽、搜索、基本分析和一些圖表報告的功能。數據可以從數據庫或一般的 syslog文本文件中獲取,所以LogAnalyzer不需要改變現有的記錄架構?;诋斍暗娜罩緮祿?,它可以處理syslog日志消 息,Windows事件日志記錄,支持故障排除,使用戶能夠快速查找日志數據中看出問題的解決方案。

LogAnalyzer 獲取客戶端日志會有兩種保存模式,一種是直接讀取客戶端/var/log/目錄下的日志并保存到服務端該目錄下,一種是讀取后保存到日志服務器數據庫中,推薦使用后者。LogAnalyzer 采用php開發,所以日志服務器需要php的運行環境,本文采用LAMP。

步驟如下:

1)準備mysql,更改mysql配置文件my.cnf,添加如下:

    skip_name_resolve=ON

    innodb_file_per_table=1

(2)安裝rsyslog連接至mysql server的驅動模塊;

[root@localhost ~]# yum install rsyslog-mysql

3)在mysql-server準備rsyslog專用的用戶賬號,授權:

MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'syslog'@'localhost' IDENTIFIED BY 'magedu';
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'syslog'@'127.0.0.1' IDENTIFIED BY 'magedu';
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

生成所需要的數據庫和表;使用重定向讀入模塊的命令:

[root@localhost ~]# mysql < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql

(4)啟用模塊:

[root@localhost ~]# vim /etc/rsyslog.conf

MODULES一欄中添加:

    $ModLoad ommysql

    更改*.*日志生成的位置:添加

    *.*    :ommysql:127.0.0.1,Syslog,syslog,magedu

5)重啟rsyslog服務

6)檢測:啟動mysql

[root@localhost ~]# logger -p local3.notice "how are youab"
[root@localhost ~]# logger -p local2.notice "how are youa"
MariaDB [Syslog]> SELECT * FROM SystemEvents\G

*************************** 11. row ***************************

                ID: 11

        CustomerID: NULL

        ReceivedAt: 2016-10-18 17:15:06

DeviceReportedTime: 2016-10-18 17:15:06

          Facility: 18

          Priority: 5

          FromHost: localhost

           Message: how are youa

        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

11 rows in set (0.00 sec)

7)配置loganalyzer

    首先準備amp環境;安裝httpd、php-gd(支持畫圖形)、phpphp-server

    然后安裝loganalyzer:

    cp -a src /html/

    ln -sv

    touch config.php

    chmod 666 config.php

    使用瀏覽器進行配置

    Table type monitorware

    chmod 644(安裝完成后)

以上步驟也可以將原目錄contrib中的兩個腳本分別在安裝前后執行。

安裝步驟如下:

blob.png

此處注意:安裝過程中出現了這個報錯,找了各種日志也沒發現原因,最后發現是需要關閉selinux。

blob.png

blob.png

blob.png

blob.png


blob.png

安裝完成。

原創文章,作者:SilencePavilion,如若轉載,請注明出處:http://www.www58058.com/53730

(0)
SilencePavilionSilencePavilion
上一篇 2016-10-24
下一篇 2016-10-24

相關推薦

  • Linux中的賬號管理(上)

    一背景  Linux  是  一個真實的、完整的多用戶多任務操作系統,多用戶多任務就是可以在系統上建立多個用戶,而多個用戶可以在同一時間內登錄同一個系統執行各自不同的任務,而互不影響,例如某臺linux服務器上有4個用戶,分別是root、www、ftp和mysql,在同一時間內,root用戶可能在查看系統日志,管理維護系統,ww…

    Linux干貨 2016-08-04
  • 馬哥教育21期網絡班—第14周課程+練習——>iptables 練習

    系統的INPUT和OUTPUT默認策略為DROP; iptables -P INPUT DROP iptables -P OUTPUT DROP [root@localhost ~]# iptables -L -n  Chain INPUT…

    Linux干貨 2016-10-24
  • shell 腳本之數組 和 yum 【下】

    shell 腳本之數組 和 yum 【下】 數組 ?  變量:存儲單個元素的內存空間 ?  數組:存儲多個元素的連續的內存空間,相當于多個變量的 集合。 ?  數組名和索引        索引:編號從0開始,屬于數值索引        注意:索引可支…

    Linux干貨 2016-08-24
  • 文本編輯器—sed

    一、sed介紹 sed 一種流式編輯器。一個流式編輯器通常對來自輸入流(一個文件或者是管道的輸入)的文本進行轉換處理。在某些方面類似支持腳本編輯的編輯器,sed在多輸入情況下只開放一個通道工作,因此更加效率。sed與其他編輯器最大的區別在于,能對管道輸入的文本進行過濾處理。 二、sed工作機制 sed保持兩個數據緩沖區:主要活動的模式空間,以及輔助性的保持空…

    Linux干貨 2016-08-12
  • HTTP協議

    HTTP協議   HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用于從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。HTTP是一個基于TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。HTTP協議工作于客戶端-服務端架構之上。瀏覽器作為HT…

    Linux干貨 2017-02-15
  • 第6天預習xargs命令的用法

    Xargs用法詳解 1. 簡介   之所以能用到這個命令,關鍵是由于很多命令不支持|管道來傳遞參數,而日常工作中有有這個必要,所以就有了xargs命令,例如: find /sbin -perm +700 |ls -l     &n…

    Linux干貨 2016-08-05
欧美性久久久久