1. 程式人生 > >日誌配置

日誌配置

serve yum 分享圖片 system install zip emd none 端口

日誌配置

    程序包:rsyslog
        rpm -ql rsyslog
            centos6
                /etc/logrotate.d/syslog
                /etc/pki/rsyslog
                /etc/rc.d/init.d/rsyslog
                /etc/rsyslog.conf
                /etc/rsyslog.d
                /etc/sysconfig/rsyslog
                /lib64/rsyslog
                /sbin/rsyslogd/
                /usr/share/doc/rsyslog-5.8.10
                /usr/share/man/man5/rsyslog.conf.5.gz
                /usr/share/man/man8/rsyslogd.8.gz
                /var/lib/rsyslog
            centos7
                /etc/logrotate.d/syslog
                /etc/pki/rsyslog
                /etc/rsyslog.conf
                /etc/rsyslog.d
                /etc/sysconfig/rsyslog
                /usr/bin/rsyslog-recover-qi.pl
                /usr/lib/systemd/system/rsyslog.service
                /usr/lib64/rsyslog/
                /usr/sbin/rsyslogd
                /usr/share/doc/rsyslog-7.4.7
                /usr/share/man/man5/rsyslog.conf.5.gz
                /usr/share/man/man8/rsyslogd.8.gz
                /var/lib/rsyslog
    主程序:
        rsyslogd

    配置文件:
        /etc/rsyslog.conf 
        /etc/rsyslog.d/*.conf

    庫文件: 
        /lib64/rsyslog/*.so

    配置文件的格式:
        1》由三部分組成
            MODULES:    相關模塊配置
            GLOBAL DIRECTIVES:  全局配置
            RULES:  日誌記錄相關的規則配置
        2》規則rules的配置格式:
            facility.priority;facility.priority        target
            設施 . 級別                                  位置
        3》facility:
            *:  所有的facility
            facility1,facility2,.... :  指定的facility列表
        4》priority:
            *:  所有級別的日誌信息
            none:   沒有級別,即不記錄
            priority_name:  (8中級別之一)指定級別(含)以上的所有級別的日誌信息
            =priority_name: (8中級別之一)僅記錄指定級別的日誌信息
        5》facility和priority中間可以使用一些符號來表示特殊意義:
            .   點號表示比後面還要高的等級(含)都要被記錄下來
            .=  表示所有需要的等級就是後面所接的等級,其他的不要
            .!  代表不等於後面多接的等級,即除了這個等級外的都將記錄
        6》target:
            日誌信息發送的位置。
            1)文件路徑:通常在/var/log/ ,文件路徑前的 - 表示異步寫入。
            2)用戶:將日誌事件通知給指定的用戶,* 表示登錄的所有用戶。
            3)日誌服務器:@server_host ,把日誌送往至指定的遠程服務器記錄。註意,服務器必須要監聽tcp或udp的514端口上的服務。其中@host表示使用udp的協議,@@host表示使用tcp的協議。
            4)管道: | COMMAND,轉發給其他命令處理。

    配置日誌服務器
        1》把本地配置為日誌服務器,可以打開配置文件/etc/rsyslog.conf中的指定模塊,讓其監聽在514端口上。
            vim /etc/rsyslog.conf
                    #### MODULES ####
                 12 # Provides UDP syslog reception
                 13 $ModLoad imudp
                 14 $UDPServerRun 514
                 15 
                 16 # Provides TCP syslog reception
                 17 $ModLoad imtcp
                 18 $InputTCPServerRun 514
        2》打開後重啟rsyslog服務器生效
            service rsyslog restart
            ss -ntul|grep 514
        3》在應用服務器
            vim /etc/rsyslog.conf
                local2.*                @@192.168.25.107
        
    日誌切割存儲的功能組件:logrotate
        1》介紹
            logrotate  程序是一個日誌文件管理工具,用來把舊的日誌文件刪除,並創建新的日誌文件,稱為日誌轉儲或滾動。
            可以根據日誌文件的大小,也可以根據其天數來轉儲。
            logrotate是結合cron定期的對日誌文件進行處理,主要是通過/etc/cron.daily/logrotate程序來處理。
        2》logrotate的配置文件:
            /etc/logrotate.conf
            /etc/logrotate.d/
        3》/etc/logrotate.conf配置主要參數說明
            compress    通過gzip 壓縮轉儲以後的日誌
            nocompress      不需要壓縮時,用這個參數
            copytruncate    用於還在打開中的日誌文件,把當前日誌備份並截斷
            nocopytruncate      備份日誌文件但是不截斷
            create mode owner group     轉儲文件,使用指定的文件模式創建新的日誌文件
            nocreate    不建立新的日誌文件
            delaycompress 和 compress    一起使用時,轉儲的日誌文件到下一次轉儲時才壓縮
            nodelaycompress     覆蓋 delaycompress  選項,轉儲並壓縮
            errors address      專儲時的錯誤信息發送到指定的Email 地址
            ifempty     即使是空文件也轉儲,是缺省選項。
            notifempty      如果是空文件的話,不轉儲
            mail address    把轉儲的日誌文件發送到指定的E-mail  地址
            nomail      轉儲時不發送日誌文件
            olddir directory    轉儲後的日誌文件放入指定的目錄,必須和當前日誌文件在同一個文件系統
            noolddir    轉儲後的日誌文件和當前日誌文件放在同一個目錄下
            prerotate/endscript     在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
            postrotate/endscript    在轉儲以後需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
            daily   指定轉儲周期為每天
            weekly      指定轉儲周期為每周
            monthly     指定轉儲周期為每月
            size    指定日誌超過多大時,就執行日誌轉儲
            rotate count    指定日誌文件刪除之前轉儲的次數,0  指沒有備份,5  指保留5  個備份
            Missingok   如果日誌不存在,提示錯誤
            Nomissingok     如果日誌不存在,繼續下一次日誌,不提示錯誤
            weekly      默認每周對登錄文件進行一次切割
            rotate 4    保留多少個登錄文件,默認為4個
            create  由於登錄文件被更名,因此創建一個新的來繼續記錄
            dateext 
            #compress   被更動的登錄文件是否需要壓縮
            include /etc/logrotate.d    將這個目錄的所有文件都讀取進來
            /var/log/wtmp {  僅針對/var/log/wtmp所配置的參數
                    monthly 每個月移除,取代每周
                    create 0664 root utmp   指定新建文件的權限與所屬賬號、群組
                    minsize 1M  文件容量超過1M後才進行切割
                    rotate 1    僅保留一個,即僅有wtmp.1保留而已
            }
            
            /var/log/btmp {
                missingok
                monthly
                create 0600 root utmp
                rotate 1
            }
            
    rsyslog將日誌記錄於mysql中
        1》準備MySQL Server
        2》在mysql server 上授權rsyslog 能連接至當前服務器
            mysql> GRANT ALL ON Syslog.* TO ‘loguser‘@‘%‘ IDENTIFIED BY ‘xm1234‘;
        3》在rsyslog 服務器和mysql server上安裝mysql 模塊相關的程序包
            yum install rsyslog-mysql
        4》為rsyslog 創建數據庫及表;
            mysql -uroot  -pxm1234 < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql
        5》配置rsyslog 將日誌保存到mysql中
            vim /etc/rsyslog.conf 
                #### MODULES ####
                $ModLoad ommysql
                #### RULES ####
                facility.priority :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD
                示例
                    local2.*        :ommysql:192.168.213.128,Syslog,loguser,xm1234
            systemctl status rsyslog.service
            systemctl restart  rsyslog.service 
        6》測試
            在rsyslog服務器上
                logger -p local2.info "haha"
            在mysql服務器上
                mysql -uroot -pxm1234
                    use Syslog ;
                    show tables;
                    select count(*) from SystemEvents;
                    select * from SystemEvents \G;

    通過loganalyzer 展示數據庫中的日誌
        1》在rsyslog 服務器上準備lamp 或lnmp 組合
            yum install httpd php php-mysql php-gd
        2》安裝LogAnalyzer
            tar xf loganalyzer-4.1.5.tar.gz
            cp -a loganalyzer-4.1.5/src /var/www/html/loganalyzer
            cd /var/www/html/loganalyzer
            touch config.php
            chmod 666 config.php
        3》配置loganalyzer
            systemctl start httpd.service
            http://HOST/loganalyzer
            
        4》安全加強
            cd /var/www/html/loganalyzer
            chmod 644 config.php

技術分享圖片

日誌配置