rsyslog日誌儲存到mysql資料庫中並利用loganalyzer進行web圖形化分析管理

來源:互聯網
上載者:User

系統日誌的重要性,相信大家都深有體會,當發生故障後,第一時間就是查看相關報錯資訊和日誌資訊,以定位問題所在,還可以基於日誌,進行日誌的分析,從而擷取系統運行狀態的一些規律,本篇就介紹關於系統日誌的先關內容,具體分為:

1、rsyslog相關概念的介紹

2、自訂日誌儲存的通道(facility)和儲存位置,讓rsyslog作為服務端記錄rsyslog用戶端的日誌資訊

3、定義rsyslog的日誌儲存在mysql資料庫中

4、利用loganalyzer實現對儲存在mysql資料庫中的rsyslog日誌資訊,進行web圖形化分析管理

環境:

CentOS7系統,IP為10.1.32.72

LAMP組合採用:yum方式的rpm包安裝

httpd-2.4

php-fpm(也就是php基於fastcgi方式與httpd互動的實現)

mariadb

第一章    rsyslog相關概念的介紹

1、rsyslog是什麼

rsyslog是系統上用來進行日誌管理的工具,其C/S架構的程式,可以為當前系統記錄系統相關的日誌資訊,也支援為其他軟體或其他的系統記錄日誌資訊,其相關特性表現為:

多線程工作;

基於UDP、TCP、協議,還可以基於tls/ssl進行加密通訊,還可以基於RELP進行通訊;

儲存日誌資訊於MySQL、PostgreSQL(PGSQL)、Oracle等RDBMS;

強大的過濾器,實現過濾日誌資訊中任何部分的內容;

自訂的輸出格式;

2、rsyslog程式環境

程式包:

rsyslog   程式包

rsyslog-mysql   支援將日誌資訊記錄到mysql的程式包

設定檔:

/etc/rsyslog.conf、/etc/rsyslog.d/*.conf

主程式:

/usr/sbin/rsyslogd

模組組件:

/usr/lib64/rsyslog/

Unit file:

/usr/lib/systemd/system/rsyslog.service

3、rsyslog相關的術語

facility:收集日誌的通道設施,通道,可以理解為日誌通過那個虛擬設備發送進來

常見的facility有:

auth         # 認證相關的

authpriv     # 許可權,授權相關的

cron         # 任務計劃相關的

daemon       # 守護進程相關的

kern         # 核心相關的

lpr          # 列印相關的

mail         # 郵件相關的

mark         # 標記相關的

news         # 新聞相關的

security    # 安全相關的,與auth 類似

syslog      # syslog自己的

user        # 使用者相關的

uucp        # unix to unix cp 相關的

local0 到 local7      # 使用者自訂使用

*           # *表示所有的facility

priority:(log level)日誌的層級,一般有以下幾種層級(從低到高)

debug           # 程式或系統的調試資訊

info            # 一般資訊

notice          # 不影響正常功能,需要注意的訊息

warning/warn    # 可能影響系統功能,需要提醒使用者的重要事件

err/error       # 錯誤資訊

crit            # 比較嚴重的

alert           # 必須馬上處理的

emerg/panic     # 會導致系統停用

*               # 表示所有的記錄層級

none            # 跟* 相反,表示啥也沒有

target:(動作)日誌記錄的位置,常見的有:

檔案:

將指定的日誌資訊記錄到指定的檔案中

-檔案:

表示將日誌資訊記錄到指定的檔案中,-表示非同步寫入

使用者:

將日誌事件通知給指定的使用者,通常是將日誌資訊發送給登入到當前系統上的所有使用者的終端

Log Service器:

格式為@RSYSLOG_SERVER  ,表示將日誌資訊發送給指定的Log Service器

管道:

格式為 |COMMAND  表示將日誌資訊管道送給指定的命令

4、記錄記錄定義的格式為:

facility.priority    target

表示將哪個通道傳進來的日誌,哪個記錄層級(及其之上的記錄層級),記錄到哪個目標中

facility格式:

*   表示所有的facility

FACI1,FACI2,FACI1,…   列表中給定的所有facility

FACI1.PRI1;FACI2.PRI2;FACI3.PRI3;…  列表中給定的facility和對應的priority及其之上層級的記錄

priority格式:

*   所有層級

none   沒有層級,不記錄日誌

PRIORITY:此層級(含)及其以上的所有層級

=PRIORITY: 僅指定的層級

例如:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

表示所有通道的info層級以上的資訊,除了mail裝置,authprioriv裝置、cron裝置的日誌,都記錄到/var/www/messages檔案

authpriv.*                                              /var/log/secure

表示authpriv裝置上所有記錄層級的日誌,都記錄到/var/log/secure檔案中

mail.*                                                  -/var/log/maillog

表示mail裝置所有記錄層級的日誌,都以非同步方式記錄到/var/log/mailog檔案中

auth.=info  @10.0.0.1

# 表示將auth相關的,層級為只為info的日誌記錄到10.0.0.1主機上去

前提是10.0.0.1要能接收其他主機發來的日誌資訊

user.!=error      /var/log/test.log

# 表示記錄user相關的,不包括error層級的資訊,記錄到/var/log/test.log檔案中

cron.info;mail.info          /var/log/test.log

# 多個日誌來源可以用";" 隔開

cron,mail.info                /var/log/test.log

# 與cron.info;mail.info 是一個意思

mail.*;mail.!=info            /var/log/test.log

# 表示記錄mail相關的所有層級的資訊,但是不包括info層級的

第二章    自訂日誌儲存的通道(facility)和儲存位置,讓rsyslog作為服務端記錄rsyslog用戶端的日誌資訊

 

1、自訂儲存位置—以檔案為例
     
       
        
    
    2、讓本機rsyslog作為服務端,接受來自其他rsyslog用戶端的日誌
        在原生rsyslog中設定檔中定義其作為服務端工作需要的屬性
    
    
        
        在其他rsyslog用戶端主機上配置,讓其把日誌發送給rsyslog服務端
    
    
        
        在rsyslog服務端驗證是否有收到用戶端的日誌資訊
    
第三章    定義rsyslog的日誌儲存在mysql資料庫中
    1、安裝mariadb資料庫,啟動服務
       
    
    
    
    
    2、安裝rsyslog串連mysql的驅動模組:rsyslog-mysql
    
    
            
    2、匯入rsyslog-mysql產生的sql指令碼,實現對資料庫的配置
    
    
            
    3、在資料庫上授權對Syslog庫的系統管理使用者
    
                
    4、配置rsyslog利用mysql記錄日誌
    
    
                        
    5、修改完設定檔,重啟rsyslog服務,查看資料庫中是否有相關日誌資訊
    
    
第四章    利用loganalyzer實現對儲存在mysql資料庫中的rsyslog日誌資訊,進行web圖形化分析管理
    上述過程,我們已經實現了將rsyslog的日誌資訊儲存於mysql資料庫中,但是查看日誌時卻不方便,需要利用SQL語句來查詢
    接下來我們來介紹下,利用loganalyzer實現對儲存在mysql資料庫中的日誌進行web化管理
    1、部署LAMP組合(以php與httpd結合方式為fastcgi為例)
        yum install -y httpd php-fpm php-mysql php-gd
    
            
    2、對httpd進行簡單配置,然後啟動httpd服務,配置php-fpm設定檔,然後啟動php-fpm服務
    
    
    
        
    
    測試訪問,驗證LAMP是否正常
    
          
          
    4、下載loganalyzer軟體包,解壓,部署
    
    
    
    5、登入網頁,進行安裝
    
    
    
    重載httpd設定檔後重新整理網頁
    
    
    拍錯過程:上圖中,定義的資料庫表名稱與實際資料庫(表名稱為'SystemEvents')不對,修改config.php檔案解決
    忘記給php添加session目錄    
        解決方案:mkdir /var/lib/php/session;chown apache:apache /var/lib/php/session
    

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.