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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

syslog 和 rsyslog

發布時間:2024/1/1 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 syslog 和 rsyslog 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 介紹

rsyslog可以簡單的理解為syslog的超集,在老版本的Linux系統中,Red Hat Enterprise Linux 3/4/5默認是使用的syslog作為系統的日志工具,從RHEL 6 開始系統默認使用了rsyslog。

?其特性包括:

  • 支持輸出日志到各種數據庫,如 MySQL,PostgreSQL,MongoDB,ElasticSearch,等等;
  • 通過 RELP + TCP 實現數據的可靠傳輸(基于此結合豐富的過濾條件可以建立一種 可靠的數據傳輸通道供其他應用來使用);
  • 精細的輸出格式控制以及對消息的強大 過濾能力;
  • 高精度時間戳;隊列操作(內存,磁盤以及混合模式等); 支持數據的加密和壓縮傳輸等。

2. 配置

/etc/rsyslog.conf

syslog的配置文件有多種書寫方法:

  • sysklogd(一些結構不兼容新特性),
  • legacy rsyslog(以“$”開頭的寫法,如:$ModLoad imtcp.so),
  • RainerScript(一種新的格式,是最推薦使用的一種,尤其是需要做復雜的配置時)

在本文中的配置都比較簡單,就采用了legacy rsyslog的配置書寫方法。更多詳情參考:

http://www.rsyslog.com/doc/master/configuration/basic_structure.html#statement-types

rsyslog的配置主要有以下模塊:

  • modules,模塊,配置加載的模塊,如:ModLoad imudp.so配置加載UDP傳輸模塊
  • global directives,全局配置,配置ryslog守護進程的全局屬性,比如主信息隊列大小(MainMessageQueueSize)
  • rules,規則(選擇器+動作),每個規則行由兩部分組成,selector部分和action部分,這兩部分由一個或多個空格或tab分隔,selector部分指定源和日志等級,action部分指定對應的操作
  • 模板(templates)
  • 輸出(outputs)

?

2.1 常用的modules

  • imudp,傳統方式的UDP傳輸,有損耗
  • imtcp,基于TCP明文的傳輸,只在特定情況下丟失信息,并被廣泛使用
  • imrelp,RELP傳輸,不會丟失信息,但只在rsyslogd 3.15.0及以上版本中可用

? ?更多參考:http://www.rsyslog.com/doc/master/configuration/modules/index.html
?

2.2 規則(rules)

規則的選擇器(selectors)

selector也由兩部分組成,設施和優先級,由點號.分隔。第一部分為消息源或稱為日志設施,第二部分為日志級別。多個選擇器用;分隔,如:*.info;mail.none。

日志設施有:

  • auth(security), authpriv: 授權和安全相關的消息
  • kern: 來自Linux內核的消息
  • mail: 由mail子系統產生的消息
  • cron: cron守護進程相關的信息
  • daemon: 守護進程產生的信息
  • news: 網絡消息子系統
  • lpr: 打印相關的日志信息
  • user: 用戶進程相關的信息
  • local0 to local7: 保留,本地使用

日志級別有(升序):

  • debug:包含詳細的開發情報的信息,通常只在調試一個程序時使用。
  • info:情報信息,正常的系統消息,比如騷擾報告,帶寬數據等,不需要處理。
  • notice: 不是錯誤情況,也不需要立即處理。
  • warning: 警告信息,不是錯誤,比如系統磁盤使用了85%等。
  • err:錯誤,不是非常緊急,在一定時間內修復即可。
  • crit:重要情況,如硬盤錯誤,備用連接丟失。
  • alert:應該被立即改正的問題,如系統數據庫被破壞,ISP連接丟失。
  • emerg:緊急情況,需要立即通知技術人員。

日志設施的配置:

  • . 代表比后面還要高的消息等級都會記錄下來
  • .= 代表只有后面的這個消息等級會被記錄下來
  • .! 代表除了后面的這個消息等級,其他的都會被記錄下來。
local0.=debug /home/admin/applogs/app-name/debug.log local0.err;local0.warning;local0.info /home/admin/applogs/app-name/info.log local0.err /home/admin/applogs/app-name/error.log

2.3 動作 (action)

action是規則描述的一部分,位于選擇器的后面,規則用于處理消息。總的來說,消息內容被寫到一種日志文件上,但也可以執行其他動作,比如寫到數據庫表中或轉發到其他主機。

寫到本地文件/var/log/lyh.log中

# # Save message to other file # local0.* /var/log/lyh.log

寫到mysql數據庫中

# modules, 要將日志寫到mysql中需要加載ommysql模塊 $ModLoad ommysql # rule, send to mysql #*.* :ommysql:database-server,database-name,database-userid,database-password *.* :ommysql:127.0.0.1,Syslog,syslogwriter,topsecret

2.4 模板(templates)

模板允許你指定日志信息的格式,也可用于生成動態文件名,或在規則中使用。

TEMPLATE_NAME:模板的名字;

PROPERTY:rsyslog本身支持的一些屬性參數。

$template TEMPLATE_NAME,"text %PROPERTY% more text", [OPTION] $template DynamicFile,"/var/log/test_logs/%timegenerated%-test.log" $template DailyPerHostLogs,"/var/log/syslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/messages.log"*.info ?DailyPerHostLogs *.* ?DynamicFile

2.5 輸出(outputs)

輸出頻道為用戶可能想要的輸出類型提供了保護,在規則中使用前要先定義.其定義如下所示,

NAME:指定輸出頻道的名稱;FILE_NAME:指定輸出文件;MAX_SIZE指定日志文件的大小,單位是bytes;?ACTION:指定日志文件到達MAX_SIZE時的操作。

$outchannel NAME, FILE_NAME, MAX_SIZE, ACTION

在規則中使用輸出頻道按照如下的格式:

selectors :omfile:$NAME

?

3. demo

#include <stdio.h> #include <stdlib.h> #include <syslog.h>int main() {openlog("msg-lyh", LOG_PID, LOG_LOCAL0);syslog(LOG_INFO, "this is a test");closelog();return 0; }

在/etc/rsyslog.conf中增加。

# # Save message to other file # local0.* /var/log/lyh.log

注:需要sudo service rsyslog restart 重啟服務,配置才能生效

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的syslog 和 rsyslog的全部內容,希望文章能夠幫你解決所遇到的問題。

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