4.9. systemd-journald および Fluentd の設定
Fluentd のジャーナルからの読み取りや、ジャーナルのデフォルト設定値は非常に低く、ジャーナルがシステムサービスからのロギング速度に付いていくことができないためにジャーナルエントリーが失われる可能性があります。
ジャーナルでエントリーが失われるのを防ぐことができるように RateLimitIntervalSec=30s
および RateLimitBurst=10000
(必要な場合はさらに高い値) を設定することが推奨されます。
4.9.1. OpenShift Logging 用の systemd-journald の設定
プロジェクトのスケールアップ時に、デフォルトのロギング環境にはいくらかの調整が必要になる場合があります。
たとえば、ログが見つからない場合は、journald の速度制限を引き上げる必要がある場合があります。一定期間保持するメッセージ数を調整して、OpenShift Logging がログをドロップせずに過剰なリソースを使用しないようにすることができます。
また、ログを圧縮する必要があるかどうか、ログを保持する期間、ログを保存する方法、ログを保存するかどうかやその他の設定を決定することもできます。
手順
必要な設定で
/etc/systemd/journald.conf
ファイルが含まれる Butane 設定ファイル40-worker-custom -journald.bu
を作成します。注記Butane の詳細は、Butane を使用したマシン設定の作成を参照してください。
variant: openshift version: 4.8.0 metadata: name: 40-worker-custom-journald labels: machineconfiguration.openshift.io/role: "worker" storage: files: - path: /etc/systemd/journald.conf mode: 0644 1 overwrite: true contents: inline: | Compress=yes 2 ForwardToConsole=no 3 ForwardToSyslog=no MaxRetentionSec=1month 4 RateLimitBurst=10000 5 RateLimitIntervalSec=30s Storage=persistent 6 SyncIntervalSec=1s 7 SystemMaxUse=8G 8 SystemKeepFree=20% 9 SystemMaxFileSize=10M 10
- 1
journal.conf
ファイルのパーミッションを設定します。0644
パーミッションを設定することが推奨されます。- 2
- ログがファイルシステムに書き込まれる前にそれらのログを圧縮するかどうかを指定します。
yes
を指定してメッセージを圧縮するか、またはno
を指定して圧縮しないようにします。デフォルトはyes
です。 - 3
- ログメッセージを転送するかどうかを設定します。それぞれについて、デフォルトで
no
に設定されます。以下を指定します。-
ForwardToConsole
: ログをシステムコンソールに転送します。 -
ForwardToKsmg
: ログをカーネルログバッファーに転送します。 -
ForwardToSyslog
: syslog デーモンに転送します。 -
ForwardToWall
: メッセージを wall メッセージとしてすべてのログインしているユーザーに転送します。
-
- 4
- ジャーナルエントリーを保存する最大時間を指定します。数字を入力して秒数を指定します。または、year、month、week、day、h または m などの単位を含めます。無効にするには
0
を入力します。デフォルトは1month
です。 - 5
- レート制限を設定します。
RateLimitIntervalSec
で定義される期間に、RateLimitBurst
で指定される以上のログが受信される場合、この期間内の追加のメッセージはすべてこの期間が終了するまでにドロップされます。デフォルト値であるRateLimitIntervalSec=30s
およびRateLimitBurst=10000
を設定することが推奨されます。 - 6
- ログの保存方法を指定します。デフォルトは
persistent
です。-
volatile
: ログを/var/log/journal/
のメモリーに保存します。 -
persistent
: ログを/var/log/journal/
のディスクに保存します。systemd は存在しない場合はディレクトリーを作成します。 -
auto
: ディレクトリーが存在する場合に、ログを/var/log/journal/
に保存します。存在しない場合は、systemd はログを/run/systemd/journal
に一時的に保存します。 -
none
: ログを保存しません。systemd はすべてのログをドロップします。
-
- 7
- ERR、WARNING、NOTICE、INFO、および DEBUG ログについてジャーナルファイルをディスクに同期させるまでのタイムアウトを指定します。 systemd は、CRIT、ALERT、または EMERG ログの受信後すぐに同期を開始します。デフォルトは
1s
です。 - 8
- ジャーナルが使用できる最大サイズを指定します。デフォルトは
8G
です。 - 9
- systemd が残す必要のあるディスク領域のサイズを指定します。デフォルトは
20%
です。 - 10
/var/log/journal
に永続的に保存される個別のジャーナルファイルの最大サイズを指定します。デフォルトは10M
です。注記レート制限を削除する場合、システムロギングデーモンの CPU 使用率が高くなることがあります。 以前はスロットリングされていた可能性のあるメッセージが処理されるためです。
systemd 設定の詳細については、https://www.freedesktop.org/software/systemd/man/journald.conf.html を参照してください。このページに一覧表示されるデフォルト設定は OpenShift Container Platform には適用されない可能性があります。
Butane を使用して、ノードに配信される設定を含む
MachineConfig
オブジェクトファイル (40-worker-custom-journald.yaml
) を生成します。$ butane 40-worker-custom-journald.bu -o 40-worker-custom-journald.yaml
マシン設定を適用します。以下に例を示します。
$ oc apply -f 40-worker-custom-journald.yaml
コントローラーは新規の
MachineConfig
オブジェクトを検出し、新規のrendered-worker-<hash>
バージョンを生成します。新規のレンダリングされた設定の各ノードへのロールアウトのステータスをモニターします。
$ oc describe machineconfigpool/worker
出力例
Name: worker Namespace: Labels: machineconfiguration.openshift.io/mco-built-in= Annotations: <none> API Version: machineconfiguration.openshift.io/v1 Kind: MachineConfigPool ... Conditions: Message: Reason: All nodes are updating to rendered-worker-913514517bcea7c93bd446f4830bc64e