Linux 日誌管理 Rsyslog Loganalyzer

Syslog常被稱爲系統日誌或系統記錄,是一種用來在互聯網協議(TCP/IP)的網上中傳遞記錄檔消息的標準。這個詞彙常用來指涉實際的syslog 協議,或者那些提交syslog消息的應用程序或數據庫。

syslog協議屬於一種主從式協議:syslog發送端會發送出一個小的文字消息(小於1024位組)到syslog接收端。接收端通常名爲“syslogd”、“syslog daemon”或syslog服務器。系統日誌消息可以被以UDP協議及╱或TCP協議來發送。這些數據是以明碼類型被髮送。不過由於SSL加密外套(例如Stunnel、sslio或sslwrap等)並非syslog協議本身的一部分,因此可以被用來透過SSL/TLS方式提供一層加密。

Rsyslog 是syslog 的升級版,一個快速處理收集系統日誌的程序,提供了高性能、安全功能和模塊化設計,將多種來源輸入輸出轉換結果到目的地。

Rsyslog的傳輸方式有三種:

  • UDP 傳輸協議 

  • 基於傳統UDP協議進行遠程日誌傳輸,也是傳統syslog使用的傳輸協議;

  • 可靠性比較低,但性能損耗最少

  • 在網絡情況比較差,或者接收服務器壓力比較高情況下,可能存在丟日誌情況。

  • TCP 傳輸協議 

  • 基於傳統TCP協議明文傳輸,需要回傳進行確認,可靠性比較高;

  • 但在接收服務器宕機或者兩者之間網絡出問題的情況下,會出現丟日誌情況。

  • RELP 傳輸協議 

  • RELP(Reliable Event Logging Protocol)是基於TCP封裝的可靠日誌消息傳輸協議;

  • 是爲了解決TCP 與 UDP 協議的缺點而在應用層實現的傳輸協議,也是三者之中最可靠的。

  • 對於線上服務器,爲了日誌安全起見,建議使用 RELP 協議進行傳輸。


  • 查看系統中 Rsyslog 版本信息

  • Rsyslog 的主配置文件爲 /etc/rsyslog.conf 
  • Rsyslog 的配置主要有以下模塊:
  • modules:模塊,配置加載的模塊,如:ModLoad imrelp  配置加載RELP傳輸模塊
  • global directives:全局配置,配置ryslog守護進程的全局屬性,比如主信息隊列大小(MainMessageQueueSize)
  • rules:規則(選擇器+動作),每個規則由兩部分組成,selector部分和action部分,這兩部分由一個或多個空格或tab分隔,selector部分指定源和日誌等級,action部分指定對應的操作

  • 常用的modules

  • imudp,傳統方式的UDP傳輸,有損耗
  • imtcp,基於TCP明文的傳輸,只在特定情況下丟失信息,並被廣泛使用
  • imrelp,RELP傳輸,不會丟失信息

  • 規則(rules)

規則的選擇器(selectors)由兩部分組成,設施和優先級,由點號.分隔。多個選擇器用;分隔,如:*.info;mail.none

  • facility:設施,從功能或程序上對日誌收集進行分類

內建的日誌設施有:
auth(security), authpriv:認證授權和安全相關的消息
kern:來自Linux內核的消息
mail:郵件服務系統的各種組件
mark:防火牆標記
cron:週期任務計劃相關的信息

daemon:守護進程產生的信息
news:網絡消息子系統
lpr:打印相關的日誌信息
user:用戶進程相關的信息
local0 to local7:保留,本地使用

  • priority:優先級,日誌級別(由低到高)

debug:包含詳細的開發情報的信息,通常只在調試一個程序時使用
info:情報信息,正常的系統消息,比如騷擾報告,帶寬數據等,不需要處理
notice: 不是錯誤情況,也不需要立即處理
warning: 警告信息,不是錯誤,比如系統磁盤使用了85%等
err:錯誤,不是非常緊急,在一定時間內修復即可
crit:重要情況,如硬盤錯誤,備用連接丟失
alert:應該被立即改正的問題,如系統數據庫被破壞,ISP連接丟失
emerg:緊急情況,需要立即通知技術人員

指定級別

功能

*

所有級別

none

沒有級別

priority

此級別及高於此級別的所有級別

=priority

僅此級別

  • 動作 (action)

action是規則描述的一部分,位於選擇器的後面,規則用於處理消息。總的來說,消息內容被寫到一種日誌文件上,但也可以執行其他動作,比如寫到數據庫表中或轉發到其他主機。

寫到mysql數據庫中


  • 實驗環境
  • LOG Server CentOS 7.5 192.168.1.2
  • LOG Client CentOS 7.5 192.168.1.3

  • 首先在 LOGServer 192.168.1.2 端安裝 Rsyslog、以及RELP協議支持:rsyslog-relp
  • yum -y install rsyslog rsyslog-relp
  • 編輯 /etc/rsyslog.conf 主配置文件

  • vim /etc/rsyslog.conf

  • 在#### MODULES ####下面添加以下信息:

    $ModLoad imrelp    #開啓RELP傳輸協議
    $InputRELPServerRun 514   #設定監聽端口

  • 編輯 /etc/sysconfig/rsyslog 開啓傳輸端口監聽

  • vim /etc/sysconfig/rsyslog

    -r指定監聽端口,-c2 使用兼容模式

  • SYSLOGD_OPTIONS="-r514 -c2"

  • 確認無誤 啓動 Rsyslog 服務

  • systemctl start rsyslog

  • 查看 514 端口是否被監聽

  • ss -alnt | grep 514

  • 在服務器端用 tail -f /var/log/messages 追蹤日誌

  • tail -f /var/log/messages


  • 接下來在 LOGClient 192.168.1.3 端安裝配置 Rsyslog
  • yum -y install rsyslog rsyslog-relp
  • 編輯 /etc/rsyslog.conf 添加以下信息:
    $ModLoad omrelp        #指定傳輸協議
    *.*    :omrelp:192.168.1.2:514     #設置那些LOG日誌被記錄以及LOG服務器IP和端口
  • 重啓 Rsyslog 服務
  • systemctl restart rsyslog
  • 發送一條測試日誌
  • logger -t kern -p err "This is a testlog"


  • 然後回到 LOG Server 192.168.1.2 端查看是否接收到剛纔的測試 LOG
  • tail -f /var/log/messages
  • Mar 22 15:47:29 C75_192_168_1_3 kern: This is a testlog


Loganalyzer是一款syslog日誌和其他網絡時間數據的web前端,它提供了對日誌的簡單瀏覽、搜索、基本分析和一些圖表報告的功能。數據可以從數據庫或一般syslog文本文件中獲取,所有loganalyzer不需要改變現有的記錄架構。基於當前的日誌數據,它可以處理syslog日誌消息windows事件日誌記錄,支持故障排除,使用戶能快速查找日誌數據中看出問題的解決方案。

  loganalyzer獲取客戶端日誌會有兩種保存模式,一種是直接讀取客戶端/var/log目錄下的日誌並保存到服務端該目錄下,一種是讀取後保存日誌服務器數據庫中,這裏測試的是mariadb數據庫

  Loganalyzer基於php開發,需要搭建php運行環境

  • 接下來在 LOGServer 192.168.1.2 端安裝配置 lamp 和 日誌管理工具:loganalyzer
  • lamp 具體設置請參照拙作:https://blog.csdn.net/gaofei0428/article/details/104058580https://blog.csdn.net/gaofei0428/article/details/104224132
  • yum -y install mariadb mariadb-server php php-fpm php-gd php-mysql httpd rsyslog rsyslog-mysql rsyslog-relp
  • 導入所需要的數據庫和表:

  • mysql -uroot -p123456 < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql

  • mysql-createDB.sql 是安裝 rsyslog-mysql 生成的,可以用命令查看

    rpm –ql rsyslog-mysql

  • 添加、授權用戶 rsyslog 使用 Syslog 庫

  • mysql -uroot -p123456 -e "GRANT ALL ON Syslog.* TO 'rsyslog'@'%' IDENTIFIED BY 'rsyspass';" #需要從網絡登陸,%或者 192.168.1.%,localhost只能本地登陸。

  • mysql -uroot -p123456 -e "flush privileges;"   #立即刷新權限

  • 編輯 /etc/rsyslog.conf 主配置文件

  • vim /etc/rsyslog.conf

  • 在#### MODULES ####下面添加以下信息:

    $ModLoad imrelp    #開啓RELP傳輸協議
    $InputRELPServerRun 514   #設定監聽端口

    $ModLoad ommysql   #開啓 mysql 模塊

  • 在#### RULES #### 下面添加

    # rule, send to mysql
    #*.*  :ommysql:database-server,database-name,database-userid,database-password
    *.*     :ommysql:192.168.1.2,Syslog,rsyslog,rsyspass

  • 從 loganalyzer 官網下載
  • wget https://download.adiscon.com/loganalyzer/loganalyzer-4.1.7.tar.gz
  • tar xf loganalyzer-4.1.7.tar.gz
  • cd loganalyzer-4.1.7
  • cp -ar ./src/* /data/web/
  • cp -ar ./contrib/*.sh /data/web/
  • cd /data/web
  • chmod +x ./*.sh
    ./configure.sh   #生成 config.php  文件,屬性爲 666
  • 確認無誤啓動服務
  • systemctl start httpd
  • systemctl start php-fpm
  • systemctl restart rsyslog
  • 打開瀏覽器輸入 http://192.168.1.2
  • 點擊 here 開始配置
  • Step 1 默認即可 點擊 Next
  • Step 2 測試是否可以寫入 config.php 點擊 Next
  • Step 3 默認 點擊 Next
  • Step 7 

    Source Type MYSQL Native  #選擇 MYSQL 記錄方式
    Select View  EventLog Fields  

    Database Type Options  

    Table type MonitorWare  #默認
    Database Host  192.168.1.2  #MariaDB Server IP
    Database Name  Syslog  #選擇數據庫
    Database Tablename  SystemEvents  #選擇表,注意大小寫!
    Database User  rsyslog   #MariaDB授權用戶
    Database Password  rsyspass #用戶密碼
    Enable Row Counting   #默認

  • Step 8 Finish

  • chmod 644 /data/web/config.php

  •  LOGClient 192.168.1.3 端,編輯 /etc/rsyslog.conf 修改以下信息:
  • $Modload ommysql     
    *.* :ommysql:192.168.1.2,Syslog,rsyslog,rsyspass
  • logger -t kern -p err "This is a testlog"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章