本文主要是對「CentOS 6.7搭建Rsyslog日誌服務器」進行整理,同時在本地進行環境搭建,驗證在CentOS6.8上的正確性。php
1.1 清空iptableshtml
通常iptables不要限制對rsyslog端口(默認UDP,514)的訪問就不會rsysylog形成影響,能夠不用清。mysql
iptables -F #清空iptables策略
service iptables save #保存iptables策略配置
1.2關閉selinuxlinux
selinux老問題,過於嚴格可能會形成功能異常,將其關閉sql
setenforce 0
上邊只是臨時關閉,若是配置爲啓用狀態則系統重啓後selinux仍是啓用,要完全關閉selinux到其配置文件/etc/selinux/config,將屬性SELINUX的值修改成disabled數據庫
yum install -y mysql-server mysql-devel libcurl-devel net-snmp-devel php php-gd php-xml php-mysql httpd rsyslog rsyslog-mysql
看這意思沒什麼問題,可是因爲本機以前已零散地安裝了這些東西,mysql還手動安裝成了5.5,在執行此句時報衝突libXtst-1.2.3-1.el6.i686 is a duplicate with libXtst-1.2.2-2.1.el6.x86_64,直接跳過了apache
chkconfig --level 35 mysql on #配置mysql開機自啓動;5.5及以前版本用mysql,5.6及以後版本用mysqld chkconfig --level 35 httpd on #配置apache開機自啓動 service mysql start #啓動mysql service httpd start #啓動apache
mysqladmin -u root password "abcd1234" #abcd1234修改爲你想要的密碼
默認安裝的5.1版本的mysqlroot默認密碼應該爲空能夠直接這樣修改密碼,若是以前已配置密碼,則要登陸mysql修改:服務器
update MySQL.user set password=PASSWORD('abcd1234') where User='root'; flush privileges;
編緝/etc/my.cnf配置以下(主要是各節區值爲utf8的項):curl
[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
mysql5.1版本好像配置配置defalut-character-set就能夠了,character_set_server參數5.5版本以後纔有,不過多配上去也沒關係。改完要重啓mysql使配置生效socket
server mysql restart #5.6及以後版本使用mysqld
rsyslog的mysql數據庫腳本默認文件是(版本相應修改):
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
可使用如下命令中確認其位置:
echo $(rpm -ql rsyslog-mysql | grep sql$)
導入數據庫(輸入密碼):
mysql -u root -p < $(rpm -ql rsyslog-mysql | grep sql$)
能夠看到導入後已建立syslog數據庫
按原文講syslog數據庫默認不是utf8編碼,因此要使用如下命令修改編碼(但就我查看彷佛是utf8的,多執行一次無所謂)
mysql> use syslog #修改Syslog數據庫的字符集 mysql> ALTER DATABASE `syslog` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; #修改SystemEvents表的字符集 mysql> alter table systemEvents default character set =utf8; #修改SystemEventsPorperties表的字符集 mysql> alter table systemeventsproperties default character set =utf8;
查看修改後的結果:
#查看數據庫的字符集設置 mysql> show variables like 'character%'; #查看systlog數據庫全部表的字符集設置 mysql> use syslog; mysql> show table status from Syslog\G;
登陸mysql建立用於管理rsyslog的數據庫用戶rsyslog,下邊只授予了其localhost登陸的權限,abcd1234改成本身想要的密碼
mysql> grant all privileges on syslog.* to 'rsyslog'@'localhost' identified by 'abcd1234'; mysql> flush privileges;
cat > /etc/sysconfig/rsyslog << EOF # 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" EOF
各參數詳解:
-c 指定運行兼容模式。
-r 指定監聽端口。 默認514
-x 在接收客戶端消息時,禁用DNS查找。需和-r參數配合使用。
-m 標記時間戳。單位是分鐘,爲0時,表示禁用該功能。
編緝/etc/rsyslog.conf,在#### MODULES ####下添加前邊兩行,而後取消後邊三行的註釋
$ModLoad ommysql.so *.* :ommysql:localhost,syslog,rsyslog,abcd1234 #注:localhost表示本地主機,syslog爲數據庫名,rsyslog爲數據庫的用戶,abcd1234爲前邊建立該用戶時指定的密碼 $ModLoad immark $ModLoad imudp $UDPServerRun 514
保存後重啓rsyslog使配置生效
service rsyslog restart
開頭說過iptables策略能夠不用清,當若是確實不清爲確保萬一,執行如下命令開放TCP和UDP的514端口
iptables -I INPUT -p tcp --dport 514 -m comment --comment "accept for rsyslog" -j ACCEPT iptables -I INPUT -p udp --dport 514 -m comment --comment "accept for rsyslog" -j ACCEPT service iptables save
從Loganalyzer官網下載安裝文件到/usr/local/src目錄下,最新版本是4.1.6
cd /usr/local/src wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.6.tar.gz
cd /usr/local/src tar -zxf loganalyzer-4.1.6.tar.gz cd loganalyzer-4.1.6 mkdir -p /var/www/html/loganalyzer/ cp -r src/* /var/www/html/loganalyzer/ cp -r contrib/* /var/www/html/loganalyzer/
cd /var/www/html/loganalyzer/ touch config.php chmod 666 config.php
爲配合LogAnalyzer對php環境的要求,修改/etc/php.ini中如下兩項的值爲:
memory_limit = 512M max_execution_time = 120
service iptables restart
httpd默認主路徑爲/var/www/html,如今loganalyzer目錄爲/var/www/html/loganalyzer,因此訪問http://192.168.220.128/loganalyzer/進行配置
CentOS默認都會安裝rsyslog,這裏咱們以一臺CentOS 7爲例。CentOS 6和7配置都是同樣的,只是啓停命令有所改變
systemctl list-unit-files rsyslog.service #確認rsyslog是否開機自啓動
systemctl enable rsyslog.service #若是沒有則配置其開機自啓動
systemctl status rsyslog.service #查看rsyslog狀態
systemctl start rsyslog.service #若是rsyslog沒啓動,將其啓動
編緝/etc/rsyslog.conf,在最後### begin forwarding rule ###和### end of the forwarding rule ###之間,新建一行追加遠程日誌服務器地址(我這是192.168.220.128,根據本身實際狀況配置):
*.* @192.168.220.128
systemctl restart rsyslog.service
這樣192.168.220.142的日誌就會自動發送到192.168.220.128,192.168.220.128接收後就會自動存入syslog庫。最後loganalyzer從syslog中讀出而後在界面展示
如上圖所示,Host列ls便是192.168.220.128,lsx便是192.168.220.142。
參考: