Azure Kubernetes Services での監視
ヒント
このコンテンツは eBook の「Azure 向けクラウド ネイティブ .NET アプリケーションの設計」からの抜粋です。.NET Docs で閲覧できるほか、PDF として無料ダウンロードすると、オンラインで閲覧できます。
Kubernetes の組み込みログはプリミティブなものです。 ただし、Kubernetes からログを取得し、適切に分析できる場所に配置するための優れたオプションがいくつかあります。 AKS クラスターを監視する必要がある場合は、Elastic Stack を Kubernetes に構成することが優れたソリューションです。
Azure Monitor for Containers
Azure Monitor for Containers では、Kubernetes からのログだけでなく、DC/OS、Docker Swarm、Red Hat OpenShift などの他のオーケストレーション エンジンからのログの使用もサポートしています。
図 7-10。 さまざまなコンテナーからのログを使用する
Prometheus は、人気のあるオープン ソースのメトリック監視ソリューションです。 これは、クラウド ネイティブ コンピューティング ファンデーションの一部です。 通常、Prometheus を使用するには、独自のストアで Prometheus サーバーを管理する必要があります。 ただし、Azure Monitor for Containers は Prometheus メトリック エンドポイントと直接統合されるため、個別のサーバーは必要ありません。
ログおよびメトリック情報は、クラスターで実行されているコンテナーからだけでなく、クラスター ホスト自体からも収集されます。 これにより、その 2 つからのログ情報を相互に関連付けることができるため、エラーをより簡単に追跡できます。
ログ コレクターのインストール方法は、Windows と Linux のクラスターでは異なります。 ただし、どちらの場合も、ログ コレクションは Kubernetes の DaemonSet として実装されます。つまり、ログ コレクターは各ノード上でコンテナーとして実行されます。
どのオーケストレーターまたはオペレーティング システムで AzureMonitor デーモンが実行されているかに関係なく、ログ情報は、ユーザーが使い慣れている同じ AzureMonitor ツールに転送されます。 この方法を使用すると、ハイブリッド Kubernetes/Azure Functions 環境などのさまざまなログ ソースが混在する環境でも並列エクスペリエンスが確保されます。
図 7-11。 実行中の多数のコンテナーからのログおよびメトリック情報を示すサンプル ダッシュボード。
Log.Finalize()
ログは、アプリケーションを大規模にデプロイする上で最も見過ごされているが最も重要な部分の 1 つです。 アプリケーションのサイズと複雑さが増すにつれて、そのデバッグは困難になります。 最高品質のログを利用できるようにすることで、デバッグがはるかに簡単になり、"ほぼ不可能" の領域から "快適なエクスペリエンス" の領域に移行します。
.NET