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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Rsyslogd 配置[通俗易懂]

發(fā)布時間:2023/12/24 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 Rsyslogd 配置[通俗易懂] 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Rsyslogd 配置

一般的,Rsyslogd的配置文件在/etc/rsyslog.conf。

配置文件格式

有3種格式的配置文件

  • basic 基礎配置格式,兼容syslog.conf格式
  • advanced 以前叫RainerScript格式,在rsyslog v6開始使用
  • obsolete legacy 傳統(tǒng)的格式,僅為確保舊有配置不會出錯

需要用哪種格式

強烈建議不要使用傳統(tǒng)格式,應在基礎配置中使用使用basic格式,在其它情況下使用advanced格式。

basic格式一般由簡單語句組成,看起來像這樣:

mail.info /var/log/mail.log
mail.err @@server.example.net

advanced格式有以下好處:

  • 可以通過高級選項參數(shù)更容易控制rsyslog的操作
  • 塊結構化配置
  • 容易書寫
  • 可以使用include

看起來是這樣的:

mail.err action(type="omfwd" protocol="tcp" queue.type="linkedList")

sysklogd格式

也就是basic格式,以#開頭的行以及空行直接被忽略,注釋還可以用類C語言的/* */。

這種配置格式由logging規(guī)則(rules)組成。每條規(guī)則包括兩部分:selector和action。這兩部分由多個空格或TAB分隔。selector字段指定特定類型(facility)和優(yōu)先級(priority)以關聯(lián)相應的action。

SELECTORS

selector字段由兩部分組成,facility和priority,由”.”分隔。各部分均為大小寫無關,且都可以由對應的10進制數(shù)替代,參見(/usr/include/syslog.h)。

facility由下列類型組成:auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, security (auth), syslog, user, uucp, local0 – local7。其中security 不建議使用,只作內(nèi)部用途。

priority由下列組成,按重要程序升序排列:debug, info, notice, warning, warn (warning), err, error (err), crit, alert, emerg, panic (emerg)

rsyslog將記錄指定priority以及更高的日志到指定action。

同時*表明任意facility和priority,具體含義取決于*出現(xiàn)在”.”的前面或后面。關鍵字none表示指定facility無priority。

在同一行可以用”,”分隔多個facility并指定同一priority。

在同一行中可以用”;”分隔多個selector采用同一action。多個selector將以從左至右的順序處理,每一selector可以覆蓋之前的selector。一般用這種方式來指定pattern中需要排除的一部分。

可以在priority前加上”=”,來指定rsyslog僅記錄該級別的priority,而更高級別的被忽略。

可以在priority前加上”!”,來指定rsyslog忽略該級別及更高級別的priority。

以上的”=“和”!“可以聯(lián)用,來指定僅忽略該級別的priority,注意必須是”!=”這樣的順序。

ACTIONS

action字段是rule中l(wèi)ogfile的抽象描述。logfile不必是個真實文件。其可以是以下類型:

  • Regular File 常規(guī)文件

    文件名必須指定絕對路徑。

    可以在文件名前加上”-“,來避免每條log就同步一次文件。

  • Named Pipes 命名管道

    fifo或命名管道可以在文件名前加上管道符號”|”。fifo必須在rsyslogd啟動前由mkfifo創(chuàng)建。

  • Terminal and Console 終端

    可以用設備名指定tty,如/dev/console。

  • Remote Machine 遠程服務器

    在主機名前加上”@”。

  • List of Users 指定用戶

    一般critical消息會同時轉發(fā)到本機的”root”用戶。同樣可以將需要的日志發(fā)送到指定用戶的終端上。可以用”,”分隔用戶名列表。如果這些用戶已登錄系統(tǒng),將會收到log消息。

  • Everyone logged on 所有已登錄用戶

    緊急消息用來通知當前在線用戶有奇怪的事情發(fā)生。這樣的消息action以”*”指定即可。

處理流程

  • 輸入模塊將收到的消息提交到ruleset
    • 若未綁定ruleset,則使用默認ruleset
  • 默認會有一個ruleset(RSYSLOG_DefaultRuleset)
  • 額外的ruleset可以用戶自定義
  • 每個ruleset包括0條或更多rule
    • 允許在ruleset內(nèi)部為0條rule則顯然沒有任何作用
  • 每條rule由一個filter和一個action list組成
  • filter提供yes/no決策和流控
  • 若filter命中,則對應的action list被執(zhí)行,否則,不發(fā)生任何事
  • 在指定ruleset內(nèi)的rule會按順序依次檢查。無關聯(lián)的ruleset中的rule將不會被檢查。
  • 所有rule都將被檢查,不管是否已有filter命中(因此不會在首次命中后停止檢查)。如果希望停止,則需要明確指定”discard”這個action(由”~”或stop命令表示)。如果丟棄action被執(zhí)行,則消息不再繼續(xù)進行下一rule的檢查。
  • 每個action list包含一條或多條action
  • 在action list內(nèi)部,不能包括更多的filter
  • 要在list里包含超過一條action,后續(xù)action每條占一行,原來filter的位置要改為”&”,并且此行要緊跟上一action。
  • action由action調(diào)用本身(比如: :omusrmsg:)以及所有action定義配置語句($Actin…指示)組成
  • 所有$開頭的語句均為legacy配置,具體不深入探究

FILTER

Property-based Filters

除了之前描述的傳統(tǒng)selector外rsyslogd還支持基于屬性的filter: Property-based Filters。

可以使用任意屬性,如HOSTNAME, syslogtag以及msg這些。所有支持的屬性列表詳見rsyslog properties documentation

這種filter有如下形式:

:property, [!]compare-operation, "value"

以”:“開頭,緊跟屬性名,再跟個”,”,比較操作名,再一個”,”,然后是要比較的值。值必須加雙引號””。 在這些”,“之間可以有空格和TAB。屬性名/比較操作,都是大小寫相關,所以”msg”可以用,但”MSG”則是非法屬性名。比較操作前的”!”表達結果相反。

比較操作列表如下:

  • contains 包含
  • isequal 相等
  • startswith 以此開頭
  • regex BRE正則表達式
  • ereregex ERE正則表達式

值部分必須是帶””的字符串,可以有兩種轉義符:

  • \” – 引號本身
  • \\ – 反斜杠

Expression-Based Filters

Filter還可以基于任意復雜的表達式,可以包含布爾值,數(shù)學和字符串操作。表達式可以進化為完整的配置腳本語言。不幸的是,這些語法仍在完善中,可能會有后續(xù)的修改。因此,如果你現(xiàn)在就用,今后很有可能需要修改配置。

基于表達式的filter由新一行的”if”開頭。看起來像這樣:

if expr then action-part-of-selector-line

“if” 和 “then” 是固定關鍵字必須存在。 “expr”是表達式,詳見:expression documentation。”action-part-of-selector-line”則是通常的action(如 /var/log/logfile)。

Tempaltes 模板

模板是rsyslog的關鍵特性。此特性允許用戶自定義任意格式。同時也可用于動態(tài)文件名的生成。

模板用template()語句指定,也可由傳統(tǒng)語法$template語句指定。

template() 語句

template()語句是static靜態(tài)的語句,意思是所有模板在rsyslog讀入config文件時被定義,無法被if語句影響。

基本語法如下:

template(parameters)

此外,列表式模板支持擴展語法:

template(parameters) { list-descriptions }

每個模板有一個參數(shù)name,其指定了模板名稱,以及參數(shù)type,其指定了模板類型。name參數(shù)必須唯一,否則結果無法預測。type參數(shù)指定了模板的不同類型。不同的類型可以用不同的方式定義模板內(nèi)容。模板類型并不會影響(output)plugin如果處理該內(nèi)容。因此,按最適合你需求的方式(從編寫配置的視角而言)來使用type類型。以下是可用的類型:

  • list
  • subtree
  • string
  • plugin

以下分別描述這些類型。

List

在這種情況下,模板由一組常量(constant)語句和可變語句生成。這組列表在花括號”{}”跟在template定義后。此類型主要用于結構化的輸出,如ommongodb。當然也可以完美的工作于基于文本的輸出中。一般建議在需要復雜屬性替換時使用此類型。這種情況下,基于列表的模板語法會比簡單的基于字符串方式更清晰。

列表模板包括模板頭(type=“l(fā)ist”),跟著是用花括號包圍的表明從屬此模板的constant和property語句。從名字可以看出,constant語句描述了固定常量文本字義,而property描述了屬性值的訪問。后面會講到property有很多選項。大多數(shù)選項用于從屬性中抽取一部分內(nèi)容或改變獲取的內(nèi)容(例如改變大小寫等)。

來個實際的例子:

template(name="tpl1" type="list") {
     constant(value="Syslog MSG is: '")
     property(name="msg")
     constant(value="', ")
     property(name="timereported" dateFormat="rfc3339" caseConversion="lower")
     constant(value="\n")
     }

這個例子或許主要用于常見的基于文件的輸出。

Constant 語句

這是用于指定常量文本的方式。文本按字面使用。一般面向基于文本的輸出。例如,復雜模板構建時,經(jīng)常會在末尾添加換行,這時即可以用constant語句。舉個例子:

template(name="outfmt" type="list") {
    property(name="$!usr!msgnum")
    constant(value="\n")
}

下列是所有在常量文本內(nèi)可識別的轉義字符序列:

  • \\ – 單個反斜杠
  • \n – 換行
  • \ooo – (3個八進制數(shù)字) – 表示有此值的字符(如:\101表示’A’)。注意,必須是3個數(shù)字。這里雖然支持八進制記號,但建議使用下列更易理解的十六進制方式。
  • \xhh – (這里h是十六進制數(shù)字) – 表示有此值的字符(如:\x41表示’A’)。注:兩個十六進制數(shù)必須都給出(一些語言里可能1個或2個數(shù)字都支持)。

注:若在反斜杠后跟了未支持的字符,將認為是錯誤。行為不可預料。

在一些基于文本和基于結構使用同一個模板的情況下,沒有”outname”參數(shù)的常量文本在創(chuàng)建name/value樹結構化輸出時會被忽略。因此,若希望向類似mongodb提供常量文本時,必須包括outname,例如:

template(name="outfmt" type="list") {
    property(name="$!usr!msgnum")
    constant(value="\n" outname="IWantThisInMyDB")
}

要生成常量的json字段,format字段要指定為”jsonf”,例如:

template(name="outfmt" type="list" option.jsonf="on") {
          property(outname="message" name="msg" format="jsonf")
          constant(outname="@version" value="1" format="jsonf")
}

在這個例子中,constant語句會生成”@version”:“1”。注意,要達到這個效果,value和format參數(shù)都必須給出。

constant語句支持下列參數(shù):

  • value – 將使用的常量值
  • outname – 輸出字段名(結構化輸出時)
  • format – 可以為空或是jsonf

Property 語句

此語句用于包含property屬性文本。可以訪問所有可用屬性。屬性列表詳見rsyslog properties documentation

可以用選項指定選取部分或改變屬性。支持下列參數(shù):

  • name – 要訪問的屬性名
  • outname – 輸出字段名(結構化輸出時)
  • dateformat – Date格式。這里是所有property的選項

要生成自定義格式,可以用多個property選項。例如要生成YYYY-MM-DD:

property(name="timereported" dateformat="date-year")
constant(value="-")
property(name="timereported" dateformat="date-month")
constant(value="-")
property(name="timereported" dateformat="date-day")

其余參數(shù)參見官網(wǎng)

Subtree 子樹

這種情況下,模板基于完整的(CEE)子樹。這種模板最常用于輸出模塊知道如何處理結構樹,如ommongodb。例如template(name=”tpl1” type=”subtree” subtree=” ! ” ) 包 括 了 所 有 C E E 數(shù) 據(jù) , 而 t e m p l a t e ( n a m e = ” t p l 2 ” t y p e = ” s u b t r e e ” s u b t r e e = ” !”)包括了所有CEE數(shù)據(jù),而template(name=”tpl2” type=”subtree” subtree=” !”)包括了所有CEE數(shù)據(jù),而template(name=”tpl2”type=”subtree”subtree=”!usr!tpl2”)僅包括從$!usr!tpl2開始的子樹。當使用此類型模板時,所有數(shù)據(jù)必須用set和unset腳本語句預先構造好。要了解詳情,參見官網(wǎng),這里只舉個例子:

set $!usr!tpl2!msg = $msg;
set $!usr!tpl2!dataflow = field($msg, 58, 2);
template(name="tpl2" type="subtree" subtree="$!usr!tpl2")

String 字符串

最接近于傳統(tǒng)模板定義的語句。其有必須的參數(shù)string,其中包含了將被應用于模板的字符串。模板字符串混合了常量文本和替換變量(見Property替換)。這些變量從消息或其它動態(tài)內(nèi)容中獲得。基于字符串的模板可以很容易指定文本內(nèi)容,特別是沒有復雜屬性需要處理的情況下。

以下是示例:

template(name="tpl3" type="string"
         string="%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
        )

在’%’之間的文本由rsyslog的property替換來處理。簡單來說,其包含了屬性及其格式化選項。其與list模板中的property對象類似,僅是兩種不同的表達方式而已。

在’%’之外的所有內(nèi)容均為常量文本。

Plugin 插件

這種模板由插件(所以一般叫作”strgen”或”字符串生成器”)。由于是編程實現(xiàn),所以格式是固定的。由于是不可變的,因此性能上會好很多,并且一般都是因此而使用(并不是說常規(guī)模板性能就很差-而是在特定的要求超高的情況下,很可能1比特的性能差距也很關鍵)。具體詳情需要查看具體插件的文檔。必須指定plugin參數(shù),且必須包含插件名以表明自身。注意該插件必須在使用之前加載。同樣舉個例子:

template(name="tpl4" type="plugin" plugin="mystrgen")

創(chuàng)建動態(tài)文件名示例

模板可用于生成動態(tài)文件名。例如,當希望將syslog按不同主機名分別寫到不同文件時(每臺主機一個文件),你可以如下定義模板:

template (name="DynFile" type="string" string="/var/log/system-%HOSTNAME%.log")

保留模板名

所有”RSYSLOG_”開頭的模板名都被保留給rsyslog使用。請不要在配置中使用它們,否則將有可能在未來導致沖突。

總結

以上是生活随笔為你收集整理的Rsyslogd 配置[通俗易懂]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av网址有哪些| 丰满少妇在线观看网站 | 精品91在线| 国产精品1024 | 国产精品一区二区在线免费观看 | 久久精品视频免费播放 | 亚洲网站av| 国产成人免费视频网站 | 激情婷婷色 | 粉嫩av一区| 免费看的黄色 | 丝袜制服影音先锋 | 午夜影院91 | 天堂在线资源8 | 色五婷婷| 欧美性猛交xxxⅹ富婆 | 后入内射无码人妻一区 | 日本r级电影在线观看 | 国产精品美女久久久久 | 欧美黄色一区 | 久久伊人影视 | 日本三区视频 | 久久久久成人精品无码中文字幕 | 国产私拍 | 欧美黄色一级生活片 | 日本一区二区欧美 | 青草av在线 | 亚洲一区二区三区四区 | 精品人妻伦一二三区久久 | 殴美性生活 | 波多野结衣中文字幕一区二区三区 | 蜜色av | 少妇2做爰bd在线意大利堕落 | 91久久久久久久久 | 亚洲区自拍偷拍 | 国产小视频在线观看免费 | 日本国产精品 | 国产激情影院 | 麻豆免费观看网站 | 美女黄色小视频 | 欧美成人精品一区二区三区 | 亚洲色图激情小说 | 天天色官网 | jizz一区| 在线看片日韩 | 全部孕妇毛片丰满孕妇孕交 | 激情91视频| 日韩视频在线观看一区二区 | 爱爱中文字幕 | 中文字幕在线精品 | av大全网站 | 国产精品无码一区二区三区在线看 | 亚洲天堂导航 | 97精品| 成人免费性生活视频 | 国产精品一区2区 | 干干操操 | 在线播放日本 | 亚州激情 | 国产伊人网 | 亚洲黄色片| 四虎色网 | www.九色| 三级欧美日韩 | 香蕉视频最新网址 | 美女啪啪网 | 在线观看国产一级片 | 日韩一级一区 | heyzo国产| 污黄视频网站 | 中国黄色录像一级片 | 免费特级黄色片 | 亚洲高清在线播放 | www.日本在线视频 | 天天碰天天碰 | 精品三级电影 | 91色九色 | 视频丨9l丨白浆 | 亚洲第一二三四区 | 性欧美8khd高清极品 | 亚洲视频一区二区三区 | 丝袜av在线播放 | av观看网站| 欧美午夜精品一区二区蜜桃 | www.久久av.com | 好色成人网 | 91大尺度 | 综合网色 | 成人在线播放av | 欧美精品18 | 97色综合| 中文字幕久久精品 | 色爱av综合网 | 免费69视频| 丝袜老师扒开让我了一夜漫画 | 国产精品成熟老女人 | 黑丝国产一区 | 亚洲瑟瑟 | 在线精品观看 |