Rsyslog 是一個 syslogd 的多線程增強版,在syslog的基礎上擴展了很多其他功能,如數據庫支持(MySQL, PostgreSQL、Oracle等)、日誌內容篩選、定義日誌格式模板等。除了默認的udp協議外,rsyslog還支持tcp協議來接收日誌。
本文只做簡單配置與說明。更多與日誌相關的服務的詳細解釋與配置,請參考http://w.gdu.me/wiki/Linux/rsyslog_logrotate.html
rsyslogd服務器及負載均衡;rsyslog和logrotate服務
環境準備:
操作系統:CentOS-6.5-x86_64
內核:# uname -r 2.6.32-431.el6.x86_64
關閉Selinux:1. 永久有效修改 /etc/selinux/config 文件中的 SELINUX="" 爲 disabled ,然後重啓。
2. 即時生效setenforce 0
關閉防火牆:1、永久有效 chkconfig iptables off 2臨時關閉 # /etc/rc.d/init.d/iptables stop
服務器_IP:172.16.19.12(node2)
客戶端_IP:172.16.19.2(stu19)
LAMP環境直接使用yum安裝。
時間同步:如果涉及部署多名服務器時,最好使用NTP服務器同步時間。
本地光盤作爲yum源(CentOS-6.5-x86_64-bin-DVD1)
服務器端配置
rsyslog支持將日誌存儲於MySQL服務器中:
1)安裝LAMP環境,配置好mysql數據庫服務,創建Syslog庫並授權遠程用戶syspass登陸,密碼爲syspass;
1 # yum -y install httpd mysql-server mysql php php-mysql php-gd gd 2 # service mysqld start 3 # /usr/bin/mysqladmin -u root password 'root' 4 # mysql -uroot -proot 5 ###由於本處使用了明文密碼,出於安全,生產環境中建議此後修改用戶的密碼。 6 mysql> grant all on Syslog.* to 'sysuser'@'localhost' identified by 'syspass'; 7 mysql> grant all on Syslog.* to 'sysuser'@'127.0.0.1' identified by 'syspass'; 8 mysql> flush privileges;
2)安裝rsyslog(本機默認已安裝)與rsyslog-mysql包,rsyslog-mysql會生成ommysql.so庫和CreateDB.sql初始庫;rsyslog-mysql爲rsyslog將日誌傳送到mysql數據庫的一個模塊,這裏必須安裝。
1 # yum -y install rsyslog-mysql rsyslog 2 # rpm -ql rsyslog-mysql 3 /lib64/rsyslog/ommysql.so 4 /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
3)使用createDB.sql語句創建rsyslog依賴的數據庫:
# mysql -uroot -proot < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
生成庫:Syslog
生成表:SystemEvents SystemEventsProperties
4)修改配置文件,配置rsyslog啓用模塊,服務監聽端口爲514,且修改RULES段的相關日誌段使其存儲於mysql數據庫中
1 在#### Modules #####啓用模塊: 2 # Provides UDP syslog reception 3 $ModLoad imudp 4 $UDPServerRun 514 ### 允許514端口接收使用UDP協議轉發過來的日誌 5 6 # Provides TCP syslog reception 7 $ModLoad imtcp 8 $InputTCPServerRun 514 #### 允許514端口接收使用TCP協議轉發過來的日誌 9 10 $ModLoad ommysql #手動添加 11 12 在#### RULES ####段中定義記錄日誌信息於數據庫中,根據所需定義,可以把全部的日誌信息都存儲在庫中,本處只測試部分。 13 *.info;mail.none;authpriv.none;cron.none :ommysql:127.0.0.1,Syslog,sysuser,syspass 14 ###ommysql:數據庫地址,數據庫名,數據庫用戶名,數據庫密碼
5) 重啓rsyslog服務,並查看514端口是否監聽
# service rsyslog restart
# ss -anltp |grep 514
LISTEN 0 25 :::514 :::* users:(("rsyslogd",19513,6))
LISTEN 0 25 *:514 *:* users:(("rsyslogd",19513,2))
本機測試:
首先使用yum安裝vsftpd包,然後在使用命令tail -f /var/log/messages 查看日誌文件已經沒有顯示相關的日誌信息了。
在mysql數據庫中查詢到相關日誌信息
# mysql -uroot -proot
mysql> use Syslog
mysql> select * from SystemEvents;
在表中可以看到node2安裝vsftpd包的日誌信息。
客戶端相關:
配置:
客戶端主機名爲:stu19
1、安裝rsyslog包,默認安裝,# yum install rsyslog -y
# rpm -q rsyslog
rsyslog-7.4.7-6.el7.x86_64
2、修改配置文件rsyslog.conf,添加如下內容
# vim /etc/rsyslog.conf
*.* @@172.16.19.12:514 # 允許日誌都送到rsyslog的服務端, @@表示通過tcp協議發送;@表示通過udp進行轉發
3、重啓rsyslog服務。
# /etc/rc.d/init.d/rsyslog restart
測試:
1、在客戶端使用命令安裝lrzsz ;
2、tail -f /var/log/messages已經查不到日誌信息了
3 、在服務器的數據庫表中
通過webGUI展示日誌信息 安裝 loganalyzer
首先下載好loganalyzer-3.6.5.tar.gz 以及中文語言包
1 # tar xf loganalyzer-3.6.5.tar.gz -C /var/www/html/ 2 # cd /var/www/html/ 3 # mv loganalyzer-3.6.5 loganalyzer 4 目錄中有個INSTALL文件,根據裏面的提示進行安裝。 5 # mv loganalyzer/src/* ./loganalyzer 6 # cp loganalyzer/contrib/* ./loganalyzer/ 7 # cd /var/www/html/loganalyzer/ 8 # chmod +x configure.sh secure.sh 9 # ./configure.sh 10 # ./secure.sh 11 # chmod 666 config.php 12 下載個漢化文件 13 # mkdir /var/www/html/loganalyzer/lang/zh 14 # 下載漢化文件 admin.php info.txt main.php ,把三個文件入在上面新建的zh目錄中 15 # chown -R apache.apache ./* 16 # service httpd restart
在瀏覽器中輸入http://172.16.19.12/loganalyzer,出現如下圖,單擊here處進行安裝
如果沒有報錯信息,就直接點擊“next”直到Step3
按需進行基本的配置,此處的自動解析IP地址設置爲No
從Step3直接跳轉到Step7,根據此前的數據庫信息填寫幾處關鍵信息(紅色方框內),其他的默認
loganalyze的頁面