?rsyslog

rsyslog



Syslog是日志收集存儲系統,負責記錄遵守此服務的內核、程序的日志信息,可以理解為編年體的日志記錄信息,一般記錄為:“日期時間,主機,進程:事件”。syslog不僅可以記錄本地的系統日志,也可以通過tcp, udp協議記錄遠程主機的程序日志信息。

rsyslog:是syslog的升級版,使用多線程并發記錄本地或遠程日志,支持存儲日志信息在MySQL, PGSQL, Oracle等RDBMS中。同時擁有強大的過濾器功能,可以對日志中任意內容進行過濾。

  • rsyslog的一些概念 
    系統上的應用程序指定某一信道記錄日志,信道默認已經設定了日志的記錄級別,一旦應用程序產生了日志信息,通過該信道就會把日志文件記錄在指定的本地文件、數據庫或遠程rsyslog服務器中。當然應用程序輸出的日志一般也會按照級別劃分,比如sshd_conf中就定義了信道為authpriv,級別為info的日志輸出: 
    # Logging — SyslogFacility AUTHPRIV — #LogLevel INFO

rsyslog支持的facility與priority

facility:設施、信道:

auth, pam產生的日志
authpriv, ssh,ftp登錄信息的驗證日志
cron, 計劃任務
daemon, 守護進程
kern,
lpr, 打印服務
mail,
mark, rsyslog服務內部信息,時間標識
news, 新聞
security,SELinux
user, 用戶程序
uucp, unix主機之間通信
syslog, 系統級別的日志
local0-local7(start system),自定義的信道

priority:級別

debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)

rsyslog程序

  1. 配置文件:/etc/logrotate.d/syslog

  2. 主程序:/usr/sbin/rsyslogd

  3. 模塊路徑:/lib64/rsyslog/

  4. Unit File:/usr/lib/systemd/system/rsyslog.service

配置文件

grep "^####" /etc/rsyslog.conf
#### MODULES ####
#### GLOBAL DIRECTIVES ####
#### RULES ####

#語法格式:
facility.priority   target

facility:
   *:所有的facility
   f1,f2,....p1:指定的facility
   f1.p1,f2.p2,....:指定的facility
priority:
   *:所有級別
   none:不記錄
   PRIORITY:高于此級別的才記錄
   =PRIORITY:
target:
   文件:記錄在指定文件中,-/var/log/maillog:異步寫入磁盤
   用戶:通知指定的用戶,一般為已經登錄終端的用戶
   日志服務器:@rsyslog_server<
   管道:|給某個程序

SAMPLE
   *.info;mail.none;authpriv.none;cron.none     /var/log/messages
   local3.*    ^/tmp/handel.sh     #發送給腳本并執行

配置日志記錄級別和路徑

通過指定facility和priority的日志記錄在本地的某一文件中,

vi /etc/rsyslog.conf
#### RULES ####
   *.info;mail.none;authpriv.none;cron.none;local2.none     /var/log/messages      #不記錄在messages中,指定為 /testdir/testlog 文件
   local2.notice            /testdir/testlog

systemctl restart rsyslog.service

logger - a shell command interface to the syslog(3) system log module
-p, --priority priority
logger -p local2.notice [-t HOSTIDM -f /dev/idmc]    ""

配置日志記錄在遠程rsyslog server

rsyslog server端

遠程服務端需裝載相應的udp、tcp接收模塊,偵聽514端口。如果不使用默認端口則需要注意SELinux的策略是否允許的問題。

vi /etc/rsyslog.conf
#### MODULES ####
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

#### RULES ####
如果要把不同服務器發送過來的日志保存到不同的文件, 可以這樣操作:
:fromhost-ip, isequal, “192.168.0.160″ /var/log/host160.log
:FROMHOST-IP, isequal, “192.168.0.161″ /var/log/host161.log
:FROMHOST-IP, startswith, “192.168.1.” /var/log/network1.log
:FROMHOST-IP, startswith, “192.168.2.” /var/log/network2.log

rsyslog client端

客戶端 rsyslog 需在 RULES配置段中指定 facility和priority 以及 rsysylog server 的地址 

使用UDP協議傳輸 

@使用TCP協議傳輸 
標準端口無需指定,其他端口需在ip:port給出

vi /etc/rsyslog.conf
#### RULES ####
*.*     @10.1.x.x
*.*     ~              #所有日志不在本機中記錄
#再如:
:rawmsg,contains,"dg_log"   @@10.1.x.x  #包含"dg_log"的日志才記錄在服務器
:rawmsg,contains,"dg_log"   ~          #包含"dg_log"的日志不在本地記錄

測試遠程服務器是否記錄日志

#client:
logger "hello remote host."
logger "dg_loghello remote host."

#server:
tail /var/log/messages

rsyslog記錄在MySQL中

日志文件信息記錄在數據庫中能夠比記在文件中文件有更好的檢索速度,利用MySQL的數據索引有助于日志信息的查詢與分析。

  • 安裝 MySQL-server 或 Mariadb-server,創建Syslog數據庫并授權給rsyslog用戶,建議在完成操作后使用rsyslog用戶登錄數據庫,以免造成后面的實驗失敗。

yum -y install mariadb-server
skip_name_resolve = ON
innodb_file_per_table = ON

GRANT ALL ON Syslog.* TO 'rsyslog'@'127.0.0.1' IDENTIFIED BY 'rsyslogpass'

GRANT ALL ON Syslog.* TO 'rsyslog'@'localhost' IDNETIFIED BY 'rsyslogpass'

FLUSH PRIVILEGES

  • 安裝 rsyslog-mysql 模塊 
    rsyslog-mysql package contains a dynamic shared object that will add MySQL database support to rsyslog.

yum install rsyslog-mysql
rpm -ql rsyslog-mysql
   只有兩個文件,一個為動態模塊,一個為數據庫操作模板

cat /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql
CREATE DATABASE Syslog;

USE Syslog;
  • 導入 rsyslog 所需的數據定義和數據操作 
    rsyslog需要對應的數據庫來存儲,安裝了rsyslog-mysql模塊就可以使用已經定義好的SQL語句創建數據庫,因此使用mysql命令導入這個sql腳本。

mysql -hlocalhost -ursyslog -prsyslogpass < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql
  • 修改rsyslog.conf配置文件,添加target為ommysql模塊 
    在配置文件的RULE字段中定義日志轉儲的facility and priority到數據庫中,同時需要指明數據庫服務器的地址、數據庫名、用戶、密碼,配置完成重啟rsyslog服務即可。

vi /etc/rsyslog.conf
#### MODULES ####
   $ModLoad ommysql
#### RULES ####
   *.*         :ommysql:127.0.0.1,Syslog,rsyslog,rsyslogpass
                    #module,dbhost,dbname,dbuser,dbpassword

systemctl restart rsyslog.service
  • 在數據庫中查詢rsyslog的記錄的日志信息

#測試
mysql -h127.0.0.1 -ursyslog -prsyslogpass -e "USE Syslog;SELECT * FROM SystemEvents\G"

其他日志文件

  1. last, lastb – show listing of last logged in users 
    last / lastb -n NUM #success, fail

    • /var/log/btmp:登錄當前系統的所有的失敗的嘗試

    • /var/log/wtmp:所有成功登錄至當前系統的相關信息;

  2. dmesg – print or control the kernel ring buffer 
    系統引導過程中的日志信息

    • /var/log/dmesg

使用LogAnalyser管理rsyslog在數據庫存儲的日志

LogAnalyzer用于管理和檢索rsyslog記錄在數據庫中的日志,運行在AMP環境下,提供簡易界面的日志瀏覽、檢索、統計、分析的功能。此外,LogAnalyzer的繪圖功能依賴于php-gd擴展包。

配置LogAnalyser程序

  • 準備運行環境,且已經完成了上文中rsyslog記錄在MySQL中的相關配置

yum install httpd mysql-server php php-mysql php-gd
  • 解壓縮文件,復制到站點文檔目錄,注意保留原有屬性

tar xf loganalyzer-3.6.5.tar.gz 
cd loganalyzer-3.6.5
cp -a src /var/www/html/loganalyzer-3.6.5       #保留屬性
cd /var/www/html
ln -s loganalyzer-3.6.5 log
  • 創建權限為666的config.php文件,使得瀏覽器可以配置loganalyzer

cd log
touch config.php
chmod 666 config.php            #contrib/configure.sh
  • 瀏覽器配置loganalyzer,需要php的支持 
    MySQL Native, Syslog Field 
    Table Type:”Monitorware”

  • 配置完成后進行安全設定config.php文件的權限為644

chmod 644 config.php            #contrib/secure.sh

LogAnalyser使用簡介

  1. 鼠標停留在Message可以看到固定格式的日志信息 
    01.jpg

  2. Events界面可以看到統計信息,點擊可進入該類別的日志信息 
    02.jpg

  3. Reports導出日志信息到文件 
    03.jpg

原創文章,作者:helloc,如若轉載,請注明出處:http://www.www58058.com/56313

(0)
hellochelloc
上一篇 2016-10-16 21:49
下一篇 2016-10-16 22:31

相關推薦

  • Shell編程if語句

    Shell編程if語句 條件選擇if語句(#if輸入keywork) 選擇執行: 注意:if語句可嵌套 單分支 if 判斷條件(#如果為真執行下一條);then 條件為真的分支代碼 fi(結尾) 雙分支 if 判斷條件; then 條件為真的分支代碼 else 條件為假的分支代碼 fi if 語句 多分支 if 判斷條件1; then 條件為真的分支代碼 e…

    2018-01-01
  • ACL實現靈活的權限管理

    ACL實現靈活的權限管理 除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限 CentOS7當中,無論是操作系統安裝時還是之后手工創建的文件系統(xfs、ext4)均會開啟ACL功能。 CentOS6及之前的版本,僅操作系統安裝時創建的文件系統才會默認開啟ACL,手工創建的文件系統,需要手工開啟ACL功能。 mount -o acl /dev/sda…

    2017-07-27
  • 馬哥教育網絡班21期-第7周課程練習

    第7周課程練習 創建一個10G分區,并格式為ext4文件系統; 添加一塊硬盤sdb 要求其block大小為2048,       預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; # mke2fs -t ext4 -b 2048 -L 'MYDATA' -m 2 # mount -o ac…

    Linux干貨 2016-10-09
  • LVS負載均衡WordPress

    LVS:        LVS是四層協議的開源負載均衡器,工作在netfilter框架INPUT鏈中,它根據不同的算        法將用戶的請求調度給后端服務器,它不受sockt套接字文件限制,性能比nginx七層       …

    Linux干貨 2017-05-18
  • Centos7下安裝httpd源碼包

    今天小編來跟大家做個練習,就是如何在Centos7下安裝httpd源碼包. 一:下載httpd最新版本的源碼包 [root@localhost ~]# rpm -qa |grep httpd //查詢系統上是否已安裝httpd包 httpd-tools-2.4.6-45.el7.centos.4.x86_64 httpd-2.4.6-45.el7.cento…

    2017-08-19
  • 馬哥教育網絡班22期+第2周課程練習

    一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。      文件管理命令有:mkdir  rm  tree  ls  等等  1、mkdir [options] /path/to/somewhere      &…

    Linux干貨 2016-08-22
欧美性久久久久