rsyslog

十五十六發表於2018-08-29

簡介

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, syslog

  • priority表示優先順序,有下面幾類
    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展示介面,也非常簡單,這裡就不安裝了。

參考連結