私のサーバーsyslog
に入ってくるメッセージが多すぎます。さまざまなカテゴリ(接続、ネットワーク、警告...)のメッセージを送信しますrsyslog
。stormshield
カテゴリごとに異なる機能を設定できないため、正規表現を使用して受信メッセージを複数のファイルに分割する必要があります。
すべてのメッセージは互いに異なっており、メッセージにはより多くのフィールドまたは少ないフィールドがありますが、logtype
カテゴリを識別する1つのフィールドがあります。
Syslog message
Msg = bullshitcontentbullshitcontent logtype:"connection" bullshitcontentbullshitcontent
質問は次のとおりです。
logtype
POSIX正規表現を使用してフィールドから文字列を収集しrsyslog
、その値に基づいて文字列を別のファイルに分割するにはどうすればよいですかlogtype
?
答え1
少し遅れていることがわかりますが、可能です。これらのログをどのように取得するかはわかりませんが(おそらく高速Web検索でわかります)、同様の設定があります。あなたはそれを使用することができますルールセット、(興味深いことに)基本ルールとして使用されない新しいルールセットを開発します。組み込みのスクリプト言語でレイナスクリプトre_match
、true、またはfalseを返す関数があります。
ruleset(name="stormshield") {
if re_match($msg, "your POSIX ERE regex") then {
action(type="omfile" file="/your/file/name/here")
stop
} else if re_match(...) then { ... }
else { ... }
}
$msg
現在のログへの参照です。
omfile
出力モジュールの場合、データベースなどが必要な場合は他のオプションがあります。
別の仕事を終えたらif..else if...else
そこに行きます。stop
完了したら、メッセージを削除する必要があります。それ以外の場合は、他のルールにも適用されます。作業後にチルダを追加することもできますが、~
確認する必要があるようです。
ログがルールセットに渡される方法(文書化されているbind
ように)は、ソースによって異なります。ネットワークまたはファイルソースの場合、この機能がありinput
、入力モジュールたとえば、および"imtcp"
には"imfile"
ルールセットパラメータがあります。一部のモジュールでは、追加のパッケージを入手する必要があります。
input(type="imfile" File="/input/file/here.log" Tag="..." Ruleset="ruleset name")
input(type="imtcp" Port="1234" Name="name" Ruleset="ruleset name")
最後に、特定の施設を送信する必要がある場合は、次のものを使用できます。call
:(local0.* call rulesetName
引用符がないようです)たとえば(必要に応じて録音する内容を選択してください)
そんなことをたくさん経験したと思います。私はconfファイルを見たので、間違いについてお詫び申し上げます。