GKE On-Prem には、クラウドベースのマネージド サービス、オープンソース ツール、サードパーティの商用ソリューションとの検証済みの互換性など、クラスタのロギングとモニタリングのオプションが複数あります。このページでは、これらのオプションについて説明し、環境に適したソリューションを選択するための基本的なガイダンスを示します。
概要
GKE On-Prem クラスタには、いくつかのロギング オプションとモニタリング オプションが用意されています。
- Cloud Logging と Cloud Monitoring。GKE On-Prem でデプロイされたクラスタ内エージェントによって有効化されます。
- Prometheus と Grafana。新しいクラスタではデフォルトで有効になっています。
- サードパーティ ソリューションによる検証済みの構成。
Cloud Logging と Monitoring
Stackdriver は、Google Cloud の組み込みのオブザーバビリティ ソリューションです。フルマネージドのロギング ソリューション、指標の収集、モニタリング、ダッシュボード、アラートが提供されます。Stackdriver は、クラウドベースの GKE クラスタと同様の方法で GKE On-Prem クラスタをモニタリングします。
Stackdriver エージェントは、次の 2 種類のレベルでロギングとモニタリングを構成できます。
- システム コンポーネントのみ(デフォルト)
- Stackdriver が無効(無効にする前に、サポートのための Stackdriver の使用方法についてサポートページをご覧ください)
Stackdrver は、単一で簡単に構成できる強力なクラウドベースのオブザーバビリティ ソリューションを求めているお客様に理想的なソリューションです。GKE On-Prem でのみワークロードを実行する場合、または GKE と GKE On-Prem でワークロードを実行する場合は、Stackdriver を強くおすすめします。GKE On-Prem と従来のオンプレミス インフラストラクチャでコンポーネントが実行されるアプリケーションの場合は、こうしたアプリケーションをエンドツーエンドで表示するために、その他のソリューションもご検討ください。
- GKE On-Prem のアーキテクチャ、構成、デフォルトで Google Cloud プロジェクトに複製されるデータの詳細については、Stackdriver セクションをご覧ください。
- これらのサービスの詳細については、Cloud Logging と Cloud Monitoring のセクションをご覧ください。
Prometheus と Grafana
Prometheus と Grafana の 2 つは、次のようなオープンソースのモニタリング製品として広く知られています。
- Prometheus は、アプリケーションとシステムの指標を収集します。
- Alertmanager は、いくつかの異なるアラート メカニズムを使用してアラートの送信を行います。
- Grafana はダッシュボード ツールです。
Prometheus と Grafana は、デフォルトでそれぞれ管理クラスタとユーザー クラスタで実行されます。これらのプロダクトの使用経験があるアプリケーション チームやクラスタ内のアプリケーション指標を保持する運用チームでの使用、あるいはネットワーク接続が失われた場合のトラブルシューティングにおすすめします。
サードパーティのソリューション
Google は、サードパーティのロギングおよびモニタリング ソリューション プロバイダと協力して、GKE On-Prem とサードパーティの製品が適切に連動するよう支援しています。Datadog、Elastic、Splunk などの製品があります。今後もサードパーティの製品が検証され、追加される予定です。
GKE On-Prem でサードパーティのソリューションを使用する場合は、次のソリューション ガイドをご覧ください。
Stackdriver for GKE On-Prem の仕組み
Cloud Logging と Cloud Monitoring は、新しい管理クラスタまたはユーザー クラスタの作成時に、各クラスタにインストールされ、有効化されます。
Stackdriver エージェントには、クラスタごとに次のコンポーネントが含まれています。
- Stackdriver Operator(
stackdriver-operator-*
)。クラスタにデプロイされた他のすべての Stackdriver エージェントのライフサイクルを管理します。 - Stackdriver Custom Resource。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 DaemonSet。 - 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。このデータを使用して指標のクエリを改善するには、Deployment 名、ノード名、さらには Kubernetes Service 名でもクエリを実行できるようにします。
次のコマンドを実行すると、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 提供のシステム コンポーネント(管理クラスタ内のすべてのワークロード、ユーザー クラスタの場合は kube-system、gke-system、gke-connect、isto-system、config-management-system Namespace のワークロード)のパフォーマンス詳細(CPU やメモリの使用率など)や同様のメタデータが含まれます。
Stackdriver の無効化
Stackdriver エージェントを完全に無効にするには、Stackdriver カスタム リソースを削除します。Stackdriver を無効にする前に、Google Cloud サポートの SLA に与える影響の詳細についてサポートページをご覧ください。
GKE On-Prem の Stackdriver を無効にするには:
kubectl -n kube-system delete Stackdriver stackdriver
Stackdriver エージェントは、ストレージと保持の構成に応じて、ローカルに保存されたデータを取得します。このデータは、Google Cloud プロジェクトへのデータの書き込みを承認されたサービス アカウントを使用して、インストール時に指定されたプロジェクトに複製されます。Stackdriver エージェントは上記のようにいつでも無効にでき、Stackdriver エージェントによって収集されたデータは、Stackdriver ドキュメントで説明されているように、他の指標やログデータと同様に管理、削除できます。
Stackdriver の構成要件
GKE On-Prem を使用して Stackdriver を有効にするには、いくつかの構成要件があります。これらの手順はインストールの準備に記載されており、以下のとおりです。
- Google Cloud プロジェクト内に Cloud Logging ワークスペースを作成する必要があります。これを行うには、Google Cloud コンソールで [Monitoring] をクリックし、ワークフローに従います。
- 次の 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 には専用の 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 で実行されるワークロードに限定されます)。
- 特定のクラスタのアラートを構成する。