コンポーネントログ
Istioコンポーネントは柔軟なログフレームワークを使用して構築されており、これらのコンポーネントの運用と診断の容易化に役立つ多くの機能と制御を提供します。これらのログ機能は、コンポーネントの起動時にコマンドラインオプションを渡すことで制御します。
ログスコープ
コンポーネントによって出力されるログメッセージは、スコープによって分類されます。スコープとは、全体として制御できる関連するログメッセージのセットを表します。コンポーネントが提供する機能に応じて、異なるコンポーネントには異なるスコープがあります。すべてのコンポーネントには、カテゴリ化されていないログメッセージに使用されるdefault
スコープがあります。
例として、執筆時点では、istioctl
には25個のスコープがあり、コマンド内の異なる機能領域を表しています。
ads
、adsc
、all
、analysis
、authn
、authorization
、ca
、cache
、cli
、default
、installer
、klog
、mcp
、model
、patch
、processing
、resource
、source
、spiffe
、tpath
、translator
、util
、validation
、validationController
、wle
Pilot-Agent、Pilot-Discovery、Istio Operatorはそれぞれ独自のスコープを持ちます。これらはリファレンスドキュメントで確認できます。
各スコープには、以下のいずれかの出力レベルが設定されています。
- none
- error
- warn
- info
- debug
none
はスコープの出力なし、debug
は最大限の出力となります。すべてのスコープのデフォルトレベルはinfo
で、Istioの通常運用に必要なログ情報を提供することを目的としています。
出力レベルを制御するには、--log_output_level
コマンドラインオプションを使用します。例:
$ istioctl analyze --log_output_level klog:none,cli:info
コマンドラインからの出力レベルの制御に加えて、稼働中のコンポーネントの出力レベルは、そのControlZインターフェースを使用して制御することもできます。
出力の制御
ログメッセージは通常、コンポーネントの標準出力ストリームに送信されます。--log_target
オプションを使用すると、出力を複数の異なる場所にリダイレクトできます。このオプションには、ファイルシステムパスのカンマ区切りリストに加え、標準出力と標準エラーストリームを表す特殊値stdout
とstderr
を指定できます。
ログメッセージは通常、人間にとって分かりやすい形式で出力されます。--log_as_json
オプションを使用すると、出力をJSON形式で強制的に出力できます。これは、ツールによる処理を容易にすることができます。
ログローテーション
Istioコントロールプレーンコンポーネントは、ログローテーションを自動的に管理できます。これにより、大規模なログをより小さなログファイルに分割することが容易になります。--log_rotate
オプションを使用すると、ローテーションに使用する基本ファイル名を指定できます。個々のログファイルには、派生名が使用されます。
--log_rotate_max_age
オプションを使用すると、ファイルローテーションが行われるまでの最大日数を指定できます。また、--log_rotate_max_size
オプションを使用すると、ファイルローテーションが行われるまでの最大サイズ(メガバイト単位)を指定できます。最後に、--log_rotate_max_backups
オプションを使用すると、保持するローテーションされたファイルの最大数を制御できます。それよりも古いファイルは自動的に削除されます。
コンポーネントデバッグ
--log_caller
オプションと--log_stacktrace_level
オプションを使用すると、ログ情報にプログラマレベルの情報を含めるかどうかを制御できます。これは、コンポーネントのバグを追跡しようとする際に役立ちますが、日常的な運用では通常使用されません。