ロギングとモニタリング

Anthos GKE On-Prem(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 でサードパーティのソリューションを使用する場合は、次のソリューション ガイドをご覧ください。

GKE On-Prem 向けの Logging と Monitoring の仕組み

Cloud Logging と Cloud Monitoring は、新しい管理クラスタまたはユーザー クラスタの作成時に、各クラスタにインストールされ、起動されます。

Stackdriver エージェントには、クラスタごとに次のコンポーネントが含まれています。

  • Stackdriver Operatorstackdriver-operator-*)。クラスタにデプロイされた他のすべての Stackdriver エージェントのライフサイクルを管理します。

  • Stackdriver のカスタム リソース。 GKE On-Prem のインストール プロセスの一部として自動的に作成されるリソース。ユーザーはカスタム リソースを変更して、プロジェクト ID、クラスタ名、クラスタのロケーションなどの値をいつでも更新できます。

  • Stackdriver Log Aggregatorstackdriver-log-aggregator-*)。Cloud Logging API にログを送信する Fluentd の StatefulSet。ログを送信できない場合、Log Aggregator は最大 200 GB のログエントリをバッファし、最大 24 時間再送信を試みます。バッファがフルになるか、ログ アグリゲータが Logging API に 24 時間以上アクセスできない場合、ログは破棄されます。

  • Stackdriver Log Forwarderstackdriver-log-forwarder-*)。各マシンのログを Stackdriver Log Aggregator に転送する Fluentbit デーモンセット。

  • Stackdriver Metrics Collectorstackdriver-prometheus-k8s-)。Prometheus 指標を Cloud Logging API に送信する Prometheus および Stackdriver Prometheus Sidecar StatefulSet。

  • Stackdriver Metadata Collectorstackdriver-metadata-agent-)。Pod、Deployment、Node などの Kubernetes リソースのメタデータを Stackdriver Resource Metadata API に送信する Deployment。このデータを使用して指標のクエリを改善するには、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 インストールの概要と次のリストをご覧ください。

  1. Cloud Monitoring ワークスペースは、Cloud プロジェクト内に作成する必要があります。これは、Cloud Console で [モニタリング] をクリックし、ワークフローに従うことで行えます。
  2. 次の Stackdriver API を有効にする必要があります。

  3. Stackdriver エージェントが使用するサービス アカウントに次の Cloud 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-システム名前空間で実行されるワークロードに限定されます)。
  • 特定のクラスタのアラートを設定します。

次のステップ