16.6. Syslog を使用した集中ロギング
Red Hat build of Keycloak は、ログをリモート Syslog サーバーに送信する機能を提供します。これは、RFC 5424 で定義されたプロトコルを利用し ます。
16.6.1. Syslog ハンドラーの有効化
Syslog を使用したロギングを有効にするには、以下のようにアクティベートされたログハンドラーのリストに追加します。
bin/kc.[sh|bat] start --log="console,syslog"
16.6.2. Syslog アプリケーション名の設定
別のアプリケーション名を設定するには、以下のように the -log-syslog-app-name
オプションを追加します。
bin/kc.[sh|bat] start --log="console,syslog" --log-syslog-app-name=kc-p-itadmins
設定されていない場合、アプリケーション名はデフォルトで keycloak
になります。
16.6.3. Syslog エンドポイントの設定
集中ロギングシステムのエンドポイント(host:port)を設定するには、以下のコマンドを入力して、値を特定の値に置き換えます。
bin/kc.[sh|bat] start --log="console,syslog" --log-syslog-endpoint=myhost:12345
Syslog ハンドラーが有効な場合、ホストは localhost
をホスト値として使用します。デフォルトのポートは 514
です。
16.6.4. Syslog ログレベルの設定
Syslog ログハンドラーのログレベルは、以下のように --log-syslog-level
プロパティーで指定できます。
bin/kc.[sh|bat] start --log-syslog-level=warn
詳細は、上記の 「各ハンドラーのログレベル指定」 セクションを参照してください。
16.6.5. Syslog プロトコルの設定
Syslog は、通信のデフォルトプロトコルとして TCP を使用します。TCP の代わりに UDP を使用するには、以下のように --log-syslog-protocol
オプションを追加します。
bin/kc.[sh|bat] start --log="console,syslog" --log-syslog-protocol=udp
使用可能なプロトコルは、tpc
、udp
、および ssl-tcp
です。
16.6.6. Syslog ログ形式の設定
ログに記録される行のログ形式を設定するには、次の手順を実行します。
- 前述の表を使用して、形式テンプレートを作成します。
以下のコマンドを入力します。
bin/kc.[sh|bat] start --log-syslog-format="'<format>'"
;
などの特殊なシェル文字を含むコマンドを呼び出す場合は、CLI を使用して文字をエスケープする必要があります。代わりに、設定ファイルで設定することを検討してください。
例: 完全修飾カテゴリー名を短縮する
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.6.7. Syslog タイプの設定
Syslog は、特定の RFC 仕様に基づいて異なるメッセージ形式を使用します。異なるメッセージ形式で Syslog タイプを変更するには、以下のように the -log-syslog-type
オプションを使用します。
bin/kc.[sh|bat] start --log-syslog-type=rfc3164
以下の値が --log-syslog-type
オプションで使用可能な値になります。
- rfc5424 (default)
- rfc3164
推奨 Syslog タイプは RFC 5424 で、BSD Syslog プロトコルと呼ばれる RFC 3164 を廃止します。
16.6.8. Syslog の最大メッセージ長の設定
送信が許可されるメッセージの最大長(バイト単位)を設定するには、次のように the --log-syslog-max-length
オプションを使用します。
bin/kc.[sh|bat] start --log-syslog-max-length=1536
長さは、1k
や 1K
などの適切な接尾辞を持つメモリーサイズ形式で指定できます。長さには、ヘッダーとメッセージが含まれます。
長さが明示的に設定されていない場合、デフォルト値は以下のように the --log-syslog-type
オプションに基づいて設定されます。
-
2048b
-(RFC 5424 用) -
1024B
-(RFC 3164 の場合)
16.6.9. Syslog 構造化出力の設定
デフォルトでは、Syslog ログハンドラーはプレーンの非構造化データを Syslog サーバーに送信します。代わりに構造化された 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}
JSON 出力を使用する場合、色が無効になり、by --log-syslog-format で設定された形式
設定は適用されません。
非構造化ロギングを使用するには、次のコマンドを入力します。
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.
ご覧のとおり、タイムスタンプが 2 回存在するため、タイムスタンプを the -log-syslog-format
プロパティーを介して対応するように修正できます。