現在、富士通がKubernetesコミュニティに提案中のロギング強化機能(Request ID)の概要と活用方法を紹介します。この機能は、運用者がトラブル時の原因特定を容易化することを狙います。Kubernetesは各コンポーネントがkube-apiserverを中心にそれぞれ独立して動作します。各コンポーネントのログが独立して出力されるため、コンポーネントを跨ったログの追跡作業は困難です。ログにリソース名が含まれている場合や、タイムスタンプ情報が分析の参考になりますが、それでは不十分です。特に、リソース名のないログや複数のAPIリクエストが同時刻に発行されている場合、ログの精査・追跡作業は非常に困難なものとなります。
このような現状から、運用者がエラーログを検知した際、元となったAPIリクエストや、どのような経緯を辿ってそのエラーが出力されたのか、すぐに特定できない場合があります。結果として、エラーの原因特定の長期化につながります。今回紹介するRequest ID機能を活用することで、特定のオペレーション(kubectl applyなど)の結果として動作する各コンポーネントのログを一意なRequest IDをキーとして関連付けることができるようになります。例えば、予期せぬオペレーションが実行されていることを検知した場合、そのオペレーションによるシステムへの影響は、Request IDをキーにログをクエリするだけで、各コンポーネントの内部の動作ログまで含めて簡単に抽出できます。また、エラーログを検知した場合は、ログに付与されたRequest ID情報から、元となったオペレーションと途中の経緯を簡単に辿ることが可能になります。