1. 程式人生 > >linux基礎之rsyslog

linux基礎之rsyslog

rest 用戶名 disco 自己 init module -h 連接數 日誌級別

系統日誌服務: 

CentOS5:  

syslog:   
   syslogd: system    klogd: kernel
 

CentOS6及7:

rsyslog:
    syslogd
    klogd

rsyslog特性:

      多線程
      UDP,TCP,SSL,TLS,RELP
      Mysql,PGSQL,Oracle實現日誌存儲
      強大的過濾器,可實現過濾日誌信息中任何部分
      自定義輸出格式

一般中大型公司用的比較多的分布式日誌存儲分析系統:elk

分布式日誌存儲和搜索系統:elasticsearch
日誌收集器:logstash
前端展示工具: kibana

日誌收集方:

從功能或程序上對日誌進行分類:

facility: 
  auth,aurhpriv,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)

日誌收集定義:

facility.priority  /var/log/messages

指定級別:

*: 所有級別
none: 沒有級別
priority: 此級別及更高級別的日誌信息
=priority: 此級別

rsyslog相關程序文件:

  主程序:rsyslogd
  配置文件:/etc/rsyslog.conf
  服務腳本:/etc/rc.d/init.d/rsyslog
舉例:
    # vim /etc/ssh/sshd_config
            自定義日誌分類:SyslogFacility local2
    # vim /etc/rsyslog.conf
            指明local2分類的日誌所有級別下:local2.*       /var/log/sshd.log
   # service sshd restart
# service rsyslog restart
  重新登錄ssh後可以在/var/log/sshd.log看到登錄日誌

rsyslog.conf配置文件:

RULES:
    facility.priority    target
    
    target:
        文件路徑: 記錄於指定日誌文件中,通常應該在/var/log目錄下,文件路徑前的"-"表示異步寫入
        用戶: 將日誌通知給指定用戶
                *: 所有用戶
       日誌服務器:@host
                host: 必須監聽在tcp或udp協議514端口上提供服務
        管道: |COMMAND
文件記錄的日誌的格式
    事件產生的日期時間    主機    進程pid:事件內容
有些日誌記錄二進制格式:/var/log/wtmp,/var/log/btmp
  /var/log/wtmp:當前系統上成功登陸的日誌:
      查看日誌: last
  /var/log/btmp:當前系統上失敗的登錄嘗試
      查看日誌: lastb
  
  lastlog命令: 顯示當前系統上每一個用戶最近一次的登錄時間

rsyslog服務器:

日誌信息存儲目標指向TARGET為一臺主機:

1. MODULES中啟用模塊:udp和tcp都可以,這裏都啟動好了
# vim /etc/rsyslog.conf
    
$ModLoad imudp
    $UDPServerRun 514
    $ModLoad imtcp
    $InputTCPServerRun 514
# netstat -tunl  //514在監聽

2. 另一臺電腦以本機作為日誌服務器

# vim /etc/rsyslog.conf
比如就指定這個吧
*.info;mail.none;authpriv.none;cron.none @192.168.2.104  //指向日誌服務器

將日誌記錄於mysql數據庫中

1. rsyslog服務器安裝驅動:rsyslog-mysql

# yum install rsyslog-mysql

2. mysql服務器授權就可以了

MariaDB [(none)]> GRANT ALL ON Syslog.* TO syslog@192.168.2.% IDENTIFIED BY syslogpass;
MariaDB [(none)]> FLUSH PRIVILEGES;

順便查看一下mysql的配置文件有沒有跳過名稱解析,沒有的話加上下面兩行

# vim /etc/my.cnf
      skip_name_resolve = on
    innodb_file_per_table = on
# service mysqld restart

3. rsyslog服務器以重定向方式導入Syslog數據庫及表,當然也可以自己去手動創建

# mysql -usyslog -h192.168.2.105 -p < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

4. 修改rsyslog服務器配置文件:

1.Modules這一個條目下面添加:
  $ModLoad ommysql    //加載連接mysql模塊
2. RULES下面添加:
  *.info;mail.none;authpriv.none;cron.none  :ommysql:192.168.2.105,Syslog,syslog,syslogpass//將日誌發往ommysql輸出過濾器,服務器地址,數據庫,連接數據庫的用戶名,密碼

5.測試

現在在rsyslog服務器/var/log/messages下已經看不到日誌了,在數據庫中可以查看

連接數據庫後:
  USE Syslog;
  SELECT * FROM SyslogEvents\G

6. 使用日誌分析前端工具:loganalyzer

安裝服務器環境

# yum install httpd php php-mysql

下載loganalyzer:http://download.adiscon.com/loganalyzer/loganalyzer-4.1.5.tar.gz

安裝analyzer

# tar xf loganalyzer-4.1.5.tar.gz
# mv

拷貝src和contrib下的腳本到loganalyzer下

# tar xf loganalyzer-4.1.5.tar.gz -C /var/www/html/
# mv loganalyzer-4.1.5/ log
# mv log/src loganalyzer
# cp log/contrib/* loganalyzer/
# cd loganalyzer/
執行下腳本,沒問題的話修改配置文件權限
# chmod +x *.sh
# ./configure.sh
# ./secure.sh
# chmod 666 config.php  //沒有的話會自動創建一個

按步驟設置好loganalyzer第一次登陸設置

安裝php-gd顯示mysql數據圖形

# yum install php-gd
# service httpd reload

linux基礎之rsyslog