16.5. Syslog を使用した集中ロギング
Red Hat build of Keycloak は、ログをリモート Syslog サーバーに送信する機能を提供します。これは、RFC 5424 で定義されたプロトコルを利用します。
16.5.1. Syslog ハンドラーを有効にする リンクのコピーリンクがクリップボードにコピーされました!
Syslog を使用してロギングを有効にするには、次のように、アクティブ化されたログハンドラーのリストに Syslog を追加します。
bin/kc.[sh|bat] start --log="console,syslog"
bin/kc.[sh|bat] start --log="console,syslog"
16.5.2. Syslog アプリケーション名の設定 リンクのコピーリンクがクリップボードにコピーされました!
別のアプリケーション名を設定するには、次のように --log-syslog-app-name オプションを追加します。
bin/kc.[sh|bat] start --log="console,syslog" --log-syslog-app-name=kc-p-itadmins
bin/kc.[sh|bat] start --log="console,syslog" --log-syslog-app-name=kc-p-itadmins
設定されていない場合、アプリケーション名はデフォルトで keycloak になります。
16.5.3. Syslog エンドポイントの設定 リンクのコピーリンクがクリップボードにコピーされました!
集中型ロギングシステムのエンドポイント (host:port) を設定するには、次のコマンドを入力し、値を特定の値に置き換えます。
bin/kc.[sh|bat] start --log="console,syslog" --log-syslog-endpoint=myhost:12345
bin/kc.[sh|bat] start --log="console,syslog" --log-syslog-endpoint=myhost:12345
Syslog ハンドラーが有効になっている場合、ホストはホスト値として localhost を使用します。デフォルトのポートは 514 です。
16.5.4. Syslog ログレベルの設定 リンクのコピーリンクがクリップボードにコピーされました!
Syslog ログハンドラーのログレベルは、次のように --log-syslog-level プロパティーで指定できます。
bin/kc.[sh|bat] start --log-syslog-level=warn
bin/kc.[sh|bat] start --log-syslog-level=warn
詳細は、上記の 「各ハンドラーのログレベルを指定する」 セクションを参照してください。
16.5.5. Syslog プロトコルの設定 リンクのコピーリンクがクリップボードにコピーされました!
Syslog は通信のデフォルトプロトコルとして TCP を使用します。TCP の代わりに UDP を使用するには、次のように --log-syslog-protocol オプションを追加します。
bin/kc.[sh|bat] start --log="console,syslog" --log-syslog-protocol=udp
bin/kc.[sh|bat] start --log="console,syslog" --log-syslog-protocol=udp
使用可能なプロトコルは、tpc、udp、および ssl-tcp です。
16.5.6. Syslog カウント(framing)の設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、TCP または SSL-TCP 経由で送信される Syslog メッセージには、特定の Syslog レシーバーが必要とするメッセージサイズの接頭辞が付けられます。この動作は、--log-syslog-counting-framing オプションによって制御されます。
この機能を明示的に有効または無効にするには、次のコマンドを使用します。
bin/kc.[sh|bat] start --log-syslog-counting-framing=true
bin/kc.[sh|bat] start --log-syslog-counting-framing=true
以下のいずれかの値を設定できます。
-
プロトコル依存(デフォルト)-log-syslog-protocolがtcpまたはssl-tcpの場合にのみカウントを有効にします。 -
True - メッセージの前にサイズの接頭辞を付けることにより、常に framing を有効にします。
-
false- フレームのカウントを使用しません。
プロトコルに 依存すると、プロトコル で必要な場合にのみ接頭辞を有効にすることで、ほとんどの Syslog サーバーとの互換性が保証されることに注意してください。
16.5.7. Syslog ログ形式の設定 リンクのコピーリンクがクリップボードにコピーされました!
ログに記録される行のログ形式を設定するには、次の手順を実行します。
- 前述の表を使用して、形式テンプレートを作成します。
以下のコマンドを入力します。
bin/kc.[sh|bat] start --log-syslog-format="'<format>'"
bin/kc.[sh|bat] start --log-syslog-format="'<format>'"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
; などの特殊なシェル文字を含むコマンドを呼び出す場合は、CLI を使用して文字をエスケープする必要があります。代わりに、設定ファイルで設定することを検討してください。
例: 完全修飾カテゴリー名を短縮する
bin/kc.[sh|bat] start --log-syslog-format="'%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n'"
bin/kc.[sh|bat] start --log-syslog-format="'%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n'"
この例では、テンプレートでデフォルトの [%c] の代わりに [%c{3.}] を設定することで、カテゴリー名を 3 文字に短縮します。
16.5.8. Syslog タイプの設定 リンクのコピーリンクがクリップボードにコピーされました!
Syslog は、特定の RFC 仕様に基づいてさまざまなメッセージ形式を使用します。異なるメッセージ形式で Syslog タイプを変更するには、次のように --log-syslog-type オプションを使用します。
bin/kc.[sh|bat] start --log-syslog-type=rfc3164
bin/kc.[sh|bat] start --log-syslog-type=rfc3164
--log-syslog-type オプションに指定できる値は次のとおりです。
-
rfc5424(デフォルト) -
rfc3164
推奨される Syslog タイプは RFC 5424 で、これは BSD Syslog プロトコルとして知られる RFC 3164 に代わるものです。
16.5.9. Syslog の最大メッセージ長の設定 リンクのコピーリンクがクリップボードにコピーされました!
送信可能なメッセージの最大長 (バイト単位) を設定するには、次のように --log-syslog-max-length オプションを使用します。
bin/kc.[sh|bat] start --log-syslog-max-length=1536
bin/kc.[sh|bat] start --log-syslog-max-length=1536
長さは、1k や 1K などの適切な接尾辞を使用してメモリーサイズ形式で指定できます。長さには、ヘッダーとメッセージが含まれます。
長さが明示的に設定されていない場合、デフォルト値は次のように --log-syslog-type オプションに基づいて設定されます。
-
2048B- RFC 5424 用 -
1024B- RFC 3164 用
16.5.10. Syslog 構造化出力の設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Syslog ログハンドラーはプレーンな非構造化データを Syslog サーバーに送信します。代わりに構造化された JSON ログ出力を使用するには、次のコマンドを入力します。
bin/kc.[sh|bat] start --log-syslog-output=json
bin/kc.[sh|bat] start --log-syslog-output=json
ログメッセージの例
2024-04-05T12:32:20.616+02:00 host keycloak 2788276 io.quarkus - {"timestamp":"2024-04-05T12:32:20.616208533+02:00","sequence":9948,"loggerClassName":"org.jboss.logging.Logger","loggerName":"io.quarkus","level":"INFO","message":"Profile prod activated. ","threadName":"main","threadId":1,"mdc":{},"ndc":"","hostName":"host","processName":"QuarkusEntryPoint","processId":2788276}
2024-04-05T12:32:20.616+02:00 host keycloak 2788276 io.quarkus - {"timestamp":"2024-04-05T12:32:20.616208533+02:00","sequence":9948,"loggerClassName":"org.jboss.logging.Logger","loggerName":"io.quarkus","level":"INFO","message":"Profile prod activated. ","threadName":"main","threadId":1,"mdc":{},"ndc":"","hostName":"host","processName":"QuarkusEntryPoint","processId":2788276}
JSON 出力を使用する場合、色は無効になり、--log-syslog-format で設定された形式設定は適用されません。
非構造化ロギングを使用するには、次のコマンドを入力します。
bin/kc.[sh|bat] start --log-syslog-output=default
bin/kc.[sh|bat] start --log-syslog-output=default
ログメッセージの例
2024-04-05T12:31:38.473+02:00 host keycloak 2787568 io.quarkus - 2024-04-05 12:31:38,473 INFO [io.quarkus] (main) Profile prod activated.
2024-04-05T12:31:38.473+02:00 host keycloak 2787568 io.quarkus - 2024-04-05 12:31:38,473 INFO [io.quarkus] (main) Profile prod activated.
ご覧のとおり、タイムスタンプは 2 回存在するため、--log-syslog-format プロパティーを使用して適宜修正できます。