DigitalOceanでPrometheus、Grafana、Alertmanagerを使用してKubernetesモニタリングスタックを設定する方法

提供:Dev Guides
移動先:案内検索

序章

トレースとロギングに加えて、モニタリングとアラートはKubernetesの可観測性スタックの重要なコンポーネントです。 DigitalOcean Kubernetesクラスターのモニタリングを設定すると、リソースの使用状況を追跡し、アプリケーションエラーを分析およびデバッグできます。

監視システムは通常、メトリックデータと視覚化レイヤーを格納する時系列データベースで構成されます。 さらに、アラートレイヤーはアラートを作成および管理し、必要に応じて統合および外部サービスにアラートを渡します。 最後に、1つ以上のコンポーネントが、スタックによるアラート用に保存、視覚化、および処理されるメトリックデータを生成または公開します。

人気のあるモニタリングソリューションの1つは、オープンソースの PrometheusGrafanaAlertmanager スタックで、kube-state-metricsおよびと一緒にデプロイされます。 X174X] node_exporter は、クラスターレベルのKubernetesオブジェクトメトリックと、CPUやメモリ使用量などのマシンレベルのメトリックを公開します。

このモニタリングスタックをKubernetesクラスターにロールアウトするには、個々のコンポーネント、マニフェスト、Prometheusメトリック、およびGrafanaダッシュボードを構成する必要があります。これには時間がかかる場合があります。 DigitalOcean CommunityDeveloperEducationチームによってリリースされたDigitalOceanKubernetes Cluster Monitoring Quickstart には、Prometheus-Grafana-Alertmanagerクラスターモニタリングスタックの完全に定義されたマニフェスト、および事前構成されたアラートとGrafanaダッシュボードのセットが含まれています。 これは、迅速に立ち上げて実行するのに役立ち、可観測性スタックを構築するための強固な基盤を形成します。

このチュートリアルでは、この事前構成されたスタックをDigitalOcean Kubernetesにデプロイし、Prometheus、Grafana、およびAlertmanagerインターフェースにアクセスして、カスタマイズする方法を説明します。

前提条件

開始する前に、 DigitalOcean Kubernetesクラスターを利用でき、ローカル開発環境に次のツールがインストールされている必要があります。

  • kubectlコマンドラインインターフェイスがローカルマシンにインストールされ、クラスターに接続するように構成されています。 kubectl のインストールと構成の詳細については、公式ドキュメントを参照してください。
  • ローカルマシンにインストールされているgitバージョン管理システム。 Ubuntu 18.04にgitをインストールする方法については、 Ubuntu18.04にGitをインストールする方法を参照してください。
  • ローカルマシンにインストールされているCoreutilsbase64ツール。 Linuxマシンを使用している場合、これはおそらくすでにインストールされています。 OS Xを使用している場合は、デフォルトでインストールされているopenssl base64を使用できます。

<$>[注] ノート: Cluster Monitoring Quickstartは、DigitalOceanKubernetesクラスターでのみテストされています。 クイックスタートを他のKubernetesクラスタで使用するには、マニフェストファイルにいくつかの変更が必要になる場合があります。 <$>

ステップ1—GitHubリポジトリのクローンを作成して環境変数を構成する

まず、gitを使用してDigitalOcean Kubernetes Cluster MonitoringGitHubリポジトリをローカルマシンに複製します。

git clone https://github.com/do-community/doks-monitoring.git

次に、リポジトリに移動します。

cd doks-monitoring

次のディレクトリ構造が表示されます。

ls
OutputLICENSE
README.md
changes.txt
manifest

manifestディレクトリには、サービスアカウント展開StatefulSets 、ConfigMaps[を含むすべてのモニタリングスタックコンポーネントのKubernetesマニフェストが含まれていますX194X]など。 これらのマニフェストファイルとその構成方法の詳細については、監視スタックの構成に進んでください。

起動して実行したいだけの場合は、APP_INSTANCE_NAMEおよびNAMESPACE環境変数を設定することから始めます。これらの環境変数は、スタックのコンポーネントの一意の名前を構成し、を構成するために使用されます。スタックがデプロイされる名前空間

export APP_INSTANCE_NAME=sammy-cluster-monitoring
export NAMESPACE=default

このチュートリアルでは、APP_INSTANCE_NAMEsammy-cluster-monitoringに設定します。これにより、すべてのモニタリングスタックのKubernetesオブジェクト名が付加されます。 監視スタックの代わりに、一意の説明プレフィックスを使用する必要があります。 また、名前空間をdefaultに設定します。 監視スタックをdefault以外の名前空間にデプロイする場合は、最初にクラスターに作成するようにしてください。

kubectl create namespace "$NAMESPACE"

次の出力が表示されます。

Outputnamespace/sammy created

この場合、NAMESPACE環境変数はsammyに設定されています。 チュートリアルの残りの部分では、NAMESPACEdefaultに設定されていると想定します。

次に、base64コマンドを使用して、安全なGrafanaパスワードをbase64エンコードします。 your_grafana_passwordの代わりに、選択したパスワードを使用してください。

export GRAFANA_GENERATED_PASSWORD="$(echo -n 'your_grafana_password' | base64)"

macOSを使用している場合は、デフォルトでインストールされているopenssl base64コマンドに置き換えることができます。

この時点で、スタックのKubernetesマニフェストを取得し、必要な環境変数を構成したので、構成された変数をKubernetesマニフェストファイルに置き換えて、Kubernetesクラスターにスタックを作成する準備が整いました。

ステップ2—監視スタックの作成

DigitalOcean Kubernetes Monitoring Quickstartリポジトリには、次のモニタリング、スクレイピング、および視覚化コンポーネントのマニフェストが含まれています。

  • Prometheus は、時系列データベースおよび監視ツールであり、メトリックエンドポイントをポーリングし、これらのエンドポイントによって公開されたデータをスクレイピングおよび処理することで機能します。 時系列データクエリ言語であるPromQLを使用してこのデータをクエリできます。 Prometheusは、DigitalOcean BlockStoragePersistentVolumesを使用する2つのレプリカを持つStatefulSetとしてクラスターにデプロイされます。 さらに、事前設定されたPrometheusアラート、ルール、およびジョブのセットがConfigMapとして保存されます。 これらの詳細については、監視スタックの構成のPrometheusセクションに進んでください。
  • Alertmanager は、通常Prometheusと一緒にデプロイされ、スタックのアラートレイヤーを形成し、Prometheusによって生成されたアラートを処理し、それらを重複排除、グループ化して、電子メールやPagerDutyなどの統合にルーティングします。 Alertmanagerは、2つのレプリカを持つStatefulSetとしてインストールされます。 Alertmanagerの詳細については、PrometheusドキュメントのAlertingを参照してください。
  • Grafana は、データの視覚化および分析ツールであり、メトリックデータのダッシュボードとグラフを作成できます。 Grafanaは、1つのレプリカを持つStatefulSetとしてインストールされます。 さらに、kubernetes-mixinによって生成された事前構成されたダッシュボードのセットがConfigMapとして保存されます。
  • kube-state-metrics は、Kubernetes APIサーバーをリッスンし、デプロイやポッドなどのKubernetesオブジェクトの状態に関する指標を生成するアドオンエージェントです。 これらのメトリックは、HTTPエンドポイントでプレーンテキストとして提供され、Prometheusによって使用されます。 kube-state-metricsは、1つのレプリカを使用した自動スケーラブルDeploymentとしてインストールされます。
  • node-exporter 、クラスターノードで実行され、CPUやメモリ使用量などのOSおよびハードウェアメトリックをPrometheusに提供するPrometheusエクスポーター。 これらのメトリックは、HTTPエンドポイントでプレーンテキストとしても提供され、Prometheusによって使用されます。 node-exporterはDaemonSetとしてインストールされます。

デフォルトでは、node-exporter、kube-state-metrics、および上記の他のコンポーネントによって生成されたスクレイピングメトリックとともに、Prometheusは次のコンポーネントからメトリックをスクレイピングするように構成されます。

  • kube-apiserver、KubernetesAPIサーバー
  • kubelet 、ノード上のポッドとコンテナを管理するためにkube-apiserverと対話するプライマリノードエージェント。
  • cAdvisor は、実行中のコンテナーを検出し、CPU、メモリ、ファイルシステム、およびネットワークの使用状況のメトリックを収集するノードエージェントです。

これらのコンポーネントの構成とPrometheusスクレイピングジョブの詳細については、監視スタックの構成に進んでください。 ここで、前の手順で定義した環境変数をリポジトリのマニフェストファイルに置き換え、個々のマニフェストを単一のマスターファイルに連結します。

まず、awkおよびenvsubstを使用して、リポジトリのマニフェストファイルにAPP_INSTANCE_NAMENAMESPACE、およびGRAFANA_GENERATED_PASSWORD変数を入力します。 変数値に代入した後、ファイルは結合され、sammy-cluster-monitoring_manifest.yamlと呼ばれるマスターマニフェストファイルに保存されます。

awk 'FNR==1 {print "---"}{print}' manifest/* \
 | envsubst '$APP_INSTANCE_NAME $NAMESPACE $GRAFANA_GENERATED_PASSWORD' \
 > "${APP_INSTANCE_NAME}_manifest.yaml"

監視スタックへの変更を追跡し、以前のバージョンにロールバックできるように、このファイルをバージョン管理に保存することを検討する必要があります。 これを行う場合は、ファイルからadmin-password変数をスクラブして、Grafanaパスワードをバージョン管理にチェックインしないようにしてください。

マスターマニフェストファイルを生成したので、kubectl apply -fを使用してマニフェストを適用し、構成した名前空間にスタックを作成します。

kubectl apply -f "${APP_INSTANCE_NAME}_manifest.yaml" --namespace "${NAMESPACE}"

次のような出力が表示されます。

Outputserviceaccount/alertmanager created
configmap/sammy-cluster-monitoring-alertmanager-config created
service/sammy-cluster-monitoring-alertmanager-operated created
service/sammy-cluster-monitoring-alertmanager created

. . .

clusterrolebinding.rbac.authorization.k8s.io/prometheus created
configmap/sammy-cluster-monitoring-prometheus-config created
service/sammy-cluster-monitoring-prometheus created
statefulset.apps/sammy-cluster-monitoring-prometheus created

kubectl get allを使用して、スタックの展開の進行状況を追跡できます。 すべてのスタックコンポーネントがRUNNINGになると、GrafanaWebインターフェイスを介して事前構成されたGrafanaダッシュボードにアクセスできます。

ステップ3—Grafanaへのアクセスとメトリクスデータの調査

GrafanaサービスマニフェストはGrafanaをClusterIPサービスとして公開します。つまり、クラスター内部のIPアドレスを介してのみアクセスできます。 Kubernetesクラスタの外部でGrafanaにアクセスするには、kubectl patchを使用して、インプレースのサービスをNodePortLoadBalancer、または[X170X ]ローカルポートをGrafanaポッドポートに転送します。 このチュートリアルではポートを転送するので、ローカルポートを転送してGrafanaサービスにアクセスするに進んでください。 Grafanaを外部に公開することに関する次のセクションは、参照用に含まれています。

ロードバランサーを使用したGrafanaサービスの公開(オプション)

外部パブリックIPを使用してGrafana用のDigitalOceanロードバランサーを作成する場合は、kubectl patchを使用して、既存のGrafanaサービスをLoadBalancerサービスタイプに更新します。

kubectl patch svc "$APP_INSTANCE_NAME-grafana" \
  --namespace "$NAMESPACE" \
  -p '{"spec": {"type": "LoadBalancer"}}'

kubectl patchコマンドを使用すると、Kubernetesオブジェクトをインプレースで更新して、オブジェクトを再デプロイせずに変更を加えることができます。 type: LoadBalancerパラメーターをGrafanaサービス仕様に追加して、マスターマニフェストファイルを直接変更することもできます。 kubectl patchおよびKubernetesサービスタイプの詳細については、公式のKubernetesドキュメントの kubectlpatchおよびServicesリソースを使用したAPIオブジェクトの更新を参照してください。

上記のコマンドを実行すると、次のように表示されます。

Outputservice/sammy-cluster-monitoring-grafana patched

ロードバランサーを作成してパブリックIPを割り当てるには、数分かかる場合があります。 -wフラグを指定して次のコマンドを使用して進行状況を追跡し、変更を監視できます。

kubectl get service "$APP_INSTANCE_NAME-grafana" -w

DigitalOceanロードバランサーが作成され、外部IPアドレスが割り当てられたら、次のコマンドを使用してその外部IPをフェッチできます。

SERVICE_IP=$(kubectl get svc $APP_INSTANCE_NAME-grafana \
  --namespace $NAMESPACE \
  --output jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo "http://${SERVICE_IP}/"

http://SERVICE_IP/に移動して、GrafanaUIにアクセスできるようになりました。

Grafanaサービスにアクセスするためのローカルポートの転送

Grafanaサービスを外部に公開したくない場合は、kubectl port-forwardを使用して、ローカルポート3000をクラスターに直接Grafanaポッドに転送することもできます。

kubectl port-forward --namespace ${NAMESPACE} ${APP_INSTANCE_NAME}-grafana-0 3000

次の出力が表示されます。

OutputForwarding from 127.0.0.1:3000 -> 3000
Forwarding from [::1]:3000 -> 3000

これにより、ローカルポート3000がGrafanaポッドsammy-cluster-monitoring-grafana-0containerPort3000に転送されます。 ポートをKubernetesクラスターに転送する方法の詳細については、ポート転送を使用してクラスター内のアプリケーションにアクセスするを参照してください。

Webブラウザでhttp://localhost:3000にアクセスします。 次のGrafanaログインページが表示されます。

ログインするには、デフォルトのユーザー名adminadmin-userパラメーターを変更していない場合)と、手順1で構成したパスワードを使用します。

次のホームダッシュボードが表示されます。

左側のナビゲーションバーで、ダッシュボードボタンを選択し、管理をクリックします。

Dashboards-configmap.yamlマニフェストで構成されたダッシュボードを一覧表示する次のダッシュボード管理インターフェイスが表示されます。

これらのダッシュボードは、kubernetes-mixinによって生成されます。これは、クラスター監視GrafanaダッシュボードとPrometheusアラートの標準化されたセットを作成できるオープンソースプロジェクトです。 詳細については、kubernetes-mixinGitHubリポジトリを参照してください。

Kubernetes / Nodes ダッシュボードをクリックして、特定のノードのCPU、メモリ、ディスク、およびネットワークの使用状況を視覚化します。

これらのダッシュボードの使用方法の説明はこのチュートリアルの範囲外ですが、詳細については次のリソースを参照してください。

次のステップでは、同様のプロセスに従って、Prometheus監視システムに接続して探索します。

ステップ4—PrometheusとAlertmanagerへのアクセス

Prometheusポッドに接続するには、kubectl port-forwardを使用してローカルポートを転送できます。 Grafanaの探索が終了したら、CTRL-Cを押してポートフォワードトンネルを閉じることができます。 または、新しいシェルを開いて、新しいポートフォワード接続を作成することもできます。

default名前空間で実行中のポッドを一覧表示することから始めます。

kubectl get pod -n default

次のポッドが表示されます。

Outputsammy-cluster-monitoring-alertmanager-0                      1/1     Running   0          17m
sammy-cluster-monitoring-alertmanager-1                      1/1     Running   0          15m
sammy-cluster-monitoring-grafana-0                           1/1     Running   0          16m
sammy-cluster-monitoring-kube-state-metrics-d68bb884-gmgxt   2/2     Running   0          16m
sammy-cluster-monitoring-node-exporter-7hvb7                 1/1     Running   0          16m
sammy-cluster-monitoring-node-exporter-c2rvj                 1/1     Running   0          16m
sammy-cluster-monitoring-node-exporter-w8j74                 1/1     Running   0          16m
sammy-cluster-monitoring-prometheus-0                        1/1     Running   0          16m
sammy-cluster-monitoring-prometheus-1                        1/1     Running   0          16m

ローカルポート9090sammy-cluster-monitoring-prometheus-0ポッドのポート9090に転送します。

kubectl port-forward --namespace ${NAMESPACE} sammy-cluster-monitoring-prometheus-0 9090

次の出力が表示されます。

OutputForwarding from 127.0.0.1:9090 -> 9090
Forwarding from [::1]:9090 -> 9090

これは、ローカルポート9090がPrometheusポッドに正常に転送されていることを示しています。

Webブラウザでhttp://localhost:9090にアクセスします。 次のPrometheusGraphページが表示されます。

ここから、Prometheusクエリ言語であるPromQLを使用して、データベースに保存されている時系列メトリックを選択して集計できます。 PromQLの詳細については、公式のPrometheusドキュメントから QueryingPrometheusを参照してください。

Expression フィールドに、kubelet_node_nameと入力し、Executeを押します。 Kubernetesクラスター内のノードを報告するメトリックkubelet_node_nameの時系列のリストが表示されます。 メトリックラベルで、どのノードがメトリックを生成し、どのジョブがメトリックをスクレイプしたかを確認できます。

最後に、上部のナビゲーションバーで、ステータスターゲットの順にクリックして、Prometheusがスクレイプするように構成されているターゲットのリストを表示します。 ステップ2の冒頭で説明した監視エンドポイントのリストに対応するターゲットのリストが表示されます。

Prometheusの詳細と、クラスターメトリックを照会する方法については、公式のPrometheusドキュメントを参照してください。

Prometheusによって生成されたアラートを管理するAlertmanagerに接続するには、Prometheusへの接続に使用したのと同様のプロセスに従います。 。 一般に、Prometheusの上部ナビゲーションバーにある Alerts をクリックすると、AlertmanagerAlertsを調べることができます。

Alertmanagerポッドに接続するには、もう一度kubectl port-forwardを使用してローカルポートを転送します。 Prometheusの探索が終了したら、CTRL-Cを押してポート転送トンネルを閉じるか、新しいシェルを開いて新しい接続を作成できます。 .

ローカルポート9093sammy-cluster-monitoring-alertmanager-0ポッドのポート9093に転送します。

kubectl port-forward --namespace ${NAMESPACE} sammy-cluster-monitoring-alertmanager-0 9093

次の出力が表示されます。

OutputForwarding from 127.0.0.1:9093 -> 9093
Forwarding from [::1]:9093 -> 9093

これは、ローカルポート9093がAlertmanagerポッドに正常に転送されていることを示しています。

Webブラウザでhttp://localhost:9093にアクセスします。 次のAlertmanagerAlertsページが表示されます。

ここから、アラートの発火とオプションでアラートの消音を調べることができます。 Alertmanagerの詳細については、公式Alertmanagerドキュメントを参照してください。

次のステップでは、いくつかの監視スタックコンポーネントをオプションで構成およびスケーリングする方法を学習します。

手順6—監視スタックの構成(オプション)

DigitalOcean Kubernetes Cluster Monitoringクイックスタートリポジトリに含まれるマニフェストは、さまざまなコンテナイメージ、さまざまな数のポッドレプリカ、さまざまなポート、およびカスタマイズされた構成ファイルを使用するように変更できます。

このステップでは、各マニフェストの目的の概要を説明し、マスターマニフェストファイルを変更してPrometheusを最大3つのレプリカにスケーリングする方法を示します。

まず、リポジトリのmanifestsサブディレクトリに移動し、ディレクトリの内容を一覧表示します。

cd manifest
ls
Outputalertmanager-0serviceaccount.yaml
alertmanager-configmap.yaml
alertmanager-operated-service.yaml
alertmanager-service.yaml
. . .
node-exporter-ds.yaml
prometheus-0serviceaccount.yaml
prometheus-configmap.yaml
prometheus-service.yaml
prometheus-statefulset.yaml

ここには、さまざまな監視スタックコンポーネントのマニフェストがあります。 マニフェストの特定のパラメーターの詳細については、リンクをクリックして、YAMLファイル全体に含まれているコメントを参照してください。

Alertmanager

  • alertmanager-0serviceaccount.yaml :Alertmanagerサービスアカウント。AlertmanagerポッドにKubernetesIDを付与するために使用されます。 サービスアカウントの詳細については、ポッドのサービスアカウントの構成を参照してください。
  • alertmanager-configmap.yamlalertmanager.ymlと呼ばれる最小限のAlertmanager構成ファイルを含むConfigMap。 Alertmanagerの構成はこのチュートリアルの範囲を超えていますが、Alertmanagerドキュメントの構成セクションを参照して詳細を確認できます。
  • alertmanager-operated-service.yaml :Alertmanager meshサービス。現在の2レプリカ高可用性構成で、Alertmanagerポッド間でリクエストをルーティングするために使用されます。
  • alertmanager-service.yaml :Alertmanager webサービス。これは、前の手順で行った可能性のあるAlertmanagerWebインターフェイスへのアクセスに使用されます。
  • alertmanager-statefulset.yaml :2つのレプリカで構成されたAlertmanagerStatefulSet。

Grafana

  • Dashboards-configmap.yaml :事前構成された JSONGrafanaモニタリングダッシュボードを含むConfigMap。 ダッシュボードとアラートの新しいセットを最初から生成することは、このチュートリアルの範囲を超えていますが、詳細については、kubernetes-mixinGitHubリポジトリを参照してください。
  • grafana-0serviceaccount.yaml :Grafanaサービスアカウント。
  • grafana-configmap.yaml :最小限のGrafana構成ファイルのデフォルトセットを含むConfigMap。
  • grafana-secret.yaml :Grafana管理者ユーザーとパスワードを含むKubernetesシークレット。 Kubernetesシークレットの詳細については、シークレットを参照してください。
  • grafana-service.yaml :Grafanaサービスを定義するマニフェスト。
  • grafana-statefulset.yaml :1つのレプリカで構成されたGrafana StatefulSetで、スケーラブルではありません。 Grafanaのスケーリングは、このチュートリアルの範囲を超えています。 高可用性のGrafanaセットアップを作成する方法については、公式のGrafanaドキュメントから高可用性用のGrafanaのセットアップ方法を参照してください。

kube-state-metrics

ノードエクスポーター

  • node-exporter-0serviceaccount.yaml :ノードエクスポーターサービスアカウント。
  • node-exporter-ds.yaml :ノードエクスポーターのDaemonSetマニフェスト。 node-exporterはDaemonSetであるため、node-exporterポッドはクラスター内の各ノードで実行されます。
      1. プロメテウス
  • prometheus-0serviceaccount.yaml :Prometheusサービスアカウント、ClusterRoleおよびClusterRoleBinding。
  • prometheus-configmap.yaml :3つの構成ファイルを含むConfigMap:
    • alerts.yamlkubernetes-mixin(Grafanaダッシュボードの生成にも使用された)によって生成された事前構成済みのアラートのセットが含まれています。 アラートルールの構成の詳細については、Prometheusドキュメントのアラートルールを参照してください。
    • prometheus.yaml:Prometheusのメイン構成ファイル。 Prometheusは、ステップ2の最初にリストされているすべてのコンポーネントをスクレイプするように事前構成されています。 Prometheusの構成はこの記事の範囲を超えていますが、詳細については、公式のPrometheusドキュメントから構成を参照してください。
    • rules.yaml:Prometheusが頻繁に必要な、または計算コストの高い式を計算し、その結果を新しい時系列のセットとして保存できるようにする一連のPrometheus記録ルール。 これらもkubernetes-mixinによって生成され、構成はこの記事の範囲を超えています。 詳細については、Prometheusの公式ドキュメントから記録ルールを参照してください。
  • prometheus-service.yaml :PrometheusStatefulSetを公開するサービス。
  • prometheus-statefulset.yaml :2つのレプリカで構成されたPrometheusStatefulSet。 このパラメーターは、必要に応じてスケーリングできます。

例:プロメテウスのスケーリング

監視スタックを変更する方法を示すために、Prometheusレプリカの数を2から3にスケーリングします。

選択したエディターを使用して、sammy-cluster-monitoring_manifest.yamlマスターマニフェストファイルを開きます。

nano sammy-cluster-monitoring_manifest.yaml

マニフェストのPrometheusStatefulSetセクションまで下にスクロールします。

Output. . .
apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
  name: sammy-cluster-monitoring-prometheus
  labels: &Labels
    k8s-app: prometheus
    app.kubernetes.io/name: sammy-cluster-monitoring
    app.kubernetes.io/component: prometheus
spec:
  serviceName: "sammy-cluster-monitoring-prometheus"
  replicas: 2
  podManagementPolicy: "Parallel"
  updateStrategy:
    type: "RollingUpdate"
  selector:
    matchLabels: *Labels
  template:
    metadata:
      labels: *Labels
    spec:
. . .

レプリカの数を2から3に変更します。

Output. . .
apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
  name: sammy-cluster-monitoring-prometheus
  labels: &Labels
    k8s-app: prometheus
    app.kubernetes.io/name: sammy-cluster-monitoring
    app.kubernetes.io/component: prometheus
spec:
  serviceName: "sammy-cluster-monitoring-prometheus"
  replicas: 3
  podManagementPolicy: "Parallel"
  updateStrategy:
    type: "RollingUpdate"
  selector:
    matchLabels: *Labels
  template:
    metadata:
      labels: *Labels
    spec:
. . .

完了したら、ファイルを保存して閉じます。

kubectl apply -fを使用して変更を適用します。

kubectl apply -f sammy-cluster-monitoring_manifest.yaml --namespace default

kubectl get podsを使用して進行状況を追跡できます。 これと同じ手法を使用して、Kubernetesパラメーターの多くとこの可観測性スタックの構成の多くを更新できます。

結論

このチュートリアルでは、Prometheus、Grafana、Alertmanagerのモニタリングスタックを、ダッシュボード、Prometheusルール、アラートの標準セットを使用してDigitalOceanKubernetesクラスターにインストールしました。

HelmKubernetesパッケージマネージャーを使用してこのモニタリングスタックをデプロイすることもできます。 詳細については、HelmとPrometheusを使用したDigitalOceanKubernetesクラスタモニタリングの設定方法を参照してください。 同様のスタックを起動して実行する別の方法は、現在ベータ版のDigitalOcean Marketplace KubernetesMonitoringStackソリューションを使用することです。

DigitalOcean Kubernetes Cluster Monitoringクイックスタートリポジトリは、GoogleCloudPlatformのクリックしてデプロイするPrometheusソリューションに大きく基づいて変更されています。 元のリポジトリからの変更と変更の完全なマニフェストは、クイックスタートリポジトリのchanges.mdファイルにあります。