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 クラスタをモニタリングします。
エージェントは、Logging と Monitoring を次の 2 つの異なるレベルで構成できます。
- システム コンポーネントのみ(デフォルト)。
- Logging と Monitoring が無効(無効にする前に、サポートのための使用方法についてサポートページをご覧ください)。
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 でサードパーティのソリューションを使用する場合は、次のソリューション ガイドをご覧ください。
- Elastic Stack による GKE On-Prem のモニタリング
- Splunk Connect による GKE On-Prem のログ収集
- Datadog による GKE On-Prem インフラストラクチャのモニタリング
GKE On-Prem 向けの Logging と Monitoring の仕組み
Cloud Logging と Cloud 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 エージェントの構成
Stackdriver エージェントは GKE On-Prem のシステム コンポーネントに関する収集データとともにインストールされ、次のいずれかのモードで GKE On-Prem クラスタに関する問題の管理およびトラブルシューティングをするために、設定と構成が行われます。
システム コンポーネントのみ(デフォルト モード)
Stackdriver エージェントはインストール時に、デフォルトでログと指標を収集するように構成されます。Google 提供のシステム コンポーネントのパフォーマンス詳細(CPU やメモリ使用率など)などのメタデータを収集します。管理クラスタ内のすべてのワークロード、およびユーザー クラスタでは、コンポーネントに kube-system、gke-system、gke-connect、istio-system、config-management-system 名前空間のワークロードが含まれます。
Stackdriver の無効化
Stackdriver エージェントを完全に無効にするには、Stackdriver カスタム リソースを削除します。Stackdriver を無効にする前に、Google Cloud サポートの SLA に与える影響の詳細についてのサポートページをご覧ください。
GKE On-Prem の Stackdriver を無効にするには:
kubectl -n kube-system delete stackdrivers stackdriver
Stackdriver エージェントは、ストレージと保持の構成に応じて、ローカルに保存されたデータを取得します。データは、そのプロジェクトへのデータの書き込みを承認されたサービス アカウントを使用して、インストール時に指定された Google Cloud プロジェクトに複製されます。前述のように、Stackdriver エージェントはいつでも無効にできます。Cloud Monitoring のドキュメントで説明されているように、Stackdriver エージェントによって収集されたデータは、他の指標やログデータと同様に管理および削除できます。
Logging と Monitoring の構成要件
GKE On-Prem を使用して Cloud Logging と Cloud Monitoring を有効にするための構成要件がいくつかあります。これらの手順については、GKE On-Prem インストールの概要と次のリストをご覧ください。
- Cloud Monitoring ワークスペースは、Cloud プロジェクト内に作成する必要があります。これは、Cloud Console で [モニタリング] をクリックし、ワークフローに従うことで行えます。
次の Stackdriver API を有効にする必要があります。
Stackdriver エージェントが使用するサービス アカウントに次の IAM ロールを割り当てる必要があります。
logging.logWriter
monitoring.metricWriter
stackdriver.resourceMetadata.writer
料金
Anthos には、標準の Cloud Logging の無料割り当てだけでなく追加の Cloud Logging 無料割り当ても含まれています。
Cloud Logging の指標のクレジットについて詳しくは、お問い合わせください。
GKE On-Prem 用の Prometheus と Grafana の仕組み
各 GKE On-Prem クラスタは、デフォルトで Prometheus と Grafana を無効にして作成されます。有効にするには、インストール ガイドをご覧ください。
Prometheus サーバーは、2 つの別のノードで 2 つの別のレプリカが実行される高可用性構成に設定されています。リソース要件は、最大 5 つのノードを実行するクラスタをサポートするように調整され、各ノードは最大 30 個のカスタム指標配信用 Pod を処理します。Prometheus は専用の永続ボリュームを備えています。事前に割り当てられたそのディスク容量は 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-システム名前空間で実行されるワークロードに限定されます)。
- 特定のクラスタのアラートを構成します。