GKE On-Prem には、クラウドベースのマネージド サービス、オープンソース ツール、サードパーティの商用ソリューションとの検証済みの互換性など、クラスタのロギングとモニタリングのオプションが複数あります。このページでは、こうしたオプションについて説明し、環境に適したソリューションを選択するための基本的なガイダンスを提供します。
GKE On-Prem のオプション
GKE On-Prem クラスタには、いくつかのロギング オプションとモニタリング オプションがあります。
- Cloud Logging と Cloud Monitoring。GKE On-Prem でデプロイされたクラスタ内エージェントによって有効化されます。
- Prometheus と Grafana。デフォルトでは無効になっています。
- サードパーティ ソリューションによる検証済みの構成。
Cloud Logging と Cloud Monitoring
Google Cloud のオペレーション スイートは、Google Cloud の組み込みオブザーバビリティ ソリューションです。フルマネージドのロギング ソリューション、指標の収集、モニタリング、ダッシュボード、アラートが提供されます。Cloud Monitoring は、クラウドベースの GKE クラスタと同様の方法で、GKE On-Prem クラスタをモニタリングします。
クラスタ内エージェントは、モニタリングとロギングのスコープと、収集した指標のレベルを構成できます。
- ロギングとモニタリングのスコープは、システム コンポーネントのみ(デフォルト)、またはシステム コンポーネントとアプリケーションに設定できます。
- 収集された指標のレベルは、最適化された指標のセットまたは完全な指標に対して構成できます。
詳細については、このページの Anthos clusters on VMware の Stackdriver エージェントの構成をご覧ください。
Logging と Monitoring は、簡単に構成でき、強力な単一のクラウドベースのオブザーバビリティ ソリューションを求めているお客様に理想的なソリューションです。GKE On-Prem 上のみでのワークロードの実行、または GKE と GKE On-Prem 上でのワークロードの実行をする場合に、Logging と Monitoring を強くおすすめします。GKE On-Prem と従来のオンプレミス インフラストラクチャで実行されるコンポーネントがあるアプリケーションの場合は、アプリケーションのエンドツーエンドのビューのために、その他のソリューションも検討できます。
GKE On-Prem のアーキテクチャ、構成、デフォルトで Google Cloud プロジェクトにレプリケーションされるデータの詳細については、GKE On-Prem 向けの Logging と Monitoring の仕組みをご覧ください。
Logging の詳細については、Cloud Logging のドキュメントをご覧ください。
Monitoring の詳細については、Cloud Monitoring のドキュメントをご覧ください。
Prometheus と Grafana
Prometheus と Grafana の 2 つは、次のようなオープンソースのモニタリング製品として広く知られています。
Prometheus は、アプリケーションとシステムの指標を収集します。
Alertmanager は、いくつかの異なるアラート メカニズムを使用してアラートの送信を行います。
Grafana はダッシュボード ツールです。
Prometheus と Grafana は、それぞれの管理クラスタとユーザー クラスタで有効にできます。これらのプロダクトの使用経験があるアプリケーション チームやクラスタ内のアプリケーション指標を保持する運用チームでの使用、あるいはネットワーク接続が失われた場合のトラブルシューティングにおすすめします。
サードパーティのソリューション
Google は、サードパーティのロギングおよびモニタリング ソリューション プロバイダと協力して、GKE On-Prem とサードパーティの製品がうまく連動するように支援しています。Datadog、Elastic、Splunk などの製品があります。今後もサードパーティの製品が検証され、追加される予定です。
GKE On-Prem でサードパーティのソリューションを使用する場合は、次のソリューション ガイドをご覧ください。
GKE On-Prem 向けの Logging と Monitoring の仕組み
新しい管理者クラスタまたはユーザー クラスタを作成すると、各クラスタにロギングと指標のエージェントがインストールされ、有効になります。
Stackdriver エージェントには、クラスタごとに次のコンポーネントが含まれています。
Stackdriver Operator(
stackdriver-operator-*
)。クラスタにデプロイされた他のすべての Stackdriver エージェントのライフサイクルを管理します。Stackdriver のカスタム リソース。 GKE On-Prem のインストール プロセスの一部として自動的に作成されるリソース。ユーザーはカスタム リソースを変更して、プロジェクト ID、クラスタ名、クラスタのロケーションなどの値をいつでも更新できます。
Stackdriver Log Aggregator(
stackdriver-log-aggregator-*
)。Cloud Logging API にログを送信する Fluentd の StatefulSet。ログを送信できない場合、Log Aggregator は最大 200 GB のログエントリをバッファし、最大 24 時間再送信を試みます。バッファがフルになるか、ログ アグリゲータが Logging API に 24 時間以上アクセスできない場合、ログは破棄されます。Stackdriver Log Forwarder(
stackdriver-log-forwarder-*
)。各マシンのログを Stackdriver Log Aggregator に転送する Fluentbit デーモンセット。Stackdriver Metrics Collector(
stackdriver-prometheus-k8s-
)。Prometheus 指標を Cloud Logging API に送信する Prometheus および Stackdriver Prometheus Sidecar StatefulSet。Stackdriver Metadata Collector(
stackdriver-metadata-agent-
)。Pod、Deployment、Node などの Kubernetes リソースのメタデータを Stackdriver Resource Metadata API に送信する Deployment。このデータを使用して指標のクエリを改善するには、デプロイメント名、ノード名、さらには Kubernetes サービス名でもクエリを実行できるようにします。
次のコマンドを実行すると、Stackdriver でインストールされたすべてのエージェントを確認できます。
kubectl -n kube-system get pods | grep stackdriver
このコマンドの出力は、次のようになります。
stackdriver-log-aggregator-0 1/1 Running 0 4h31m stackdriver-log-aggregator-1 1/1 Running 0 4h28m stackdriver-log-forwarder-bpf8g 1/1 Running 0 4h31m stackdriver-log-forwarder-cht4m 1/1 Running 0 4h31m stackdriver-log-forwarder-fth5s 1/1 Running 0 4h31m stackdriver-log-forwarder-kw4j2 1/1 Running 0 4h29m stackdriver-metadata-agent-cluster-level... 1/1 Running 0 4h31m stackdriver-operator-76ddb64d57-4tcj9 1/1 Running 0 4h37m stackdriver-prometheus-k8s-0 2/2 Running 0 4h31m
GKE On-Prem 用の Stackdriver エージェントの構成
GKE On-Prem とともにインストールされた Stackdriver エージェントは、GKE On-Prem クラスタの問題の保守とトラブルシューティングを目的として、設定や構成に応じてシステム コンポーネントに関するデータを収集します。
システム コンポーネントのみ(デフォルトのスコープ)
インストール時、Stackdriver エージェントは、Google 提供のシステム コンポーネントのログと指標を収集します。これには、パフォーマンス詳細(CPU やメモリの使用率など)や同様のメタデータが含まれます。管理クラスタ内のすべてのワークロード、およびユーザー クラスタでは、コンポーネントに kube-system、gke-system、gke-connect、istio-system、config-management-system Namespace のワークロードが含まれます。次のセクションで説明するように、Stackdriver エージェントは構成および無効化できます。
ログと指標を収集するスコープは、アプリケーションが含まれるように拡大することもできます。アプリケーションのロギングとモニタリングを有効にする手順を確認するには、ユーザー アプリケーションの Logging と Monitoring の有効化をご覧ください。
最適化された指標(デフォルト指標)
デフォルトでは、クラスタで実行される指標エージェントは、最適化されたコンテナと kubelet の指標セットを収集して Google Cloud のオペレーション スイート(旧称 Stackdriver)に報告します。この最適化された一連の指標を収集するために必要なリソースは少ないため、全体的なパフォーマンスとスケーラビリティを向上させることができます。これは、モニタリングするオブジェクトの数が多いコンテナレベルの指標で特に重要になります。
最適化された指標を無効にするには(非推奨)、Stackdriver カスタム リソースの optimizedMetrics
フィールドを false
に設定します。Stackdriver カスタム リソースの変更について詳しくは、Stackdriver コンポーネント リソースの構成をご覧ください。デフォルトで除外される指標を含むすべての指標については、Anthos の指標をご覧ください。
Stackdriver の無効化
Stackdriver エージェントを完全に無効にするには、Stackdriver カスタム リソースを削除します。Stackdriver を無効にする前に、Google Cloud サポートの SLA に与える影響の詳細についてのサポートページをご覧ください。
GKE On-Prem の Stackdriver を無効にするには:
kubectl -n kube-system delete stackdriver stackdriver
Stackdriver エージェントは、ストレージと保持の構成に応じて、ローカルに保存されたデータを取得します。データは、そのプロジェクトへのデータの書き込みを承認されたサービス アカウントを使用して、インストール時に指定された Google Cloud プロジェクトに複製されます。前述のように、Stackdriver エージェントはいつでも無効にできます。Cloud Monitoring のドキュメントで説明されているように、Stackdriver エージェントによって収集されたデータは、他の指標やログデータと同様に管理および削除できます。
Logging と Monitoring の構成要件
クラスタで Logging と Monitoring を使用するには、ログと指標を表示する場所に Google Cloud プロジェクトを構成する必要があります。この Google Cloud プロジェクトは、logging-monitoring プロジェクトと呼ばれます。
logging-monitoring プロジェクトで、次の API を有効にします。
logging-monitoring プロジェクトの logging-monitoring サービス アカウントに、次の IAM ロールを付与します。
logging.logWriter
monitoring.metricWriter
stackdriver.resourceMetadata.writer
monitoring.dashboardEditor
料金
Anthos システムのログと指標は無料です。
GKE On-Prem クラスタの場合、Anthos システムのログと指標には次のものがあります。
- 管理クラスタ内のすべてのコンポーネントのログと指標
- ユーザー クラスタ内の次の名前空間のコンポーネントのログと指標:
kube-system
、gke-system
、gke-connect
、knative-serving
、istio-system
、monitoring-system
、config-management-system
、gatekeeper-system
、cnrm-system
詳しくは、Google Cloud のオペレーション スイートの料金をご覧ください。
Cloud Logging の指標のクレジットについては、販売担当者にお問い合わせください。
GKE On-Prem 用の Prometheus と Grafana の仕組み
各 GKE On-Prem クラスタは、デフォルトで Prometheus と Grafana を無効にして作成されます。有効にするには、インストール ガイドをご覧ください。
Prometheus サーバーは、個別の 2 つのノードで 2 つのレプリカが実行される高可用性構成に設定されています。リソース要件は、最大 5 つのノードを実行するクラスタをサポートするように調整され、各ノードは最大 30 個のカスタム指標配信用 Pod を処理します。Prometheus には専用の PersistentVolume があり、4 日間の保持期間にさらに安全バッファを見込んだデータ量に合わせてディスク容量が事前に割り当てられています。
管理コントロール プレーンと各ユーザー クラスタには、個別に構成できる専用のモニタリング スタックがあります。管理クラスタとユーザー クラスタにはそれぞれ、モニタリング用の Prometheus Server、オブザーバビリティ用の Grafana、アラート用の Prometheus Alertmanager という一連の機能を持ったモニタリング スタックが含まれています。
すべてのモニタリング エンドポイント、転送された指標データ、モニタリング API は、mTLS ルールと RBAC ルールを使用して Istio コンポーネントで保護されます。モニタリング データへのアクセスはクラスタ管理者のみに制限されます。
Prometheus で収集される指標
Prometheus は、管理コントロール プレーンとユーザー クラスタから次の指標とメタデータを収集します。
- Pod とノードの CPU 使用率などのリソース使用量。
- Kubernetes コントロール プレーンの指標。
- kubelet などのノードで実行されているアドオンや Kubernetes システム コンポーネントからの指標。
- Deployment 内の Pod の状態など、クラスタの状態。
- アプリケーション指標。
- ネットワーク、エントロピー、i ノードなどのマシン指標。
マルチクラスタ モニタリング
管理クラスタにインストールされた Prometheus と Grafana のインスタンスは、管理クラスタと各ユーザー クラスタを含む GKE On-Prem インスタンス全体を分析できるように特別に構成されています。これにより、次のことが可能になります。
- Grafana ダッシュボードを使用して、すべてのユーザー クラスタと管理クラスタの指標にアクセスする。
- Grafana ダッシュボードで個々のユーザー クラスタの指標を確認する。指標は詳細な直接クエリで使用できます。
- 集計クエリ、ダッシュボード、アラートについて、ユーザー クラスタのノードレベルとワークロードの指標にアクセスする(ワークロードの指標は、kube-system Namespace で実行されるワークロードに限定されます)。
- 特定のクラスタのアラートを構成します。