目錄
一日誌收集
二rsyslog特點
三rsyslog組成
四實踐
一日誌收集
日誌數據的收集手段是多種多樣的,採集的數據也是多種多樣的。其中很多應用都是自己收集數據,這一類應用一般比較重量級,並且我們也使用其自帶的日誌收集工具,主要原因是收集的數據個格式一般比較特殊,需要記錄的內容很多。記錄日誌需要寫數據到磁盤,寫操作一般會消耗大量的資源這就需要一個高性能的日誌記錄,若採用第三方記錄日誌的工具,每記錄一次日誌都有發送給記錄日誌的程序,無形間就消耗了大量的資源。這類記錄日誌的手段需要結合具體的應用去了解使用,這裏不做過多的介紹。平時我們會使用一些比較小的程序,這些程序產生的日誌比較少但是還比較重要需要記錄,每個小程序都寫一個自己的日誌記錄工具顯然比較浪費,這時centos給我們提供了一個通用的記錄日誌的api,小程序記錄日誌直接調用即可,服務名稱爲rsyslog,只要程序支持使用rsyslog記錄日誌,我們就可以調用了。有時我們收集的數據量特別大,這就要求使用更高性能的日誌收集展示工具,比較流行的是ELK,E: elasticsearch, L: logstash, K: kibana。以後再介紹
二rsyslog特點
rsyslog的特性:多線程;UDP/TCP/SSL/TLS/RELP;存儲日誌信息於MySQL, PGSQL, Oracle等RDBMS;強大的過濾器,實現過濾日誌信息中的任何部分的內容;自定義的輸出格式;
常用事件記錄格式:日期時間 主機 進程[pid]: 事件內容;
facility:設施,收束日誌數據流爲有限幾個;我們使用的一般是local0-local7自定義收集數據auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, user, uucp, syslog, local0-local7
proirity:優先級,在記錄日誌是我們選擇一個級別,只要報錯信息超過該級別就都會記錄debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)
三rsyslog組成
既然是要了解rsyslog首先我們要了解他的配置文件以方便我瞭解它的功能,配置文件的位置在/etc/rsyslog.conf,它的配置文件分爲三個部分
MODULES
這一部分主要是給rsyslog啓動一些額外的模塊,幫助rsyslog完成對其他主機日誌的收集。$ModLoad imudp #啓用udp監聽模塊,不使用註釋掉即可$UDPServerRun 514 #監聽在514端口$ModLoad imtcp$InputTCPServerRun 514$ModLoad ommysql #啓用MySQL數據庫記錄數據,只有這個還不夠還需要在RULES部分定義調用哪個數據庫
GLOBAL DIRECTIVES
全局配置段,定義一下通用的屬性
RULES
定義記錄日誌的格式,之前在modules部分啓用了mysql模塊,在這裏使用時可以使用如下格式facility.priority :ommysql:DBHOST,DBNAME,DBUSER,DBUSERPASSWORD
四實踐
先說目的,這裏我們要實現一個使用數據庫記錄日誌信息的rsyslog服務器,並且幫助另外一條記錄日誌,同時我們提供一個web查看界面。拆分一下任務,1配置rsyslog需要的數據庫,2配置rsyslog把數據寫到數據庫並且監聽udp514端口,3使用另外一條主機把日誌信息發送到rsyslog服務器,4提供網頁查看日誌工具loganalyzer
loganalyzer的安裝包下載位置http://loganalyzer.adiscon.com/downloads/
這裏我直接寫了一個腳本,主要適用centos7,6的話需要更改一些內容
yum install mariadb-server rsyslog-mysql -y #安裝數據庫和rsyslog連接數據庫的組件
systemctl start mariadb.service #啓動數據庫
mysql <<eofGRANT ALL ON Syslog.* TO 'rsluser'@'127.0.0.1' IDENTIFIED BY 'rslpass';
GRANT ALL ON Syslog.* TO 'rsluser'@'localhost' IDENTIFIED BY 'rslpass';
eof #授權rsyslog使用rsluser使用rslpass密碼訪問本地數據庫,並且只可以通過本地訪問
mysql < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql #創建rsyslog需要數據庫,這個sql腳本是rsyslog-mysql包帶的
systemctl restart rsyslog.serviceyum install httpd php php-mysql php-gd -y #安裝提供網頁組件
cd
wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.5.tar.gz #下載loganalyzer包
tar xf loganalyzer-4.1.5.tar.gz #解壓並複製到/var/www/html/loganalyzer
cp -a loganalyzer-4.1.5/src /var/www/html/loganalyzercd
cd /var/www/html/loganalyzer #創建666權限的config.php
touch config.php
chmod 666 config.php
systemctl start httpd.service #啓動httpd服務
需要手動更改的內容
vim /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
$ModLoad ommysql #這一行需要添加
*.info;mail.none;authpriv.none;cron.none :ommysql:127.0.0.1,Syslog,rsluser,rslpass
配置下一臺服務器把日誌寫到這臺rsyslog服務器,只要改這一行就好了,當然ip是你們rsyslog服務器的ip不要填寫我的ip
*.info;mail.none;authpriv.none;cron.none @172.16.29.20
打開網頁第七步的時候配置內容如下
My Syslog Source My Syslog SourceSource
Type MYSQL NativeSelect
View SyslogfieldsDatabase
Type OptionsTable type MonitorWareDatabase
Host 127.0.0.1
Database Name Syslog
Database Tablename SystemEvents
Database User rsluser
Database Password ******** #這裏的密碼就是我們設置的連接數據庫的密碼rslpassEnable Row Counting No
都配置完之後把/var/www/html/loganalyzer/config.php文件的權限更改爲644
chmod 644 /var/www/html/loganalyzer/config.php
總結
這一節主要是學習使用rsyslog,主要是學會配置數據庫接收日誌信息,讓rsyslog監聽端口收集其他主機的日誌,配置網頁查看日誌信息的網站。