學習rsyslog總結

問題:

syslog與rsyslogd有什麼關係?rsyslogd是syslog的升級版
如何增加自定義服務?通過local0 ~ local7可以自定義一些服務信息
如何與數據庫相關聯?
如何確定使用的什麼協議傳輸?根據配置
業務場景有哪些?記錄系統日誌、開發業務日誌
如何升級?

#

syslog缺點:

  • 記錄丟失,默認使用UDP 514端口傳輸 UDP沒有檢測,重發等功能
  • 記錄緩慢 磁盤IO利用率較高進而導致CPU阻塞影響系統性能

#

rsyslog優點:

  • 支持數據庫
  • 日誌內容篩選
  • 自定義日誌格式模板
  • 支持UDP、TCP、RELP傳輸協議

重啓服務:

systemctl restart rsyslog
/etc/init.d/rsyslog restart

syslog日誌消息既可以記錄在本地文件中,也可以通過網絡發送到接收syslog的服務器。

完整的syslog日誌中包含產生日誌的程序模塊(Facility)、嚴重性(Severity或 Level)、時間、主機名或IP、進程名、進程ID和正文。

配置文件的格式
facility.level action

facility: 服務
level: 等級
action: 動作

日誌服務:
sysloggd:主要登錄系統與網絡等服務
klodg:主要登錄內核產生的各項信息
logrotate:主要進行日誌文件的輪替功能

日誌記錄的主要數據

  • 事件發生的日期與時間
  • 發生此事的主機名
  • 啓動此事件的服務名或函數名稱
  • 該信息的實際數據內容

服務名稱(facility)

服務類型 說明
auth(authpriv) 授權信息 主要是認證有關的機制,例如login ssh eu等需要賬號、密碼
cron 例行性工作調度信息
daemon 守護進程、後臺進程
kern 內核信息
lpr 打印相關
mail 郵件
news 與新聞服務器相關
syslog 系統信息
user 用戶進程
uucp 由uucp產生的消息
local0~local7 自定義程序使用

消息級別(level)一下表中爲由高到低

等級名稱 說明
* 所有級別,除了none
none 沒有重要級,通常用於排錯(不記錄任何日誌消息)
debug 不包含函數條件或問題的其他信息(調試級-信息量最多)
info 僅是一些基本的消息(通知類)
notice 具有重要性的普通消息(普通單重要的消息)
warning(warn) 阻止某些工具或子系統功能實現的錯誤條件(重要消息)
error(err) 阻止工具或某些子系統部分功能實現的錯誤條件(出錯消息
crit 比error還要嚴重
alert 需要立即被修改的條件(緊急消息)
panic 該系統不可用(最緊急消息)

服務與等級之間的連接符“.=!”
. 代表比當前等級要高(包含自己)的都要記錄下來
.= 僅記錄後面標記的等級
.! 記錄處後面的所有等級

信息記錄的文件名、設備、主機(action 動作域)

  • 文件的絕對路徑:通常記錄到 /var/log/
  • 打印機或其他:/dev/lp0
  • 用戶名稱:顯示給某用戶
  • 遠程主機:例如@www.vbird.tsai
    • :代表在線的所有人

封裝好的調用函數
bool openlog ( string $ident , int $option , int $facility )
bool syslog ( int $priority , string $message )
bool closelog ( void )

rsyslog服務配置案例:

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
$ModLoad imudp        #應用UDP協議模塊
$UDPServerRun 514      #設置UDP使用的端口
$ModLoad imtcp        #應用tcp協議模塊
$InputTCPServerRun 514     #設置TCP使用的端口
$AllowedSender tcp, 192.168.18.248          #設置允許的iP
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"
:fromhost-ip, !isequal, "127.0.0.1" ?Remote #過濾本機的日誌
$IncludeConfig /etc/rsyslog.d/*.conf
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 *
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log

配置文件

加載模塊
Module (load="imuxsock")
$ModLoad imuxsock
#

日誌記錄格式
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #默認格式

$template name , "路徑" #定義一種模板
$template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"
#

參考:

[RSYSLOG服務實時傳輸日誌配置請添加鏈接描述](https://www.cnblogs.com/blueswu/p/3564763.html)
[syslog簡介——系統日誌寫入API請添加鏈接描述](https://www.cnblogs.com/bonelee/p/6234647.html)
[Rsyslog的遠程傳輸日誌(系統日誌篇)請添加鏈接描述](http://blog.csdn.net/love910809/article/details/70761526)    
[官方參考手冊請添加鏈接描述](http://www.rsyslog.com/guides-for-rsyslog/)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章