rsyslog日志存儲到mysql數據庫中并利用loganalyzer進行web圖形化分析管理

概述

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

    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:(動作)日志記錄的位置,常見的有:

            文件:

                將指定的日志信息記錄到指定的文件中

            -文件:

                表示將日志信息記錄到指定的文件中,-表示異步寫入

            用戶:

                將日志事件通知給指定的用戶,通常是將日志信息發送給登錄到當前系統上的所有用戶的終端

            日志服務器:

                格式為@RSYSLOG_SERVER  ,表示將日志信息發送給指定的日志服務器

            管道:

                格式為 |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、自定義存儲位置—以文件為例

    blob.png 

    blob.png   

        

    

    2、讓本機rsyslog作為服務端,接受來自其他rsyslog客戶端的日志

        在本機的rsyslog中配置文件中定義其作為服務端工作需要的屬性

    blob.png

    blob.png

        

        在其他rsyslog客戶端主機上配置,讓其把日志發送給rsyslog服務端

    blob.png

    blob.png

        

        在rsyslog服務端驗證是否有收到客戶端的日志信息

    blob.png

第三章    定義rsyslog的日志存儲在mysql數據庫中

    1、安裝mariadb數據庫,啟動服務

    blob.png   

    blob.png

    blob.png

    

    

    2、安裝rsyslog連接mysql的驅動模塊:rsyslog-mysql

    blob.png

    blob.png

            

    2、導入rsyslog-mysql生成的sql腳本,實現對數據庫的配置

    blob.png

    blob.png

            

    3、在數據庫上授權對Syslog庫的管理用戶

    blob.png

                

    4、配置rsyslog利用mysql記錄日志

    blob.png

    blob.png

                        

    5、修改完配置文件,重啟rsyslog服務,查看數據庫中是否有相關日志信息

    blob.png

    

第四章    利用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

    blob.png

            

    2、對httpd進行簡單配置,然后啟動httpd服務,配置php-fpm配置文件,然后啟動php-fpm服務

    blob.png

    blob.png

    blob.png

    blob.png    

    blob.png

    測試訪問,驗證LAMP是否正常

    blob.png

    blob.png      

          

    4、下載loganalyzer軟件包,解壓,部署

    blob.png

    blob.png

    

    5、登錄網頁,進行安裝

    blob.png

    blob.png

    blob.png

    重載httpd配置文件后刷新網頁

    blob.png

    blob.png

    拍錯過程:上圖中,定義的數據庫表名稱與實際數據庫(表名稱為'SystemEvents')不對,修改config.php文件解決

    忘記給php添加session目錄    

        解決方案:mkdir /var/lib/php/session;chown apache:apache /var/lib/php/session

    blob.png

原創文章,作者:M20-1倪文超,如若轉載,請注明出處:http://www.www58058.com/52552

(2)
M20-1倪文超M20-1倪文超
上一篇 2016-10-18 15:16
下一篇 2016-10-18 15:31

相關推薦

  • 攜程全站癱瘓引發的思考

       為今年5月冠上多事之夏的名頭已是無可厚非的一件事,自支付寶光纖被挖斷后,攜程又暴出全站癱瘓的風波,從5/28 11:00開始,直到晚上11:29分才全面恢復.互聯網也是謠言四起,紛紛猜測百度騰訊誰會是下一個災難的受害者。暫切拋開這些玩笑言論,就攜程本次事情引發的思考太多,前車之鑒后事之師,如果攜程的事情發生到我們身上,我們該怎么辦,…

    Linux干貨 2015-06-03
  • 計算機和linux基礎

    計算機的組成及其功能 計算機硬件主要由5部分組成:運算器 、控制器、存儲器、input、output。 但是這和我們平時見到的計算機不一樣?我們平時見到的計算機有CPU,內存,硬盤,顯示器,鼠標鍵盤,顯卡、主板等。這些東西也都歸在以上五類設備中。下面我們簡單介紹一下計算機這五個組成部分。 運算器: 運算器是計算機中做運算的部分,可以執行各種指令,加減乘除,與…

    Linux干貨 2016-09-16
  • 系統管理中的三大利刃(htop glances dstat)

    工欲善事情,必先利其器,生產環境中的服務器在處理請求并生成回應數據的時間主要消耗在服務器端,包括了眾多的環節,如何全面了解我們linux服務器的CPU使用率、使用時間、內存占用比例、磁盤IO數據、網絡相關數據等等眾多指標,保證我們的linux服務器順利完成每一個請求,怎能沒有幾個趁手的利刃,而今天就讓我們見識一下系統管理中三大利刃。 相傳一把三尺長的軟劍,叫…

    Linux干貨 2015-11-18
  • Linux刪除特殊字符文件

    由于很多原因可能會導致一些文件的文件名是亂碼,當我們刪除的時候就會發現這個文件名既不能自動補全,也不能直接刪除。

    2017-11-11
  • shell腳本編程 4

    Shell腳本編程4 一、雜項知識整理 1、數組賦值方法: declare -a files files=(/var/log/*.log)通配所有文件也可 2、創建臨時文件: mktemp命令:創建的臨時文件可避免沖突 mktemp  NAME.XXXX(x至少要出現三個) -d 創建臨時目錄 –tmpdir=/DIR 指明臨時文件所存…

    Linux干貨 2016-08-24
  • 第五周作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行;grep “^[[:space:]]+”  /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行;[root@localhost ~…

    Linux干貨 2017-03-10

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-10-30 20:32

    文章圖片的注釋很詳細,建議標題優化一下,太冗長了,簡潔為主。

欧美性久久久久