前言:
隨着機房內的服務器和網絡設備增加,日志管理和查詢就成了讓系統管理員頭疼的事。
系統管理員遇到的常見問題如下:
1、日常維護過程中不可能登錄到每一台服務器和設備上去查看日志;
2、網絡設備上的存儲空間有限,不可能存儲日期太長的日志,而系統出現問題又有可能是很久以前發生的某些操作造成的;
3、在某些非法入侵的情況下,入侵者一般都會清除本地日志,清除入侵痕跡;
4、zabbix等監控系統無法代替日志管理,無法監控如系統登錄、計划任務執行等項目。
基於上述原因,在當前的網絡環境中搭建一台用於日志集中管理的Rsyslog日志服務器就顯得十分有必要了。
Rsyslog服務的優點如下:
1、Rsyslog服務器可以大多數的網絡設備支持,在網絡設備的系統設備選項中大多都有遠程日志服務的配置選項。只需要填寫上IP地址和端口(大多數設備已經默認是514了),然后確定就可以了;
2、Linux服務器只需要在本地的Rsyslog服務配置中加入簡單的一行就可以將日志發送到日志服務器,布署和配置起來十分簡單;
3、通過軟件(如evtsys)也可以支持Windows服務器,布署和配置也不是很難,但是有些軟件是要收費的;
4、搭配前端的loganalyzer等軟件,可以輕松實現圖形化管理和查詢日志。
一、Rsyslog服務器的安裝與配置
1、清空iptabels, 關閉selinux避免安裝過中報錯
清空iptables
iptables -F service iptables save
關閉selinux
setenforce 0
vim /etc/selinux/conifg
將配置文件中的
SELINUX=enforcing
修改為:
SELINUX=disabled
2、yum安裝LAMP環境及rsyslog、rsyslog mysql支持模塊
yum install -y mysql-server mysql-devel libcurl-devel net-snmp-devel php php-gd php-xml php-mysql httpd rsyslog rsyslog-mysql
3、設置mysqld和httpd開機啟動,並啟動服務
chkconfig mysqld on chkconfig httpd on service mysqld start service httpd start
4、修改mysql的root密碼
mysqladmin -u root password "你的密碼"
修改密碼后就可以使用如下命令登錄mysql
mysql -u root -p
5、修改mysql的配置文件,支持uft8
因為通過 yum安裝的mysql是不支持uft8的,在收集Windows服務器的日志和某些支持中文的設備的情況下,收集到的日志無法正確顯示,因此需要修改mysql配置文件支持中文顯示。
配置文件全文如下:
[mysqld]
datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character_set_server=utf8 init_connect='SET NAMES utf8' default-character-set=utf8 [mysql] default-character-set=utf8 [mysql.server] default-character-set=utf8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid default-character-set=utf8 [client] default-character-set=utf8
重啟mysqld服務
service mysqld restart
6、導入Rsyslog數據庫到mysql
Rsyslog的mysql數據庫默認文件是:
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
在rsyslog-mysql相應版本的文件夾中
你可以使用下列命令中查詢到:
echo $(rpm -ql rsyslog-mysql | grep sql$)
使用如下命令將文件導入到mysql:
mysql -u root -p < $(rpm -ql rsyslog-mysql | grep sql$)
隨后輸入你在第3步中設置的mysql密碼就可以導入數據庫了,數據庫名為:Syslog
7、設置Rsyslog數據庫的字符集
上一步導入的數據庫只有二個表: SystemEvents 和 SystemEventsProperties
Syslog數據庫及這二個表的默認字符集也不是uft8,需要進行修改
#修改Syslog數據庫的字符集 mysql> ALTER DATABASE `Syslog` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; #修改相應數據表的字符集 mysql> alter table SystemEvents default character set =utf8; mysql> alter table SystemEventsPorperties default character set =utf8;
查看修改后的效果:
#查看數據庫的字符集設置 mysql> show variables like 'character%'; #查看Systlog數據庫所有表的字符集設置 mysql> use Syslog; mysql> show table status from Syslog\G;
8、創建Rsyslog數據庫用戶
登錄mysql創建Rsyslog的數據庫用戶logger
#登錄mysql mysql -u root -p #創建用戶 mysql> grant all privileges on Syslog.* to 'rsyslog'@'localhost' identified by '147258'; mysql> flush privileges; mysql> exit;
9、修改rsyslog配置文件
vim /etc/sysconfig/rsyslog
配置文件如下:
# Options for rsyslogd # Syslogd options are deprecated since rsyslog v3. # If you want to use them, switch to compatibility mode 2 by "-c 2" # See rsyslogd(8) for more details SYSLOGD_OPTIONS="-c 2 -r -x -m 180" KLOGD_OPTIONS="-x"
各參數詳解:
-c 指定運行兼容模式。
-r 指定監聽端口。 默認514
-x 在接收客戶端消息時,禁用DNS查找。需和-r參數配合使用。
-m 標記時間戳。單位是分鍾,為0時,表示禁用該功能。
10、配置服務端支持rsyslog-mysql模塊,並開啟UDP服務端口
vim /etc/rsyslog.conf
在#### MODULES ####下添加這兩行
$ModLoad ommysql.so *.* :ommysql:localhost,Syslog,rsyslog,147258
注:localhost表示本地主機,Syslog為數據庫名,rsyslog為數據庫的用戶,147258為該用戶密碼
取消下面三行注釋
$ModLoad immark $ModLoad imudp $UDPServerRun 514
重啟rsyslog服務:
service rsyslog restart
11、添加服務端iptables防火牆規則
如果服務端有需要配置iptables規則的話,執行如下命令開放TCP和UDP的514端口
iptables -I INPUT -p tcp --dport 514 -j ACCEPT iptables -I INPUT -p udp --dport 514 -j ACCEPT service iptables save
二 、Loganalyzer安裝與配置
1、下載Loganalyzer
從Loganalyzer官網下載安裝文件到/usr/local/src目錄下
最新版本是4.1.3 穩定版本是:3.6.6
2、解壓文件並復制源代碼到apache的loganalyzer目錄
cd /usr/local/src tar -zxvf loganalyzer-4.1.3.tar.gz cd loganalyzer-4.1.3 mkdir -p /var/www/html/loganalyzer/ cp -r src/* /var/www/html/loganalyzer/ cp -r contrib/* /var/www/html/loganalyzer/
3、生成空的配置文件並設置權限
cd /var/www/html/loganalyzer/
touch config.php chmod 666 config.php
4、修改php環境
為配合LogAnalyzer對php環境的要求,請修改/etc/php.ini中的內容為:
memory_limit = 512M max_execution_time = 120
5、創建apache日志目錄
# mkdir -p /var/log/httpd/loganalyzer
6、配置apache
這部分,請根據apache實際情況操作。以默認系統為例,虛擬主機配置文件都放在/etc/httpd/conf/httpd.conf
配置文件修改如下:
Listen 80 ServerAdmin root@localhost ServerName log_server:80 DocumentRoot "/var/www/html/loganalyzer" <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory "/var/www/html/loganalyzer"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> ErrorLog /var/log/httpd/loganalyzer/error.log LogLevel warn CustomLog /var/log/httpd/loganalyzer/access_log combined ServerSignature On
重啟httpd服務
service httpd restart
7、Loganalyzer初始化配置
在瀏覽器輸入網址,進入安裝向導
訪問http://serverip:80
一共8個步驟,這里只將需要修改的步驟列出,其余只需要”Next”即可
第3步:”Enable User Database”選擇“Yes”;
第4、5二個步驟是指定用戶數據庫信息(數據庫指定為:Syslog)和創建用戶
第7步:”Source Type” 選擇 “MYSQL Native”並在下載配置數據庫信息
第8步Finish后,完成安裝就可登錄並查看日志信息了。
三 、Linux客戶端配置
CentOS默認都會安裝rsyslog。
1、確認rsyslog服務是否啟動
chkconfig | grep rsyslog
如果沒有設置為開機啟動,執行如下命令:
chkconfig rsyslog on service rsyslog start
2、配置Rsyslog客戶端發送本地日志到服務端
vim /etc/rsyslog.conf
在末行添加一行:
*.* @192.168.7.201
注:192.168.7.201 為日志服務器端IP地址
3、重啟Rsyslog服務
service rsyslog restart
這時在服務端刷新就可以看到相關日志信息了。
四 、Windows客戶端配置
Loganalyzer官網推薦在Winodws上使用Winsyslog來實現日志數據的收集和發送,但是這個軟件是收費的。這里用一個開源的軟件Evtsys,但這個軟件也有個問題無法在Server 2012以上的系統中使用,在Server 2008中是沒有問題的
Evtsy官網由於是布署在google服務器上的因此現在無法訪問,可以到網上去搜索下載。
下載后的文件解壓將里面的evtsys.exe文件放到c:\windows\System32目錄下,然后運行cmd執行下面的命令:
evtsys -i -s 10 -h log-server-ip -p 514 net start evtsys
只要看到最后的安裝成功即可。
以下附上命令的詳細參數
Version: 4.4 (32-bit)
Usage: evtsys.exe -i|-u|-d [-h host] [-b host] [-f facility] [-p port]
[-s minutes] [-l level] [-n]
-i Install service -u Uninstall service -d Debug: run as console program -h host Name of log host -b host Name of secondary log host (optional) -f facility Facility level of syslog message -l level Minimum level to send to syslog.\n", stderr); 0=All/Verbose, 1=Critical, 2=Error, 3=Warning, 4=Info -n Include only those events specified in the config file. -p port Port number of syslogd -q bool Query the Dhcp server to obtain the syslog/port to log to (0/1 = disable/enable) -s minutes Optional interval between status messages. 0 = Disabled Default port: 514 Default facility: daemon Default status interval: 0 Host (-h) required if installing.
這時在刷新Loganalyzer就可以看到相關日志了.
--------------------------------------分割線 --------------------------------------
CentOS上配置rsyslog客戶端用以遠程記錄日志 http://www.linuxidc.com/Linux/2015-02/112989.htm
CentOS 6.3下利用Rsyslog+LogAnalyzer+MySQL部署日志服務器 http://www.linuxidc.com/Linux/2013-07/86956.htm
使用rsyslog mysql 和logAnalyzer 的日志服務器 http://www.linuxidc.com/Linux/2012-09/70717.htm
Rsyslog配置及使用教程 http://www.linuxidc.com/Linux/2015-02/113614.htm
RHEL5.4部署中央日志服務器之rsyslog+loganalyzer http://www.linuxidc.com/Linux/2010-12/30801.htm
--------------------------------------分割線 --------------------------------------