クラスターモニタリングクイックスタートKubernetesマニフェストを入手してください!
前書き
トレースとロギングに加えて、監視とアラートはKubernetesの可観測性スタックの重要なコンポーネントです。 DigitalOcean Kubernetesクラスターの監視を設定すると、リソースの使用状況を追跡し、アプリケーションエラーを分析およびデバッグできます。
監視システムは通常、メトリックデータと視覚化レイヤーを格納する時系列データベースで構成されます。 さらに、アラートレイヤーはアラートを作成および管理し、必要に応じて統合および外部サービスに渡します。 最後に、1つ以上のコンポーネントが、スタックによるアラート用に格納、視覚化、および処理されるメトリックデータを生成または公開します。
人気のあるモニタリングソリューションの1つは、オープンソースのPrometheus、Grafana、および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
コマンドラインインターフェイス。kubectl
in 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 Accounts、Deployments、StatefulSets、ConfigMapsなどを含むすべてのモニタリングスタックコンポーネントのKubernetesマニフェストが含まれています。 これらのマニフェストファイルとその構成方法の詳細については、Configuring the Monitoring Stackまでスキップしてください。
起動して実行したいだけの場合は、まず、APP_INSTANCE_NAME
およびNAMESPACE
環境変数を設定します。これらは、スタックのコンポーネントの一意の名前を構成し、Namespaceを構成するために使用されます。スタックがデプロイされる場所:
export APP_INSTANCE_NAME=sammy-cluster-monitoring
export NAMESPACE=default
このチュートリアルでは、APP_INSTANCE_NAME
をsammy-cluster-monitoring
に設定します。これにより、すべてのモニタリングスタックのKubernetesオブジェクト名が先頭に追加されます。 監視スタックの一意の説明的なプレフィックスに置き換える必要があります。 また、名前空間をdefault
に設定します。 モニタリングスタックをdefault
ではなく名前空間otherにデプロイする場合は、最初にクラスタに作成するようにしてください。
kubectl create namespace "$NAMESPACE"
次のような出力が表示されるはずです。
Outputnamespace/sammy created
この場合、NAMESPACE
環境変数はsammy
に設定されました。 チュートリアルの残りの部分では、NAMESPACE
がdefault
に設定されていると想定します。
ここで、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 StorageでPersistent 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までスキップしてください。 ここで、前の手順で定義した環境変数をリポジトリのマニフェストファイルに置き換え、個々のマニフェストを単一のマスターファイルに連結します。
まず、awk
とenvsubst
を使用して、リポジトリのマニフェストファイルのAPP_INSTANCE_NAME
、NAMESPACE
、および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
を使用して、インプレースのサービスをNodePort
やLoadBalancer
、または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 patchとServicesのリソースを参照してください。
上記のコマンドを実行すると、次が表示されます。
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-0
のcontainerPort
3000
に転送されます。 ポートをKubernetesクラスターに転送する方法の詳細については、Use Port Forwarding to Access Applications in a Clusterを参照してください。
Webブラウザでhttp://localhost:3000
にアクセスします。 次のGrafanaログインページが表示されます。
ログインするには、デフォルトのユーザー名admin
(admin-user
パラメータを変更していない場合)と、手順1で設定したパスワードを使用します。
次のHome Dashboardに移動します。
左側のナビゲーションバーで、Dashboardsボタンを選択し、Manageをクリックします。
次のダッシュボード管理インターフェイスが表示されます。このインターフェイスには、dashboards-configmap.yaml
マニフェストで構成されているダッシュボードが一覧表示されます。
これらのダッシュボードは、kubernetes-mixin
によって生成されます。これは、クラスター監視GrafanaダッシュボードとPrometheusアラートの標準化されたセットを作成できるオープンソースプロジェクトです。 詳細については、kubernetes-mixin GitHub repoを参照してください。
Kubernetes / Nodesダッシュボードをクリックして、特定のノードのCPU、メモリ、ディスク、およびネットワークの使用状況を視覚化します。
これらのダッシュボードの使用方法の説明はこのチュートリアルの範囲外ですが、詳細については次のリソースを参照してください。
-
システムのパフォーマンスを分析するためのUSEメソッドの詳細については、Brendan GreggのThe Utilization Saturation and Errors (USE) Methodページを参照してください。
-
GoogleのSRE Bookは、特に第6章:Monitoring Distributed Systemsなどの役立つリソースです。
-
独自のGrafanaダッシュボードを作成する方法については、GrafanaのGetting Startedページをご覧ください。
次のステップでは、同様のプロセスに従って、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
ローカルポート9090
をsammy-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ドキュメントのQuerying Prometheusを参照してください。
[Expression]フィールドにkubelet_node_name
と入力し、Executeを押します。 Kubernetesクラスター内のノードをレポートするメトリックkubelet_node_name
の時系列のリストが表示されます。 メトリックラベルで、メトリックを生成したノードとメトリックをスクレイピングしたジョブを確認できます。
最後に、上部のナビゲーションバーで、StatusをクリックしてからTargetsをクリックし、Prometheusがスクレイプするように構成されているターゲットのリストを表示します。 Step 2の先頭に記載されている監視エンドポイントのリストに対応するターゲットのリストが表示されます。
Prometheusの詳細と、クラスターメトリックをクエリする方法については、公式のPrometheus docsを参照してください。
Prometheusによって生成されたアラートを管理するAlertmanagerに接続するには、Prometheusへの接続に使用したプロセスと同様のプロセスに従います。 。一般に、Prometheusの上部ナビゲーションバーでAlertsをクリックすると、Alertmanagerアラートを調べることができます。
Alertmanagerポッドに接続するために、もう一度kubectl port-forward
を使用してローカルポートを転送します。 Prometheusの探索が終了したら、「CTRL-C」を押してポートフォワードトンネルを閉じるか、新しいシェルを開いて新しい接続を作成できます。 .
ローカルポート9093
をsammy-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の詳細については、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.yaml
:alertmanager.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を参照してください。
キューブ状態メトリック
-
kube-state-metrics-0serviceaccount.yaml
:kube-state-metricsサービスアカウントとClusterRole。 ClusterRolesの詳細については、KubernetesドキュメントのRole and ClusterRoleを参照してください。 -
kube-state-metrics-deployment.yaml
:メインのkube-state-metricsデプロイメントマニフェスト。addon-resizer
を使用して1つの動的にスケーラブルなレプリカで構成されます。 -
kube-state-metrics-service.yaml
:kube-state-metrics
デプロイメントを公開するサービス。
ノードエクスポーター
-
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.yaml
:kubernetes-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にあります。