
何らかの理由で、システムログ有効なメッセージを正しく解釈できないようですRFC 5424
。 RFCによって提供された例も機能しません。
$ echo "<165>1 2003-08-24T05:14:15.000003-07:00 192.0.2.1 myproc 8710 - - %% It's time to make the do-nuts." | nc -w1 -Uu /dev/log
ログ行の結果:
Dec 1 16:39:08 host 1 2003-08-24T05:14:15.000003-07:00 192.0.2.1 myproc 8710 - - %% It's time to make the do-nuts.
これは、メッセージがRFC 5424
メッセージとして正しく解釈されず、代わりに文字列全体がメッセージペイロードとして扱われることを示します。
一方、以前のRFC 3164
形式は問題なく受け入れられます。
$ echo "<165>Dec 1 05:14:15 myproc[8710]: %% It's time to make the do-nuts."| nc -w1 -Uu /dev/log
結果は正しいログ行です。
Dec 1 16:44:31 host myproc[8710]: %% It's time to make the do-nuts.
インターネットを横断してもサポートが不足しているという言及は見つかりません。システムログ横。私は何が間違っていましたか?
私はLinux Mint 20を使用しています。システムログバージョンは8.2001.0 (aka 2020.01)
だからか?システムつまり、メッセージの内容が到着する前に何らかの方法で修正します。システムログ?
答え1
同じ問題があり、最終的にこれをrsyslog.confに追加して解決策を見つけました。
input(type="imuxsock" socket="/dev/log" useSpecialParser="off")
useSpecialParserパラメーターは、imuxsock入力モジュールにRFC5424形式を解析できない特殊なパーサーの代わりに、メッセージに汎用パーサーを使用するように指示します。参照。https://rsyslog-doc.readthedocs.io/en/latest/configuration/modules/imuxsock.html
RFC5424 は、udp や tcp などの他の入力モジュールに対して常に正しく解析します。
答え2
状況はここでよく説明されています。syslog メッセージ形式との混同。
簡単に言うと:
- ほとんどの *nix ロガーは RFC 3164 を使用します。
- ただし、rsyslogdではRFC 5424形式を設定できます。
以下は、進行方法を説明する多くの記事の1つです。
デフォルトでは、SyslogはRFC 3164に従って生成されます。各syslogに最大量の情報を構造化形式で提供するには、RFC 5424関連のsyslogロギングを有効にします。
RFC 5424準拠のsyslogには、syslogタイプの識別、syslogメッセージのフィルタリング、syslog生成時間(標準時間帯に基づく年とミリ秒)の識別、およびその他の改善を支援する拡張syslogヘッダーがあります。この
logging enable rfc5424
コマンドを使用して、RFC 5424関連のsyslogを有効にできます。 RFC 5424特定のSyslogを有効にする前に、ロギングバッファをクリアする必要があります。それ以外の場合はエラーが表示されます。
OPによると:
私の質問は、クライアントとrsyslogサービス間の通信プロトコルについてです。
私はlibcのライブラリ関数syslog()を使用しません...私はncを使って/ dev / logに直接データグラムを送信しています
この場合、解決策は標準のRFC 3164形式でデータグラムを送信するようです。
可能性が低い場合:
https://www.rsyslog.com/doc/master/concepts/messageparser.html
メッセージパーサーはrsyslog 5.3.4以降の機能です。
[それらは] syslogメッセージを受信した後に解析するために使用されるrsyslogのコンポーネントです。 rsyslog 5.3.4以前は、メッセージパーサーがrsyslogコア自体に組み込まれており、変更できませんでした(rsyslogコードの変更に加えて)。
5.3.4ではこれを変更しました。メッセージパーサーは現在ロード可能なモジュールです(入力および出力モジュールと同様)。これは、rsyslogコアを変更したりプロジェクトに貢献することなく新しいメッセージパーサーを追加できることを意味します。