rsyslog從入門到放棄

服務器作用不就是發送和收集數據,這個數據無非分爲兩類,一類是業務數據,主要是爲維持業務運行數據,比如一個遊戲服務器,業務數據有裝備信息,用戶等級信息,裝備爆率等等。另一類數據就是日誌信息,這個數據非必要數據,但是這個數據可以分析用戶行爲,可以進一步的幫助我們發現用戶需求創造收入來源,,在這個大數據時代如果不搞點數據分析基本上不敢說主機是高科技公司。同時我們也使用日誌信息記錄服務器狀態,協助我們瞭解系統瓶頸,實現業務平滑拓展收縮。爲了迎合大數據時代的需求這裏主要介紹日誌收集。

目錄

  • 一日誌收集

  • 二rsyslog特點

  • 三rsyslog組成

  • 四實踐

一日誌收集

日誌數據的收集手段是多種多樣的,採集的數據也是多種多樣的。其中很多應用都是自己收集數據,這一類應用一般比較重量級,並且我們也使用其自帶的日誌收集工具,主要原因是收集的數據個格式一般比較特殊,需要記錄的內容很多。記錄日誌需要寫數據到磁盤,寫操作一般會消耗大量的資源這就需要一個高性能的日誌記錄,若採用第三方記錄日誌的工具,每記錄一次日誌都有發送給記錄日誌的程序,無形間就消耗了大量的資源。這類記錄日誌的手段需要結合具體的應用去了解使用,這裏不做過多的介紹。平時我們會使用一些比較小的程序,這些程序產生的日誌比較少但是還比較重要需要記錄,每個小程序都寫一個自己的日誌記錄工具顯然比較浪費,這時centos給我們提供了一個通用的記錄日誌的api,小程序記錄日誌直接調用即可,服務名稱爲rsyslog,只要程序支持使用rsyslog記錄日誌,我們就可以調用了。有時我們收集的數據量特別大,這就要求使用更高性能的日誌收集展示工具,比較流行的是ELK,E: elasticsearch, L: logstash, K: kibana。以後再介紹

二rsyslog特點

  • rsyslog的特性:多線程;UDP/TCP/SSL/TLS/RELP;存儲日誌信息於MySQL, PGSQL, Oracle等RDBMS;強大的過濾器,實現過濾日誌信息中的任何部分的內容;自定義的輸出格式;

 常用事件記錄格式:日期時間   主機   進程[pid]: 事件內容;
  • facility:設施,收束日誌數據流爲有限幾個;我們使用的一般是local0-local7自定義收集數據auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, user, uucp, syslog, local0-local7

  • proirity:優先級,在記錄日誌是我們選擇一個級別,只要報錯信息超過該級別就都會記錄debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)

三rsyslog組成

既然是要了解rsyslog首先我們要了解他的配置文件以方便我瞭解它的功能,配置文件的位置在/etc/rsyslog.conf,它的配置文件分爲三個部分

  • MODULES

    這一部分主要是給rsyslog啓動一些額外的模塊,幫助rsyslog完成對其他主機日誌的收集。$ModLoad imudp #啓用udp監聽模塊,不使用註釋掉即可$UDPServerRun 514 #監聽在514端口$ModLoad imtcp$InputTCPServerRun 514$ModLoad ommysql #啓用MySQL數據庫記錄數據,只有這個還不夠還需要在RULES部分定義調用哪個數據庫

  • GLOBAL DIRECTIVES

    全局配置段,定義一下通用的屬性

  • RULES

    定義記錄日誌的格式,之前在modules部分啓用了mysql模塊,在這裏使用時可以使用如下格式facility.priority   :ommysql:DBHOST,DBNAME,DBUSER,DBUSERPASSWORD

四實踐

先說目的,這裏我們要實現一個使用數據庫記錄日誌信息的rsyslog服務器,並且幫助另外一條記錄日誌,同時我們提供一個web查看界面。拆分一下任務,1配置rsyslog需要的數據庫,2配置rsyslog把數據寫到數據庫並且監聽udp514端口,3使用另外一條主機把日誌信息發送到rsyslog服務器,4提供網頁查看日誌工具loganalyzer

 loganalyzer的安裝包下載位置http://loganalyzer.adiscon.com/downloads/
  • 這裏我直接寫了一個腳本,主要適用centos7,6的話需要更改一些內容

  • yum install mariadb-server rsyslog-mysql -y #安裝數據庫和rsyslog連接數據庫的組件

  • systemctl start mariadb.service  #啓動數據庫

  • mysql <<eofGRANT ALL ON Syslog.* TO 'rsluser'@'127.0.0.1' IDENTIFIED BY 'rslpass';

  • GRANT ALL ON Syslog.* TO 'rsluser'@'localhost' IDENTIFIED BY 'rslpass';

  • eof #授權rsyslog使用rsluser使用rslpass密碼訪問本地數據庫,並且只可以通過本地訪問

  • mysql < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql #創建rsyslog需要數據庫,這個sql腳本是rsyslog-mysql包帶的

  • systemctl restart rsyslog.serviceyum install httpd php php-mysql php-gd -y #安裝提供網頁組件

  • cd

  • wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.5.tar.gz #下載loganalyzer包

  • tar xf loganalyzer-4.1.5.tar.gz #解壓並複製到/var/www/html/loganalyzer

  • cp -a loganalyzer-4.1.5/src  /var/www/html/loganalyzercd  

  • cd /var/www/html/loganalyzer #創建666權限的config.php

  • touch config.php

  • chmod 666 config.php

  • systemctl start httpd.service #啓動httpd服務

  • 需要手動更改的內容

  • vim /etc/rsyslog.conf

  • $ModLoad imudp

  • $UDPServerRun 514

  • $ModLoad ommysql #這一行需要添加

  • *.info;mail.none;authpriv.none;cron.none          :ommysql:127.0.0.1,Syslog,rsluser,rslpass

  • 配置下一臺服務器把日誌寫到這臺rsyslog服務器,只要改這一行就好了,當然ip是你們rsyslog服務器的ip不要填寫我的ip

  • *.info;mail.none;authpriv.none;cron.none                @172.16.29.20

  • 打開網頁第七步的時候配置內容如下

  • My Syslog Source My Syslog SourceSource

  • Type MYSQL NativeSelect

  • View SyslogfieldsDatabase

  • Type OptionsTable type MonitorWareDatabase

  • Host 127.0.0.1

  • Database Name Syslog

  • Database Tablename SystemEvents

  • Database User rsluser

  • Database Password ******** #這裏的密碼就是我們設置的連接數據庫的密碼rslpassEnable Row Counting No

  • 都配置完之後把/var/www/html/loganalyzer/config.php文件的權限更改爲644

  • chmod 644 /var/www/html/loganalyzer/config.php

總結

這一節主要是學習使用rsyslog,主要是學會配置數據庫接收日誌信息,讓rsyslog監聽端口收集其他主機的日誌,配置網頁查看日誌信息的網站。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章