ヒント
このコンテンツは、Azure 用のクラウド ネイティブ .NET アプリケーションの設計に関する電子ブックからの抜粋であり、.NET Docs またはオフラインで読み取ることができる無料のダウンロード可能な PDF として入手できます。
Kubernetes の組み込みログはプリミティブです。 ただし、Kubernetes からログを取得し、適切に分析できる場所にログを取得するための優れたオプションがいくつかあります。 AKS クラスターを監視する必要がある場合は、Kubernetes 用の Elastic Stack を構成するのが最適なソリューションです。
Azure コンテナ用モニター
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 として実装されます。つまり、ログ コレクターは各ノードでコンテナーとして実行されます。
Azure Monitor デーモンを実行しているオーケストレーターまたはオペレーティング システムに関係なく、ログ情報は、ユーザーがよく知っているのと同じ Azure Monitor ツールに転送されます。 この方法により、ハイブリッド Kubernetes/Azure Functions 環境など、さまざまなログ ソースが混在する環境での並列エクスペリエンスが保証されます。
図 7-11 実行中の多数のコンテナーからのログとメトリック情報を示すサンプル ダッシュボード。
Log.Finalize()
ログ記録は、あらゆるアプリケーションを大規模にデプロイする際に最も見落とされ、最も重要な部分の 1 つです。 アプリケーションのサイズと複雑さが増すにつれて、アプリケーションのデバッグの難しさも増します。 最高品質のログを使用すると、デバッグがはるかに簡単になり、"ほぼ不可能" から "快適なエクスペリエンス" に移行します。
.NET