rsyslog
簡介
Rsyslog是一個開源軟體實用程式,用於UNIX和類Unix計算機系統,用於在IP 網路中轉發日誌訊息,收集日誌。它實現了基本的syslog協議,通過基於內容的過濾,豐富的過濾功能,靈活的配置選項擴充套件了它,並新增了諸如使用TCP進行傳輸等功能。
特性
- 多執行緒;
- 可以通過許多協議進行傳輸UDP,TCP,SSL,TLS,RELP;
- 儲存日誌資訊於MySQL、PGSQL、Oracle等資料管理系統;
- 強大的過濾器,實現過濾日誌資訊中任何部分的內容;
- 自定義輸出格式;
配置檔案
配置檔案/etc/rsyslog.conf主要有3個部分
- MODULES :模組
- GLOBAL DRICTIVES :全域性設定
- RULES:規則
RULES
比較重要的就是規則的編寫
格式為
facilty.priority target
facilty表示裝置設施,表示從功能或程式上對日誌收集進行分類,一般有下面這幾類
auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, user, uucp, local0-local7, syslogpriority表示優先順序,有下面幾類
debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)target表示將日誌資訊傳送到哪裡,
- 檔案:記錄日誌事件於指定的檔案中;通常應該位於/var/log目錄下;檔案路徑之前的”-“表示非同步寫入;
- 使用者:將日誌事件通知給指定的使用者;是通過將資訊傳送給登入到系統上的使用者的終端進行的;
- 日誌伺服器:@host,把日誌送往指定的伺服器主機; host:即日誌伺服器地址,監聽在tcp或udp協議的514埠以提供服務;
- 管道: | COMMAND
將日誌資訊傳送到別的伺服器
日誌收集伺服器IP:192.168.253.128
日誌傳送方IP:192.168.253.129
服務端:修改配置檔案 /etc/rsyslog.conf
$ModLoad imudp ##取消註釋
$UDPServerRun 514 ##取消註釋
$ModLoad imtcp ##取消註釋
$InputTCPServerRun 514 ##取消註釋
啟動服務
systemctl start rsyslog
客戶端:修改配置檔案 /etc/rsyslog.conf
$ModLoad imudp ##取消註釋
$UDPServerRun 514 ##取消註釋
$ModLoad imtcp ##取消註釋
$InputTCPServerRun 514 ##取消註釋
*.info;mail.none;authpriv.none;cron.none @192.168.253.128 ##這裡@192.168.253.128表示日誌資訊傳送到192.168.253.128
啟動服務
/etc/init.d/rsyslog start ##因為是centos6 所以啟動方式不太一樣不過不影響實驗
現在我們在客戶端安裝一個vsftpd
yum install vsftpd -y
在服務端我們看一下有沒有收到日誌資訊
這裡的node1是客戶端192.168.253.129的主機名
將日誌資訊儲存在mysql
環境:
系統:centos7
IP:192.168.253.128
先安裝一下mysql,這裡用二進位制包。版本為mysql5.6
tar -zxf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql5.6
ln -sv /usr/local/mysql5.6 /usr/local/mysql
useradd -M -s /sbin/nologin mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql5.6 --datadir=/usr/local/mysql5.6/data
PATH="/usr/local/mysql/bin/:$PATH"
啟動資料庫
mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &
表示安裝資料庫完成
現在我們安裝一下rsyslog和mysql連線的模組
yum install rsyslog-mysql
我們可以看一下這個模組安裝完之後有什麼檔案
[root@localhost src]# rpm -ql rsyslog-mysql
/usr/lib64/rsyslog/ommysql.so ##模組
/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql ##建立rsyslog存放日誌的表結構的sql語句
然後我們匯入這個sql檔案
mysql </usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
然後進入資料庫看一下
可以看到表都建立好了。
新增一個使用者給rsyslog訪問資料庫
grant all on Syslog.* to 'rsyslog'@'127.0.0.1' identified by 'rsyslog'; 在資料庫裡面,設定授權rsyslog使用者訪問許可權
修改主配置檔案/etc/rsyslog.conf
$ModLoad ommysql ##開啟連線mysql的模組
*.info;mail.none;authpriv.none;cron.none :ommysql:127.0.0.1,Syslog,rsyslog,rsyslog
重啟一下rsyslog服務
systemctl restart rsyslog
然後我們為了有一些日誌產生我們安裝個telnet
yum install telnet
進入資料庫
執行一個命令
select * from Syslog.SystemEvents \G;
從截圖可以看出來安裝telnet這個日誌已經儲存進去了。放在資料庫可能不太好觀察。有興趣的可以配合loganalyzer,這是一個web展示介面,也非常簡單,這裡就不安裝了。