使用Rsyslog記錄Apache日誌

技術小阿哥發表於2017-11-27

原文:

http://blog.sina.com.cn/s/blog_7f2122c501013d2d.html

 

把各種應用程式通過syslogd的機制,動態把重要日誌寫入遠端日誌伺服器,優勢是很明顯的,主要表現在幾個方面: 1 日誌統一,集中式管理  2 日誌實時傳送到一個更加安全的遠端伺服器上,真正記錄使用者行為,使日誌的2次更改可能性大大降低,從而能夠對日誌進行真實回放,便於問題追蹤。


 事實上,大部分的programe的日誌記錄總是使用標準的unix domain socket(/dev/log)來實現。這就使的和syslogd聯合,並且利用syslogd的遠端傳送日誌功能實現更加安全的遠距離日誌備份需求。


 本文主要描述把apache,squid日誌寫通過syslog寫入遠端日誌伺服器的配置過程。有興趣的同學可以看看。


本文所涉及的軟體環境:


客戶端:

Syslog:rsyslog-relp-3.21.3-4.fc10

rsyslog-3.21.3-4.fc10 

Programe:httpd-2.2.9-1.fc8

squid-2.6.STABLE22-3941.8.fc8


伺服器端:

Syslog:rsyslog-relp-3.21.3-4.fc10

rsyslog-3.21.3-4.fc10


日誌系統架構圖:

架構




apache,squid和syslog的聯動配置簡介

這裡主要描述本地客戶端的配置內容:


 1 首先是配置apache檔案,只顯示文章話題相關的配置內容:


###/etc/http/conf/httpd.conf

#ErrorLog logs/error_log

ErrorLog syslog     <—–修改配置表示對errorlog啟用syslog

#LogLevel warn

LogLevel notice     <—–notice以上的log全部記錄,預設的facility是

local7

LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined

LogFormat “%h %l %u %t “%r” %>s %b” common

LogFormat “%{Referer}i -> %U” referer

LogFormat “%{User-agent}i” agent

#CustomLog logs/access_log combined

CustomLog “|/usr/bin/logger -p local4.info” combined     <—–access_log全部通過管道寫入syslog,並且log的facility配置為local4。


rsyslog的配置如下:

# Load output RELP module

$ModLoad omrelp        <—由於採用的是relp協議傳送給遠端日誌伺服器,所以需要匯入omrelp模組

# Don`t log private authentication messages!

*.info;mail.none;authpriv.none;cron.none;local4.none;local7.none    /var/log/messages      <–local4 以及local7日誌不寫入 /var/log/message,有後面專門的寫入檔案

# Save local7  to a file

local7.*              /var/log/apache_error_log

# Save local4 to a file

local4.*              /var/log/apache_access_log

# Send local7 to remote syslog

local7.*                :omrelp:syslog.chou.com:2514

<—-local7(也就是apache的error_log)除了本地儲存一份之外,還通過relp協議送給遠端的伺服器syslog.chou.com,遠端伺服器的偵聽埠是2514

# Send authentification messages to remote syslog

auth,authpriv.*         :omrelp:syslog.chou.com:2514


  <—伺服器的認證資訊,屬於重要的安全資訊,通過relp協議送給遠端的伺服器syslog.chou.com,遠端伺服器的偵聽埠是2514


重啟rsyslog和apache之後,正常情況下應該在遠端很本地伺服器上看到如下資訊:


[root@remote_machine root]# tail -f /var/log/apache_error_log

Oct 6 20:30:53 xxx.xxx httpd[1837]: [notice] Digest: generating secret for digest authentication …

Oct 6 20:30:53  xxx.xxx  httpd[1837]: [notice] Digest: done

Oct 6 20:30:54  xxx.xxx  httpd[1837]: [notice] Apache/2.2.9 (Unix) DAV/2

PHP/5.2.3 configured — resuming normal operations


[root@localhost root]# tail -f /var/log/apache_error_log

Oct 6 20:30:53 localhost httpd[1837]: [notice] Digest: generating secret for digest authentication …

Oct 6 20:30:53 localhost httpd[1837]: [notice] Digest: done

Oct 6 20:30:54 localhost httpd[1837]: [notice] Apache/2.2.9 (Unix) DAV/2


PHP/5.2.3 configured — resuming normal operation 


2 關於squid的客戶端伺服器配置如下

####/etc/squid/squid.conf的追加配置如下

access_log syslog:local7.* squid   <—配置squid的訪問日誌啟用syslog,並且定義facility為local7,輸出所有級別日誌 


rsyslog的配置內容是:(etc/rsyslog.conf)

# Load output RELP module

$ModLoad omrelp        <—由於採用的是relp協議傳送給遠端日誌伺服器,所以需要匯入omrelp模組

# Don`t log private authentication messages!


*.info;mail.none;authpriv.none;cron.none;local7.none    /var/log/messages      <–local7日誌不寫入 /var/log/message,有後面專門的寫入檔案


# Save local7  to a file

local7.*              /var/log/squid_access_log

# Send local7 to remote syslog

local7.*                :omrelp:syslog.chou.com:2514


 <—-local7(也就是apache的error_log)除了本地儲存一份之外,還通過relp協議送給遠端的伺服器syslog.chou.com,遠端伺服器的偵聽埠是2514


# Send authentification messages to remote syslog

auth,authpriv.*         :omrelp:syslog.chou.com:2514


  <—伺服器的認證資訊,屬於重要的安全資訊,通過relp協議送給遠端的伺服器syslog.chou.com,遠端伺服器的偵聽埠是2514

 

參考:http://wiki.rsyslog.com/index.php/Working_Apache_and_Rsyslog_configuration

 

*.warn;authpriv.notice;auth.notice @@192.168.18.5 #@@TCP/@UDP

  致命級(KERN_EMESG), 

  警戒級(KERN_ALERT), 

  臨界級(KERN_CRIT),
  錯誤級(KERN_ERR), 

  告警級(KERN_WARN), 

  注意級(KERN_NOTICE), 

  通知級(KERN_INFO),
  除錯級(KERN_DEBUG).



本文轉自 nonono11 51CTO部落格,原文連結:http://blog.51cto.com/abian/1091743,如需轉載請自行聯絡原作者


相關文章