這裏演示的只是簡單的本地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服務。
二、客戶端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
在RULES段裏面改一下。
我這裏把原來保存至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 權限不行。
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
如今就能夠打開網頁來完成安裝了。
配置文件沒有寫權限。
[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就能夠了。
這裏默認就行。
下一步再下一步就完成了。
還須要安裝上php-gd這個庫,才能顯示圖表。
若是是用rsyslog自身來作日誌集中存儲。
客戶端:
*.info;mail.none;authpriv.none;cron.none @172.16.40.10
服務端:
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服務會再也不保存此數據文件的日誌。