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 ログ形式の設定 リンクのコピーリンクがクリップボードにコピーされました!
ログに記録される行のログ形式を設定するには、次の手順を実行します。
- 前述の表を使用して、形式テンプレートを作成します。
以下のコマンドを入力します。
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.7. 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.8. 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.9. 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
プロパティーを使用して適宜修正できます。