日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(转载)把syslog接收的远程日志从/var/log/messages中分开

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转载)把syslog接收的远程日志从/var/log/messages中分开 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天突然要配置Linux的syslog服務器,摸了一早上才弄好。記錄遠程機器發來的syslog消息倒是容易(網上到處都是),不過按照默認的設置,syslog會將所有信息都給寫入 /var/log/messages 中,和本機的消息都混到一塊去了。

實在可恨,搜了一上午都找不到解決辦法。本來看到個FreeBSD中用腳本處理的方法,興沖沖的跑去實驗,結果一點反應都沒有。
后來看到介紹中有一句:“※注意,不能通過“|/var/xxx.sh”方式導向日志到其他腳本中處理!!”,差點氣得吐血...

網上有人說syslog不能分離遠程日志,于是試圖從syslog-ng下手。結果syslog-ng編譯起來N麻煩不說,跑起來還有問題,于是回頭繼續摸索syslog。試了N次終于找到個差強人意的解決辦法,算是解決分離的問題。

?


--------------------------------------------------------------------------------

首先確定遠程發來的消息是哪一級的,比如Panabit發過來的都是emerg級消息,某些路由器用的是notice級。實在不行就先用info然后過濾(具體辦法見后文)。

(紅色字是要添加的內容)
vi /etc/sysconfig/syslog
SYSLOGD_OPTIONS="-r -x -m 0"
-r: 打開接受外來日志消息的功能,其監控514 UDP端口;
-x: 關閉自動解析對方日志服務器的FQDN信息,這能避免DNS不完整所帶來的麻煩;

vi /etc/syslog.conf
# 把emerg等級的消息從messages中除開,免得重復記錄:
*.info;*.!emerg;mail.none;authpriv.none;cron.none /var/log/messages # *.!emerg 表示不記錄emerg級的消息
#*.emerg * # 注釋掉原來的emerg,不將emerg級消息顯示到控制臺
# 輸出到/var/log/mylog
*.emerg /var/log/mylog

然后重啟syslog:service syslog restart

這樣就把遠程日志寫入/var/log/syslog并且不影響本機syslog工作了。


--------------------------------------------------------------------------------

?

關于/etc/syslog.conf寫法,這里有個詳細說明:

?

/etc/syslog.conf 根據如下的格式定義規則
/etc/syslog.conf 根據如下的格式定義規則:
facility.level action
設備.優先級 動作

1、facility 定義日志消息的范圍,其可使用的key有:
auth -由 pam_pwdb 報告的認證活動。
authpriv -包括特權信息如用戶名在內的認證活動?
cron -與 cron 和 at 有關的計劃任務信息。?
daemon -與 inetd 守護進程有關的后臺進程信息。?
kern -內核信息,首先通過 klogd 傳遞。?
lpr -與打印服務有關的信息。?
mail -與電子郵件有關的信息?
mark - syslog內部功能用于生成時間戳?
news -來自新聞服務器的信息?
syslog -由 syslog 生成的信息?
user -由用戶程序生成的信息?
uucp -由 uucp 生成的信息?
local0-local7 -與自定義程序使用
* 通配符代表除了 mark 以外的所有功能

除mark為內部使用外,還有security為一個舊的key定義,等同于auth,已經不再建議使用。


2、level級別定義消息的緊急程度。按嚴重程度由高到低順序排列為:
emerg -該系統不可用,等同panic
alert -需要立即被修改的條件?
crit -阻止某些工具或子系統功能實現的錯誤條件?
err -阻止工具或某些子系統部分功能實現的錯誤條件,等同error
warning -預警信息,等同warn?
notice -具有重要性的普通條件?
info -提供信息的消息?
debug -不包含函數條件或問題的其他信息?
none -沒有重要級,通常用于排錯?
* 所有級別,除了none

其中,panic、error、warn均為舊的標識符,不再建議使用。

在定義level級別的時候,需要注意兩點:
1)優先級是由應用程序在編程的時候已經決定的,除非修改源碼再編譯,否則不能改變消息的優先級;
2)低的優先級包含高優先級,例如,為某個應用程序定義info的日志導向,則涵蓋notice、warning、err、crit、alert、emerg等消息。(除非使用=號定義)


3、selector選擇條件
通過小數點符號“.”把facility和level連接在一起則成為selector(選擇條件)。
可以使用分號“;”同時定義多個選擇條件。也支持三個修飾符:
* - 所有日志信息
= - 等于,即僅包含本優先級的日志信息
! - 不等于,本優先級日志信息除外


4、action動作 由前面選擇條件定義的日志信息,可執行下面的動作:
file-指定日志文件的絕對路徑?
terminal 或 print -發送到串行或并行設備標志符,例如/dev/ttyS2
@host -遠程的日志服務器
username -發送信息本機的指定用戶信息窗口中,但該用戶必須已經登陸到系統中?
named pipe -發送到預先使用 mkfifo 命令來創建的 FIFO 文件的絕對路徑

※注意,不能通過“|/var/xxx.sh”方式導向日志到其他腳本中處理!!

?

另外:如果確定不了遠程發來的消息屬于哪一級,可以這樣做:

# 先分別記錄各種消息
*.info;mail.none;authpriv.none;cron.none /var/log/messages
*.emerg /var/log/testlog1
*.warning /var/log/testlog2
*.notice /var/log/testlog3

然后分別cat并與messages中比較一下看看哪個里面有需要的日志。比如發現emerg和notice里有需要的內容,再改成這樣:

*.info;*.!emerg;*.!notice;mail.none;authpriv.none;cron.none /var/log/messages
*.emerg;*.notice /var/log/mylog

這樣寫就是將emerg和notice的內容獨立出來,存入/var/log/mylog,以免都混到/var/log/messages中不好分析。

轉載于:http://www.cnblogs.com/bits/archive/2009/03/09/Linux-syslog_remote_cap2sf.html



本文轉自 liang3391 51CTO博客,原文鏈接:http://blog.51cto.com/liang3391/456539

總結

以上是生活随笔為你收集整理的(转载)把syslog接收的远程日志从/var/log/messages中分开的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。