rsyslog日誌管理(mariadb+loganalyzer)

這裏演示的只是簡單的本地LAMP結構,mysql用來存儲由rsyslog服務發來的日誌,php用來運行loganalyzer程序。php

loganalyzer是一個php應用,用來展現mysql中存儲的日誌。html

loganalyzer下載地址:
node

http://download.adiscon.com/loganalyzer/loganalyzer-4.1.3.tar.gz
mysql


目錄:linux

一、安裝LAMP。web


三、mysql給rsyslog受權存儲日誌。sql



注意:時間同步。否則可能數據庫中只有rsyslog重啓的記錄,而沒有其它記錄。數據庫

loganalyzer所在系統:centos 7.1vim


一、安裝LAMP:centos

[root@localhost ~]# yum install httpd php php-mysql mariadb-server -y

測試web可用(添加php測試頁):

[root@localhost ~]# vim /var/www/html/index.php

<?php
        phpinfo();
?>
[root@localhost ~]# systemctl start httpd        #啓動httpd服務。
[root@localhost ~]# systemctl start mariadb       #啓動mysql服務。

wKiom1agf-HzxB0TAAAjDYIyuFA426.jpg



二、客戶端note2:

安裝rsyslog-mysql 用以支持mysql系列數據庫:

[root@node2 ~]# yum install rsyslog-mysql -y
[root@node2 ~]# rpm -ql rsyslog-mysql
/lib64/rsyslog/ommysql.so                        #支持模塊(庫)。
/usr/share/doc/rsyslog-mysql-5.8.10
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

最後面是一個自動生成數據庫和表的sql腳本。咱們這裏mysql是剛裝的,沒有遠程管理用戶,因此就複製到mysql所在主機導入一下。

[root@node2 ~]# scp /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql 172.16.40.10:/root

LAMP主機:

[root@localhost ~]# mysql < /root/createDB.sql     #也能夠在mysql交互界面用source來導入。
[root@localhost ~]# mysql -e 'SHOW DATABASES;'
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Syslog             |        #生成了Syslog數據庫。
| mysql              |
| performance_schema |
| test               |
+--------------------+

給客戶端受權用戶:

MariaDB [Syslog]> GRANT INSERT ON Syslog.* TO 'loguser'@'172.16.40.%' IDENTIFIED BY 'abcdefg';


note2:

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

wKiom1agg-Xy1HFqAAB5tAPu160522.jpg

在RULES段裏面改一下。

wKioL1aghxixEE-jAAAvyDgoNr0979.jpg

我這裏把原來保存至messages的記錄,送到了數據庫172.16.40.10。

鏈接數據庫的格式,模塊要用冒號引發來:

:ommysql:數據庫地址,數據庫名,用戶,密碼



重啓rsyslog服務(客戶端是centos6):

[root@node2 ~]# service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]

這裏能夠yum安裝一些東西試一下,看mysql中是否有記錄。

我這裏用yum卸載了zsh,已經有記錄了。

MariaDB [Syslog]> SELECT * FROM Syslog.SystemEvents\G
.....
*************************** 5. row ***************************
                ID: 5
        CustomerID: NULL
        ReceivedAt: 2016-01-21 15:28:13
DeviceReportedTime: 2016-01-21 15:28:13
          Facility: 1
          Priority: 6
          FromHost: node2
           Message:  Erased: zsh
.....
         SysLogTag: yum[1802]:
.....

並且也還有rsyslog啓動的記錄。



客戶端2(node1):

過程是同樣的,只不過不用再導入那個sql腳本了。

[root@node1 ~]# yum install rsyslog-mysql -y
[root@node1 ~]# vim /etc/rsyslog.conf

#### MODULES ####

$ModLoad ommysql        #模塊
# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
.....
#### RULES ####

*.info;mail.none;authpriv.none;cron.none                :ommysql:172.16.40.10,Syslog,loguser,abcdefg

重啓服務,centos7

[root@node1 ~]# systemctl restart rsyslog


LAMP主機:

mysql

*************************** 7. row ***************************
                ID: 7
        CustomerID: NULL
        ReceivedAt: 2016-01-21 15:40:38
DeviceReportedTime: 2016-01-21 15:40:38
          Facility: 5
          Priority: 6
          FromHost: node1
           Message:  [origin software="rsyslogd" swVersion="7.4.7" x-pid="1545" x-info="http://www.rsyslog.com"] start

日誌記錄過來了。



再來把loganalyzer安裝上。

LAMP:

爲php受權能夠查看Syslog庫。哪位朋友能夠提示一下,爲何用SELECT 權限不行。j_0063.gif

MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'loganalyzer'@'localhost' IDENTIFIED BY 'abcdefg';
Query OK, 0 rows affected (0.01 sec)
[root@localhost ~]# tar xf loganalyzer-4.1.3.tar.gz 
[root@localhost ~]# cd loganalyzer-4.1.3
[root@localhost loganalyzer-4.1.3]# ls
ChangeLog  contrib  COPYING  doc  INSTALL  src

src目錄下的就是php代碼。複製到/var/www/html/下面便可。contrib目錄裏面有兩個腳本,內容很簡單,只是用來建立config.php和爲此文件改變權限爲666的。

[root@localhost loganalyzer-4.1.3]# cp -rf src/* /var/www/html/
cp:是否覆蓋"/var/www/html/index.php"? y

來看一下那兩個腳本:

[root@localhost loganalyzer-4.1.3]# cat contrib/configure.sh 
#!/bin/sh

touch config.php
chmod 666 config.php
[root@localhost loganalyzer-4.1.3]# cat contrib/secure.sh 
#!/bin/sh
chmod 644 config.php

設置成666只是爲了php程序有權限寫入配置。

[root@localhost loganalyzer-4.1.3]# cp contrib/configure.sh /var/www/html/
[root@localhost loganalyzer-4.1.3]# cd /var/www/html/
[root@localhost html]# bash configure.sh

如今就能夠打開網頁來完成安裝了。

wKiom1agkEOBCRNlAAB5UCmVgV4719.jpg

wKioL1agkIGDT_K9AAAuto3Igvw689.jpg

wKioL1agkIKiQUSZAABSvohUZ8g917.jpg

配置文件沒有寫權限。

[root@localhost html]# ll config.php
-rw-rw-rw-. 1 root root 0 1月  21 15:59 config.php
[root@localhost html]# getenforce
Enforcing
[root@localhost html]# setenforce 0

是selinux的問題,命令關閉的方式重啓之後失效。長久生效能夠在/etc/selinux/config 文件中的SELINUX=enforcing改爲disabled就能夠了。

wKiom1agkXqQdGV0AABg82zcTCg833.jpg

wKiom1agp4WgQx5_AACNKXY3o3Q043.jpg

這裏默認就行。

wKiom1agp4eg5mRJAADf4-FKWpY487.jpg

上面選擇成PDO也同樣,它們是不一樣的鏈接器。

下一步再下一步就完成了。

wKioL1agqd2xvJHbAABf6U_yo9w315.jpg



還須要安裝上php-gd這個庫,才能顯示圖表。




若是是用rsyslog自身來作日誌集中存儲。

客戶端:

*.info;mail.none;authpriv.none;cron.none                @172.16.40.10

服務端:

wKioL1agqtyBjxVDAADfKl_58M0720.jpg

UDP,TPC只開一種就能夠,開兩種也能夠。



這個東西自已感受不怎麼好用,問題也有點多。服務類日誌也不會用rsyslog來記錄,上面數據庫部分也是用rsyslog來記錄的,數據庫只是存儲而已。



補充點概念:

 syslog  系統日誌是一個專門記錄系統日誌的服務在CentOS5 上面就是叫作syslog。
進程與軟件名: syslogd系統日誌, klogd記錄內核的。
而在CentOS6 或7上面叫作rsyslog , 加強版的。進程只有rsyslogd

日誌:
facility: 日誌設施  從功能或程序上對日誌進行分類,並由專門的工具負責記錄日誌。
            auth        認證
            authpriv        受權
            cron        任務計劃有關crontab
            daemon        守護進程有關
            kern        內核有關
            lpr        打印
            mail        郵件
            mark        防火牆標記
            news        新聞組
            security        安全相關
            syslog        系統日誌自身的或沒法分類的。
            user        關於各個用戶的
            uucp        很早之前unic到unic複製數據的協議,如今不多見到。
            local1---local7   8個能夠自定義的類別

priority: 級別  
記錄的日誌是所設級別與更高級別的日誌。如記錄info,就包含了notice,warning.....emerg。
            debug  調試 全部信息
            info   程序正常記錄的信息
            notice 注意,異常信息。
            warning 警告信息
            err    錯誤信息   
            crit    橙色警報
            alert    紅色警報
            emerg/panic  掛掉的信息
            
指定級別:
            *    表示全部級別
            none    沒有級別
            priority    直接指定的級別包含全部高於此級別的
            =priorty    僅此級別

定義一個日誌的級別和類別是用:類別.級別   日誌存放路徑     來指定的。
facitlity.priority    Target
        
通配機制:
            *  全部的
            ,  列表
            ! 取反
如:

mail.info      /var/log/maillog      info與info以上的級別
mail.=info    /var/log/maillog        僅info級別的日誌。
mail.!info                除了info與以上的全部級別。
*.info                    全部類別info與info以上級別。
mail,news.info                mail,news都用info級別。

Target:  日誌位置
            1.  文件, 如:/var/log/messages
            2.  用戶,*表示全部用戶。  發給用戶。  如:系統掛了的信息。
            3.  日誌服務器, 如: @172.16.100.1
            4.  管道     COMMAND   如: 發給某個命令處理一下。
            5.  - 開頭表示異步存儲。
            
配置文件:
/etc/rsyslog.conf      CentOS5 上是 syslog.conf

日誌存儲文件發生變化之後,要重啓rsyslog服務。如用vim打開了messages文件。
否則rsyslog服務會再也不保存此數據文件的日誌。


j_0022.gif

相關文章
相關標籤/搜索