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

クラスターモニタリングクイックスタートKubernetesマニフェストを入手してください!

前書き

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

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

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

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

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

前提条件

始める前に、DigitalOcean Kubernetes clusterを使用できるようにし、ローカル開発環境に次のツールをインストールする必要があります。

  • ローカルマシンにインストールされ、クラスターに接続するように構成されたkubectlコマンドラインインターフェイス。 kubectlin its official documentationのインストールと構成の詳細を読むことができます。

  • ローカルマシンにインストールされているgitバージョン管理システム。 Ubuntu 18.04にgitをインストールする方法については、How To Install Git on Ubuntu 18.04を参照してください。

  • ローカルマシンにインストールされているCoreutilsbase64ツール。 Linuxマシンを使用している場合は、ほとんどの場合既にインストールされています。 OS Xを使用している場合は、デフォルトでインストールされているopenssl base64を使用できます。

[.note]#Note:クラスターモニタリングクイックスタートは、DigitalOceanKubernetesクラスターでのみテストされています。 クイックスタートを他のKubernetesクラスターで使用するには、マニフェストファイルにいくつかの変更が必要になる場合があります。

[[step-1 -—- cloning-the-github-repository-and-configuring-environment-variables]] ==ステップ1—GitHubリポジトリのクローンを作成して環境変数を構成する

開始するには、gitを使用してDigitalOcean Kubernetes Cluster MonitoringGitHub repositoryをローカルマシンに複製します。

git clone [email protected]:do-community/doks-monitoring.git

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

cd doks-monitoring

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

ls
OutputLICENSE
README.md
changes.txt
manifest

manifestディレクトリには、Service AccountsDeploymentsStatefulSetsConfigMapsなどを含むすべてのモニタリングスタックコンポーネントのKubernetesマニフェストが含まれています。 これらのマニフェストファイルとその構成方法の詳細については、Configuring the Monitoring Stackまでスキップしてください。

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

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

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

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クラスターにスタックを作成する準備ができました。

[[step-2 -—- creating-the-monitoring-stack]] ==ステップ2—モニタリングスタックの作成

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

  • Prometheusは、メトリックエンドポイントをポーリングし、これらのエンドポイントによって公開されたデータをスクレイピングおよび処理することによって機能する時系列データベースおよび監視ツールです。 時系列データクエリ言語であるPromQLを使用してこのデータをクエリできます。 Prometheusは、DigitalOceanBlock StoragePersistent Volumesを使用する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、Kubernetes API server

  • kubelet、kube-apiserverと対話してノード上のポッドとコンテナを管理するプライマリノードエージェント。

  • cAdvisorは、実行中のコンテナーを検出し、それらのCPU、メモリー、ファイルシステム、およびネットワーク使用状況のメトリックを収集するノードエージェントです。

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

まず、awkenvsubstを使用して、リポジトリのマニフェストファイルの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"

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

マスターマニフェストファイルを生成したので、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ダッシュボードにアクセスできます。

[[step-3 -—- accessing-grafana-and-exploring-metrics-data]] ==ステップ3—Grafanaへのアクセスとメトリクスデータの探索

GrafanaサービスマニフェストはGrafanaをClusterIPサービスとして公開します。つまり、クラスター内部のIPアドレスを介してのみアクセスできます。 Kubernetesクラスターの外部でGrafanaにアクセスするには、kubectl patchを使用して、インプレースのサービスをNodePortLoadBalancer、またはkubectl port-forwardなどの公開タイプに更新します。ローカルポートをGrafanaPodポートに転送します。 このチュートリアルでは、ポートを転送するので、Forwarding a Local Port to Access the Grafana Serviceまでスキップできます。 Grafanaを外部に公開することに関する次のセクションは、参照目的で含まれています。

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

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

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

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

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

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 Podsammy-cluster-monitoring-grafana-0containerPort3000に転送されます。 ポートをKubernetesクラスターに転送する方法の詳細については、Use Port Forwarding to Access Applications in a Clusterを参照してください。

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

Grafana Login Page

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

次のHome Dashboardに移動します。

Grafana Home Page

左側のナビゲーションバーで、Dashboardsボタンを選択し、Manageをクリックします。

Grafana Dashboard Tab

次のダッシュボード管理インターフェイスが表示されます。このインターフェイスには、dashboards-configmap.yamlマニフェストで構成されているダッシュボードが一覧表示されます。

Grafana Dashboard List

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

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

Grafana Nodes Dashboard

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

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

[[step-4 -—- accessing-prometheus-and-alertmanager]] ==ステップ4—PrometheusとAlertmanagerへのアクセス

Prometheus Podに接続するには、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 Graph Page

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

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

Prometheus Query Results

最後に、上部のナビゲーションバーで、StatusをクリックしてからTargetsをクリックし、Prometheusがスクレイプするように構成されているターゲットのリストを表示します。 Step 2の先頭に記載されている監視エンドポイントのリストに対応するターゲットのリストが表示されます。

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

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

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 Alerts Page

ここから、アラートの発動とオプションでそれらのサイレンシングを探索できます。 Alertmanagerの詳細については、official Alertmanager documentationを参照してください。

次のステップでは、監視スタックコンポーネントの一部をオプションで設定およびスケーリングする方法を学習します。

[[step-6 -—- configuring-the-monitoring-stack-optional]] ==ステップ6—モニタリングスタックの構成(オプション)

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

この手順では、各マニフェストの目的の概要を説明し、マスターマニフェストファイルを変更して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-0serviceaccount.yaml:Alertmanagerサービスアカウント。AlertmanagerポッドにKubernetesIDを付与するために使用されます。 サービスアカウントの詳細については、Configure Service Accounts for Podsを参照してください。

  • alertmanager-configmap.yamlalertmanager.ymlと呼ばれる最小限のAlertmanager構成ファイルを含むConfigMap。 Alertmanagerの構成はこのチュートリアルの範囲を超えていますが、AlertmanagerドキュメントのConfigurationセクションを参照して詳細を確認できます。

  • alertmanager-operated-service.yaml:Alertmanagermeshサービス。現在の2レプリカ高可用性構成のAlertmanagerポッド間で要求をルーティングするために使用されます。

  • alertmanager-service.yaml:Alertmanagerwebサービス。これは、前の手順で実行した可能性のあるAlertmanagerWebインターフェイスへのアクセスに使用されます。

  • alertmanager-statefulset.yaml:2つのレプリカで構成されたAlertmanagerStatefulSet。

グラファナ

  • dashboards-configmap.yaml:事前構成されたJSONGrafana監視ダッシュボードを含むConfigMap。 ダッシュボードとアラートの新しいセットを最初から生成することは、このチュートリアルの範囲を超えていますが、詳細については、kubernetes-mixin GitHub repoを参照してください。

  • grafana-0serviceaccount.yaml:Grafanaサービスアカウント。

  • grafana-configmap.yaml:最小限のGrafana構成ファイルのデフォルトセットを含むConfigMap。

  • grafana-secret.yaml:Grafana管理者ユーザーとパスワードを含むKubernetesシークレット。 Kubernetes Secretsの詳細については、Secretsを参照してください。

  • grafana-service.yaml:Grafanaサービスを定義するマニフェスト。

  • grafana-statefulset.yaml:1つのレプリカで構成されたGrafana StatefulSetで、スケーラブルではありません。 Grafanaのスケーリングは、このチュートリアルの範囲外です。 高可用性Grafanaセットアップを作成する方法については、Grafanaの公式ドキュメントからHow to setup Grafana for High Availabilityを参照してください。

キューブ状態メトリック

ノードエクスポーター

  • node-exporter-0serviceaccount.yaml:ノードエクスポータサービスアカウント。

  • node-exporter-ds.yaml:ノードエクスポータのDaemonSetマニフェスト。 node-exporterはDaemonSetであるため、node-exporter Podはクラスター内の各ノードで実行されます。

プロメテウス

  • prometheus-0serviceaccount.yaml:Prometheusサービスアカウント、ClusterRoleおよびClusterRoleBinding。

  • prometheus-configmap.yaml:3つの構成ファイルを含むConfigMap:

    • alerts.yamlkubernetes-mixinによって生成された事前構成済みのアラートセットが含まれます(これは、Grafanaダッシュボードの生成にも使用されました)。 アラートルールの構成の詳細については、PrometheusドキュメントのAlerting Rulesを参照してください。

    • prometheus.yaml:Prometheusのメイン構成ファイル。 Prometheusは、Step 2の先頭にリストされているすべてのコンポーネントをスクレイプするように事前構成されています。 Prometheusの構成はこの記事の範囲を超えていますが、詳細については、公式のPrometheusドキュメントからConfigurationを参照できます。

    • rules.yaml:Prometheusが頻繁に必要な式または計算コストの高い式を計算し、その結果を新しい時系列のセットとして保存できるようにするPrometheus記録ルールのセット。 これらもkubernetes-mixinによって生成され、それらの構成はこの記事の範囲を超えています。 詳細については、Prometheusの公式ドキュメントからRecording Rulesを参照してください。

  • prometheus-service.yaml:PrometheusStatefulSetを公開するサービス。

  • prometheus-statefulset.yaml:2つのレプリカで構成されたPrometheusStatefulSet。 このパラメーターは、ニーズに応じてスケーリングできます。

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

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

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

nano sammy-cluster-monitoring_manifest.yaml

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

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ルール、およびアラートの標準セットを使用して、Prometheus、Grafana、Alertmanagerの監視スタックをDigitalOcean Kubernetesクラスターにインストールしました。

HelmKubernetesパッケージマネージャーを使用してこのモニタリングスタックをデプロイすることもできます。 詳細については、How to Set Up DigitalOcean Kubernetes Cluster Monitoring with Helm and Prometheusを参照してください。 同様のスタックを稼働させる別の方法は、現在ベータ版であるDigitalOcean MarketplaceKubernetes Monitoring Stack solutionを使用することです。

DigitalOcean Kubernetes Cluster Monitoringクイックスタートリポジトリは、Google Cloud Platformのclick-to-deploy Prometheus solutionに大きく基づいており、これから変更されています。 元のリポジトリからの変更と変更の完全なマニフェストは、クイックスタートリポジトリのchanges.md fileにあります。

Related