1、rsyslog 介紹node
ryslog 是一個快速處理收集系統日誌的程序,提供了高性能、安全功能和模塊化設計。rsyslog 是syslog 的升級版,它將多種來源輸入輸出轉換結果到目的地,據官網介紹,如今能夠處理100萬條信息。mysql
特性:1.多線程linux
2.支持加密協議:ssl,tls,relpsql
3.mysql、oracle、postgreSQLcentos
4.等等..安全
2、實踐部署()服務器
2.1 環境圖多線程
2.2.rsyslog server上部署操做oracle
安裝rsyslog 程序(rsyslog默認已經在各發行版安裝,若是系統中沒有的話,能夠用yum 進行安裝,以下:)tcp
[root@opm ~]# yum install rsyslog -y
編輯rsyslog配置文件,路徑 /etc/rsyslog.conf,修改前最好先備份一份,修改後的文件內容以下
[root@opm log]# grep -v "^#" /etc/rsyslog.conf | grep -v "^$" $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imjournal # provides access to the systemd journal $ModLoad immark # provides --MARK-- message capability $ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514 $WorkDirectory /var/lib/rsyslog $AllowedSender tcp, 192.168.30.0/24 $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" :fromhost-ip, !isequal, "127.0.0.1" ?Remote $IncludeConfig /etc/rsyslog.d/*.conf $OmitLocalLogging on $IMJournalStateFile imjournal.state *.info;mail.none;authpriv.none;cron.none /data/log/messages authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg :omusrmsg:* uucp,news.crit /var/log/spooler local7.* /var/log/boot.log
a.$AllowedSender tcp, 192.168.30.0/24 容許 30.0網段內的主機以tcp協議來傳輸
b.$template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" 定義模板,接受日誌文件路徑,區分了不一樣主機的日誌
c.:fromhost-ip, !isequal, "127.0.0.1" ?Remote 過濾server 本機的日誌。
d.$InputTCPServerRun 514 開啓tcp,tcp和udp 能夠共存的
建立日誌目錄,儘可能選擇系統內比較大的區域建立,由於考慮到要存放不少服務器的日誌文件。
[root@opm ~]# mkdir -pv /data/log
修改完成無誤後,重啓rsyslog服務,並查看監聽端口,514 是不是tcp協議
[root@opm ~]# systemctl restart rsyslog [root@opm ~]# netstat -aulntp | grep rsyslog tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 20228/rsyslogd tcp6 0 0 :::514 :::* LISTEN 20228/rsyslogd udp 0 0 0.0.0.0:514 0.0.0.0:* 20228/rsyslogd udp6 0 0 :::514 :::* 20228/rsyslogd
2.3 客戶端上操做:
node1 上進行配置
打開配置文件,老樣子,先備份下在進行修改 /etc/rsyslog.conf,修改完記得要重啓程序
[root@node1 ~]# grep -v "^$" /etc/rsyslog.conf | grep -v "^#" $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imjournal # provides access to the systemd journal $WorkDirectory /var/lib/rsyslog $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $template myFormat,"%timestamp% %fromhost-ip% %msg%\n" $ActionFileDefaultTemplate myFormat $IncludeConfig /etc/rsyslog.d/*.conf $OmitLocalLogging on $IMJournalStateFile imjournal.state *.info;mail.none;authpriv.none;cron.none @@192.168.30.55 authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg :omusrmsg:* uucp,news.crit /var/log/spooler local7.* /var/log/boot.log
ceph1 上進行配置,重啓rsyslog程序
打開配置文件/etc/rsyslog.conf
[root@ceph1 ~]# grep -v "^$" /etc/rsyslog.conf | grep -v "^#" $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imjournal # provides access to the systemd journal $WorkDirectory /var/lib/rsyslog $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $IncludeConfig /etc/rsyslog.d/*.conf $OmitLocalLogging on $IMJournalStateFile imjournal.state *.info;mail.none;authpriv.none;cron.none @@192.168.30.55 authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg :omusrmsg:* uucp,news.crit /var/log/spooler local7.* /var/log/boot.log $template myFormat,"%timestamp% %fromhost-ip%%msg%\n" $ActionFileDefaultTemplate myFormat
最後重啓客戶端上的rsyslog程序
2.4 驗證,在服務器上進到 /data/log 目錄下,進行查看,會發現如下相似的文件結構
[root@opm ~]# tree /data/log/ /data/log/ ├── 192.168.30.56 │ └── 192.168.30.56_2016-05-05.log ├── 192.168.30.57 │ └── 192.168.30.57_2016-05-05.log └── messages 2 directories, 3 files
messages:server 端的系統日誌
文件夾192.168.30.56: node1 客戶端的日誌
文件夾192.168.30.57: ceph1 客戶端的日誌
咱們這裏只查看node1 的系統日誌吧。server 上進行操做
[root@opm ~]# tail -f /data/log/192.168.30.56/192.168.30.56_2016-05-05.log May 5 20:50:45 node1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.7" x-pid="9296" x-info="http://www.rsyslog.com"] exiting on signal 15. May 5 20:50:45 node1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.7" x-pid="9334" x-info="http://www.rsyslog.com"] start May 5 20:50:45 node1 systemd: Stopping System Logging Service... May 5 20:50:45 node1 systemd: Starting System Logging Service... May 5 20:50:45 node1 systemd: Started System Logging Service.
這裏還能夠在node1上在命令行裏輸入 logger 「this is test 」 發送消息,server上進行查看下
[root@opm ~]# tail -1f /data/log/192.168.30.56/192.168.30.56_2016-05-05.log May 5 20:52:46 node1 root: this is test
2.5.若是驗證失敗的話,先檢查selinux 是否關閉。後將udp 514 端口和tcp 514端口容許30網段訪問便可,或者關閉iptables 服務。另外說明centos7上 默認防火牆是firewalld。該操做在每臺機器上進行。
3、收集系統其它服務日誌,在客戶端node1 上操做,示例以openstack-nova 服務的日誌爲例:
3.1.先修改配置文件 /etc/rsyslog.conf,完整內容以下:
[root@node1 ~]# egrep -v '^#|^$' /etc/rsyslog.conf $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imjournal # provides access to the systemd journal $ModLoad immark # provides --MARK-- message capability $WorkDirectory /var/lib/rsyslog $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $IncludeConfig /etc/rsyslog.d/*.conf $OmitLocalLogging on $IMJournalStateFile imjournal.state *.info;mail.none;authpriv.none;cron.none @@192.168.30.67 authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg :omusrmsg:* uucp,news.crit /var/log/spooler local7.* /var/log/boot.log module(load="imfile" PollingInterval="5") $InputFileName /var/log/nova/nova-compute.log $InputFileTag nova-info: $InputFileStateFile state-nova-info $InputRunFileMonitor
其實只添加了後5行的內容,對每項簡單解釋下
module(load="imfile" PollingInterval="5") 加載imfile 模塊,並5秒刷新一次
$InputFileName /var/log/nova/nova-compute.log 要監控的日誌文件路徑
$InputFileTag nova-info: 定義文件標籤 ,注意最後是冒號:
$InputFileStateFile state-nova-info 定義狀態文件
$InputRunFileMonitor 激活讀取,能夠設置多組日誌讀取,每組結束時設置本參數
3.2.修改完成後,重啓客戶端的rsyslog服務
[root@node1 ~]# systemctl restart rsyslog
3.3 驗證,在rsyslog服務器上查看日誌,以下圖
4、總結
之前不知道這個,總覺得日誌轉發很難,如今感受rsyslog仍是挺簡單的。不過簡單是由於咱們只是用了最簡單方法,並且功能也是隻用了系統日誌的轉發,後續會嘗試如何記錄轉發其它服務的日誌,好比mysql、zabbix、以及nova 服務的日誌。這些纔是最終的目的。
本文章屬於原創,轉載引用時請註明出處