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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

通过syslog接收远程日志

發布時間:2023/11/30 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过syslog接收远程日志 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通過syslog接收遠程日志 通過syslog接收遠程主機的日志,需要做一些環境配置。 客戶機A通過syslog將日志信息發送到服務主機B(或稱日志采集服務器)。以下說明配置過程
(我的實驗環境是,客戶機A:Solaris 10,服務主機B:redhat linux企業服務器版): ?www.2cto.com ? 客戶機A配置: vi /etc/syslog.conf *.info;*.!emerg;mail.none;authpriv.none;cron.none /var/log/messages 。。。。。。 # 自定義syslog消息處理方式,這里是發送到遠程主機 syslog.info ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @10.10.65.143 其中,10.10.65.143就是服務主機B的ip地址。 ?www.2cto.com ? 重啟syslog: # svcadm restart system-log 或者 # /etc/init.d/syslog restart 服務器B配置: 首先確定遠程發來的消息是哪一級的,比如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級消息顯示到控制臺 # 接收遠程主機發來的syslog日志信息,輸出到/var/log/mylog syslog.info ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /var/log/mylog 然后重啟syslog:service syslog restart 這樣就把遠程日志寫入/var/log/mylog并且不影響本機syslog工作了。 客戶機A上的發送syslog日志小程序: #include <stdio.h> #include <syslog.h> int main(int argc, char* argv[]) { //openlog(argv[0], LOG_CONS | LOG_PID, LOG_USER); int count = 0; while(count<5){ syslog(LOG_SYSLOG | LOG_INFO, "%d:, syslog info test", count); count++; } //closelog(); return 0; } 客戶機A上該程序運行后,在服務器B的/var/log/mylog中查看 [root@localhost socket]# tail -f /var/log/mylog Jul ?1 13:40:35 localhost syslogd 1.4.1: restart (remote reception). Jul ?1 14:12:14 10.10.65.244 a.out[653]: [ID 852416 syslog.info] 0:, syslog info test Jul ?1 14:12:14 10.10.65.244 a.out[653]: [ID 852416 syslog.info] 1:, syslog info test Jul ?1 14:12:14 10.10.65.244 a.out[653]: [ID 852416 syslog.info] 2:, syslog info test Jul ?1 14:12:14 10.10.65.244 a.out[653]: [ID 852416 syslog.info] 3:, syslog info test Jul ?1 14:12:14 10.10.65.244 a.out[653]: [ID 852416 syslog.info] 4:, syslog info test 可見,日志信息已經接收過來了。 【附錄】:關于/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”方式導向日志到其他腳本中處理!!

總結

以上是生活随笔為你收集整理的通过syslog接收远程日志的全部內容,希望文章能夠幫你解決所遇到的問題。

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