how-to-set-up-a-prometheus-grafana-and-alertmanager-monitoring-stack-on-digitalocean-kubernetes
前書き
トレースとロギングに加えて、監視とアラートはKubernetesの可観測性スタックの重要なコンポーネントです。 DigitalOcean Kubernetesクラスターの監視を設定すると、リソースの使用状況を追跡し、アプリケーションエラーを分析およびデバッグできます。
監視システムは通常、メトリックデータと視覚化レイヤーを格納する時系列データベースで構成されます。 さらに、アラートレイヤーはアラートを作成および管理し、必要に応じて統合および外部サービスに渡します。 最後に、1つ以上のコンポーネントが、スタックによるアラート用に格納、視覚化、および処理されるメトリックデータを生成または公開します。
人気のある監視ソリューションの1つは、オープンソースのhttps://prometheus.io/[Prometheus]、https://grafana.com/[Grafana]、およびhttps://github.com/prometheus/alertmanager[Alertmanager]スタックです。 kube-state-metricsおよびhttps://github.com/prometheus/node_exporter[node_exporter]と一緒にデプロイして、クラスターレベルのKubernetesオブジェクトメトリックを公開します。 CPUやメモリの使用量などのマシンレベルのメトリック。
Kubernetesクラスターでこの監視スタックを展開するには、個々のコンポーネント、マニフェスト、Prometheusメトリック、およびGrafanaダッシュボードを構成する必要がありますが、これには時間がかかる場合があります。 DigitalOcean Community Developer Educationチームによってリリースされたhttps://github.com/do-community/doks-monitoring[DigitalOcean Kubernetes Cluster Monitoring Quickstart]には、Prometheus-Grafana-Alertmanagerクラスター監視スタックの完全に定義されたマニフェストも含まれています。事前設定されたアラートとGrafanaダッシュボードのセットとして。 すぐに立ち上げて実行するのに役立ち、観測性スタックを構築するための強固な基盤を形成します。
このチュートリアルでは、この事前構成済みのスタックをDigitalOcean Kubernetesにデプロイし、Prometheus、Grafana、Alertmanagerの各インターフェイスにアクセスして、カスタマイズ方法を説明します。
前提条件
開始する前に、https://www.digitalocean.com/docs/kubernetes/quickstart/ [DigitalOcean Kubernetes cluster]が利用可能であること、およびローカル開発環境に次のツールがインストールされている必要があります。
-
ローカルマシンにインストールされた `+ kubectl `コマンドラインインターフェース
クラスターに接続するように構成されています。 ` kubectl +`のインストールと設定の詳細については、https://kubernetes.io/docs/tasks/tools/install-kubectl/ [公式ドキュメント]をご覧ください。 -
git
ローカルマシンにインストールされているバージョン管理システム。 Ubuntu 18.04にgitをインストールする方法については、https://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-18-04 [Ubuntu 18.04にGitをインストールする方法]を参照してください。 -
Coreutils
ローカルマシンにインストールされているhttps://www.gnu.org/software/coreutils/manual/html_node/base64-invocation.html[base64]ツール。 Linuxマシンを使用している場合は、ほとんどの場合既にインストールされています。 OS Xを使用している場合、デフォルトでインストールされる `+ openssl base64 +`を使用できます。
[[step-1-—-cloning-the-github-repository-and-configuring-environment-variables]]
=== 手順1 — GitHubリポジトリの複製と環境変数の構成
開始するには、gitを使用してDigitalOcean Kubernetes Cluster Monitoring GitHub repositoryをローカルマシンにクローンします。
git clone [email protected]:do-community/doks-monitoring.git
次に、リポジトリに移動します。
cd doks-monitoring
次のディレクトリ構造が表示されます。
ls
OutputLICENSE
README.md
changes.txt
manifest
`+ manifest +`ディレクトリには、https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ [サービスアカウント]、https:/など、すべての監視スタックコンポーネントのKubernetesマニフェストが含まれています。 /kubernetes.io/docs/concepts/workloads/controllers/deployment/[Deployments]、https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/[StatefulSets]、https://kubernetes.io/docs / tasks / configure-pod-container / configure-pod-configmap / [ConfigMaps]など これらのマニフェストファイルとその構成方法の詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-prometheus-grafana-and-alertmanager-monitoring-に進んでください。 stack-on-digitalocean-kubernetes#step-6-%E2%80%94-configuring-the-monitoring-stack-optional [監視スタックの設定]。
起動して実行したいだけの場合は、 `+ APP_INSTANCE_NAME `および ` NAMESPACE +`環境変数を設定することから始めます。これらの変数は、スタックのコンポーネントに一意の名前を設定し、https://kubernetes.ioを設定するために使用されますスタックがデプロイされる/ docs / concepts / overview / working-with-objects / namespaces / [Namespace]:
export APP_INSTANCE_NAME=
export NAMESPACE=
このチュートリアルでは、「+ APP_INSTANCE_NAME 」を「 sammy-cluster-monitoring 」に設定します。これにより、すべての監視スタックKubernetesオブジェクト名が追加されます。 監視スタックの一意の説明的なプレフィックスに置き換える必要があります。 また、ネームスペースを「 default 」に設定します。 モニタリングスタックを「 default +」以外のネームスペースにデプロイする場合は、必ずクラスターで作成してください:
kubectl create namespace "$NAMESPACE"
次のような出力が表示されるはずです。
Outputnamespace/ created
この場合、 `+ NAMESPACE `環境変数は ` sammy `に設定されました。 チュートリアルの残りの部分では、 ` NAMESPACE `が ` default +`に設定されていると仮定します。
ここで、 `+ base64 `コマンドを使用して、安全なGrafanaパスワードをbase64エンコードします。 `+`を選択したパスワードに置き換えてください:
export GRAFANA_GENERATED_PASSWORD="$(echo -n '' | base64)"
macOSを使用している場合は、デフォルトでインストールされる `+ openssl base64 +`コマンドに置き換えることができます。
この時点で、スタックのKubernetesマニフェストを取得し、必要な環境変数を構成したので、構成済みの変数をKubernetesマニフェストファイルに置き換えてKubernetesクラスターにスタックを作成する準備ができました。
[[step-2-—-creating-the-monitoring-stack]]
=== ステップ2 —監視スタックを作成する
DigitalOcean Kubernetes Monitoring Quickstartリポジトリには、次の監視、スクレイピング、および視覚化コンポーネントのマニフェストが含まれています。
-
* Prometheus *は時系列データベースであり、動作する監視ツールです
メトリックのエンドポイントをポーリングし、これらのエンドポイントによって公開されたデータをスクレイピングおよび処理します。 PromQL、時系列データクエリ言語を使用して、このデータをクエリできます。 Prometheusは、https://kubernetes.io/docs/concepts/storage/persistentを使用する2つのレプリカを持つhttps://kubernetes.io/docs/concepts/workloads/controllers/statefulset/[StatefulSet]としてクラスターにデプロイされます。 -volumes / [Persistent Volumes] with DigitalOcean Block Storage。 さらに、事前設定されたPrometheusアラート、ルール、およびジョブのセットは、https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/ [ConfigMap]として保存されます。 これらの詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-prometheus-grafana-and-alertmanager-monitoring-stack-on-digitalocean-にスキップしてください監視スタックの構成のkubernetes#prometheus [Prometheus]セクション。 -
* Alertmanager *は、通常Prometheusと一緒にデプロイされ、
スタックのアラートレイヤー、Prometheusによって生成されたアラートの処理、重複排除、グループ化、電子メールやhttps://www.pagerduty.com/[PagerDuty]などの統合へのルーティング。 Alertmanagerは、2つのレプリカを持つStatefulSetとしてインストールされます。 Alertmanagerの詳細については、Prometheusのドキュメントのhttps://prometheus.io/docs/practices/alerting/[Alerting]を参照してください。 -
* Grafana *は、データの視覚化および分析ツールであり、
メトリックデータのダッシュボードとグラフを作成します。 Grafanaは、1つのレプリカを持つStatefulSetとしてインストールされます。 さらに、https://github.com/kubernetes-monitoring/kubernetes-mixin [kubernetes-mixin]によって生成された事前設定済みのダッシュボードのセットがConfigMapとして保存されます。 -
* kube-state-metrics *は、Kubernetesをリッスンするアドオンエージェントです
APIサーバー。展開やポッドなどのKubernetesオブジェクトの状態に関するメトリックを生成します。 これらのメトリックは、HTTPエンドポイントでプレーンテキストとして提供され、Prometheusによって消費されます。 kube-state-metricsは、1つのレプリカを持つ自動スケーラブルhttps://kubernetes.io/docs/concepts/workloads/controllers/deployment/[Deployment]としてインストールされます。 -
* node-exporter *、クラスターノードで実行されるPrometheusエクスポーター
CPUやメモリ使用量などのOSおよびハードウェアメトリックをPrometheusに提供します。 これらのメトリックは、HTTPエンドポイントでプレーンテキストとしても提供され、Prometheusによって消費されます。 node-exporterはhttps://kubernetes.io/docs/concepts/workloads/controllers/daemonset/[DaemonSet]としてインストールされます。
デフォルトでは、node-exporter、kube-state-metrics、および上記の他のコンポーネントによって生成されたスクレイピングメトリックとともに、Prometheusは次のコンポーネントからメトリックをスクレイピングするように構成されます。
-
kube-apiserver、
Kubernetes API server。 -
kubelet、
kube-apiserverと対話してノード上のポッドとコンテナーを管理するプライマリノードエージェント。 -
cAdvisor、
実行中のコンテナを検出し、そのCPU、メモリ、ファイルシステム、およびネットワーク使用率のメトリックを収集するノードエージェント。
これらのコンポーネントの構成とプロメテウススクレイピングジョブの詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-prometheus-grafana-and-alertmanager-monitoring-stackに進んでください。 -on-digitalocean-kubernetes#step-6-%E2%80%94-configuring-the-monitoring-stack-optional [監視スタックの設定]。 ここで、前の手順で定義した環境変数をリポジトリのマニフェストファイルに置き換え、個々のマニフェストを単一のマスターファイルに連結します。
まず、リポジトリのマニフェストファイル内の変数「+ APP_INSTANCE_NAME 」、「 NAMESPACE 」、および「 GRAFANA_GENERATED_PASSWORD 」を埋めるために、「 awk 」と「 envsubst 」を使用します。 変数値に置き換えた後、ファイルは結合され、 ` _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/-alertmanager-config created
service/-alertmanager-operated created
service/-alertmanager created
. . .
clusterrolebinding.rbac.authorization.k8s.io/prometheus created
configmap/-prometheus-config created
service/-prometheus created
statefulset.apps/-prometheus created
`+ kubectl get all `を使用して、スタックの展開の進行状況を追跡できます。 すべてのスタックコンポーネントが「 RUNNING +」になると、Grafana Webインターフェースを介して事前設定されたGrafanaダッシュボードにアクセスできます。
[[step-3-—-accessing-grafana-and-exploring-metrics-data]]
=== ステップ3 — Grafanaへのアクセスとメトリックデータの調査
Grafana ServiceマニフェストはGrafanaを「+ ClusterIP 」サービスとして公開します。つまり、クラスター内部IPアドレスを介してのみアクセスできます。 Kubernetesクラスターの外部でGrafanaにアクセスするには、 ` kubectl patch `を使用して、インプレースサービスを ` NodePort `や ` LoadBalancer `、または ` kubectl port-forward +`のようなパブリック向けのタイプに更新します。ローカルポートをGrafana Podポートに転送します。 このチュートリアルではポートを転送するため、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-prometheus-grafana-and-alertmanager-monitoring-stackにスキップできます。 -on-digitalocean-kubernetes#forwarding-a-local-port-to-access-the-grafana-service [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オブジェクトをインプレースで更新して、オブジェクトを再デプロイせずに変更を加えることができます。 マスターマニフェストファイルを直接変更して、https://github.com/do-community/doks-monitoring/blob/master/manifest/grafana-service.yaml#L9に ` type:LoadBalancer `パラメーターを追加することもできます。 [Grafanaサービス仕様]。 ` kubectl patch +`およびKubernetesサービスタイプの詳細については、https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/ [所定の場所にAPIオブジェクトを更新する]を参照してください。公式Kubernetesドキュメントのkubectl patchの使用およびhttps://kubernetes.io/docs/concepts/services-networking/service/[Services]リソース。
上記のコマンドを実行すると、次が表示されます。
Outputservice/-grafana patched
ロードバランサーを作成してパブリックIPを割り当てるには、数分かかる場合があります。 変更を監視するために `+ -w +`フラグを指定した以下のコマンドを使用して、進捗を追跡できます:
kubectl get service "$APP_INSTANCE_NAME-grafana" -w
DigitalOceanロードバランサーが作成され、外部IPアドレスが割り当てられると、次のコマンドを使用してその外部IPを取得できます。
=$(kubectl get svc $APP_INSTANCE_NAME-grafana \
--namespace $NAMESPACE \
--output jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo "http://${}/"
`+ http:/// +`に移動してGrafana UIにアクセスできるようになりました。
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 Pod「-grafana-0 +」の「 containerPort 」「 3000+」に転送されます。 ポートをKubernetesクラスターに転送する方法の詳細については、https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/ [ポート転送を使用してクラスター内のアプリケーションにアクセスする]。
Webブラウザで `+ http:// localhost:3000 +`にアクセスします。 次のGrafanaログインページが表示されます。
image:https://assets.digitalocean.com/articles/doks_helm_monitoring/grafana_login.png [Grafanaログインページ]
ログインするには、デフォルトのユーザー名「+ admin 」(「 admin-user +」パラメーターを変更していない場合)と、ステップ1で設定したパスワードを使用します。
次の*ホームダッシュボード*に移動します。
image:https://assets.digitalocean.com/articles/doks_helm_monitoring/grafana_home.png [Grafanaホームページ]
左側のナビゲーションバーで、[ダッシュボード]ボタンを選択し、[管理]をクリックします。
image:https://assets.digitalocean.com/articles/doks_helm_monitoring/grafana_dashboard.png [Grafanaダッシュボードタブ]
次のダッシュボード管理インターフェイスが表示され、https://github.com/do-community/doks-monitoring/blob/master/manifest/dashboards-configmap.yaml [`+ dashboards -configmap.yaml + `]マニフェスト:
image:https://assets.digitalocean.com/articles/doks_helm_monitoring/grafana_dashboard_list.png [Grafanaダッシュボードリスト]
これらのダッシュボードは、GrafanaダッシュボードとPrometheusアラートを監視する標準化されたクラスターセットを作成できるオープンソースプロジェクトである `+ kubernetes-mixin +`によって生成されます。 詳細については、https://github.com/kubernetes-monitoring/kubernetes-mixin [kubernetes-mixin GitHub repo]をご覧ください。
-
Kubernetes / Nodes *ダッシュボードをクリックして、特定のノードのCPU、メモリ、ディスク、およびネットワークの使用状況を視覚化します。
image:https://assets.digitalocean.com/articles/doks_helm_monitoring/grafana_nodes_dash.png [Grafana Nodes Dashboard]
これらのダッシュボードの使用方法の説明はこのチュートリアルの範囲外ですが、詳細については次のリソースを参照してください。
-
システムの分析のためのUSEメソッドの詳細については、
パフォーマンスについては、Brendan Greggのhttp://www.brendangregg.com/usemethod.html[Utilization Saturation and Errors(USE)Method]ページを参照してください。 -
Googleのhttps://landing.google.com/sre/books/[SRE Book]も別の
役に立つリソース、特に第6章:https://landing.google.com/sre/sre-book/chapters/monitoring-distributed-systems/[Monitoring Distributed Systems]。 -
独自のGrafanaダッシュボードを作成する方法については、Grafanaの
https://grafana.com/docs/guides/getting_started/ [はじめに]ページ。
次のステップでは、同様のプロセスに従って、Prometheus監視システムに接続して調査します。
[[step-4-—-accessing-prometheus-and-alertmanager]]
=== ステップ4 — PrometheusおよびAlertmanagerへのアクセス
Prometheusポッドに接続するには、 `+ kubectl port-forward `を使用してローカルポートを転送できます。 Grafanaの探索が完了したら、 ` CTRL-C +`を押してポートフォワードトンネルを閉じることができます。 または、新しいシェルを開いて、新しいポート転送接続を作成できます。
`+ default +`名前空間で実行中のPodをリストすることから始めます:
kubectl get pod -n
次のポッドが表示されるはずです。
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」を「+ -prometheus-0 」ポッドのポート「+9090」に転送します。
kubectl port-forward --namespace ${NAMESPACE} -prometheus-0 9090
次のような出力が表示されるはずです。
OutputForwarding from 127.0.0.1:9090 -> 9090
Forwarding from [::1]:9090 -> 9090
これは、ローカルポート「9090」がプロメテウスポッドに正常に転送されていることを示しています。
Webブラウザで `+ http:// localhost:9090 +`にアクセスします。 次のプロメテウス*グラフ*ページが表示されます。
image:https://assets.digitalocean.com/articles/doks_monitoring_quickstart/prometheus.png [プロメテウスグラフページ]
ここから、Prometheusクエリ言語であるPromQLを使用して、データベースに保存されている時系列メトリックを選択および集計できます。 PromQLの詳細については、公式のPrometheusドキュメントのhttps://prometheus.io/docs/prometheus/latest/querying/basics/[Querying Prometheus]を参照してください。
-
Expression *フィールドに「+ kubelet_node_name 」と入力し、* Execute *を押します。 Kubernetesクラスター内のノードを報告するメトリック「 kubelet_node_name +」を含む時系列のリストが表示されます。 メトリックラベルで、メトリックを生成したノードとメトリックをスクレイピングしたジョブを確認できます。
image:https://assets.digitalocean.com/articles/doks_monitoring_quickstart/prometheus_results.png [プロメテウスクエリ結果]
最後に、上部のナビゲーションバーで[ステータス]をクリックしてから[ターゲット]をクリックして、Prometheusがスクレイプするように構成されているターゲットのリストを表示します。 https://www.digitalocean.com/community/tutorials/how-to-set-up-a-prometheus-grafana-and-alertmanagerの冒頭に記載されている監視エンドポイントのリストに対応するターゲットのリストが表示されるはずです。 -monitoring-stack-on-digitalocean-kubernetes#step-2-%E2%80%94-creating-the-monitoring-stack [ステップ2]。
Prometheusの詳細とクラスターメトリックのクエリ方法については、公式のhttps://prometheus.io/docs/introduction/overview/[Prometheus docs]をご覧ください。
Prometheusによって生成されたアラートを管理するAlertmanagerに接続するには、Prometheusへの接続に使用したプロセスと同様のプロセスに従います。 。一般に、Prometheus上部ナビゲーションバーの[アラート]をクリックして、アラートマネージャーアラートを確認できます。
Alertmanagerポッドに接続するには、 `+ kubectl port-forward `を使用してローカルポートを転送します。 プロメテウスの探索を終えたら、「 CTRL-C +」を押すか、新しいシェルを開いてポートフォワードトンネルを閉じて、新しい接続を作成できます。 .
ローカルポート「9093」を「+ -alertmanager-0 」ポッドのポート「+9093」に転送します。
kubectl port-forward --namespace ${NAMESPACE} -alertmanager-0 9093
次のような出力が表示されるはずです。
OutputForwarding from 127.0.0.1:9093 -> 9093
Forwarding from [::1]:9093 -> 9093
これは、ローカルポート「9093」がAlertmanagerポッドに正常に転送されていることを示しています。
Webブラウザで `+ http:// localhost:9093 +`にアクセスします。 次のAlertmanager * Alerts *ページが表示されます。
image:https://assets.digitalocean.com/articles/doks_monitoring_quickstart/alertmanager.png [アラートマネージャーアラートページ]
ここから、アラートの発動とオプションでそれらのサイレンシングを探索できます。 Alertmanagerの詳細については、https://prometheus.io/docs/alerting/alertmanager/ [Alertmanagerの公式ドキュメント]を参照してください。
次のステップでは、監視スタックコンポーネントの一部をオプションで設定およびスケーリングする方法を学習します。
[[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ファイル全体に含まれるコメントを参照してください。
アラートマネージャー
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/alertmanager-0serviceaccount.yaml [
+ alertmanager-0serviceaccount.yaml +
]:
AlertmanagerポッドにKubernetes IDを付与するために使用されるAlertmanagerサービスアカウント。 サービスアカウントの詳細については、https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ [ポッドのサービスアカウントの構成]をご覧ください。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/alertmanager-configmap.yaml [
+ alertmanager-configmap.yaml +
]:
`+ alertmanager.yml +`と呼ばれる最小限のAlertmanager構成ファイルを含むConfigMap。 Alertmanagerの構成はこのチュートリアルの範囲を超えていますが、Alertmanagerのドキュメントのhttps://prometheus.io/docs/alerting/configuration/ [構成]セクションを参照して詳細を確認できます。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/alertmanager-operated-service.yaml [
+ alertmanager-operated-service.yaml +
]:
Alertmanager `+ mesh +`サービス。現在の2レプリカ高可用性構成のAlertmanagerポッド間でリクエストをルーティングするために使用されます。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/alertmanager-service.yaml [
+ alertmanager-service.yaml +
]:
Alertmanager `+ web +`サービス。AlertmanagerWebインターフェースにアクセスするために使用されます。これは前のステップで行った可能性があります。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/alertmanager-statefulset.yaml [
+ alertmanager-statefulset.yaml +
]:
2つのレプリカで構成されたAlertmanager StatefulSet。
グラファナ
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/dashboards-configmap.yaml [
+ dashboards-configmap.yaml +
]:
事前構成済みのhttps://www.digitalocean.com/community/tutorials/an-introduction-to-json[JSON] Grafanaモニタリングダッシュボードを含むConfigMap。 ダッシュボードとアラートの新しいセットをゼロから生成することは、このチュートリアルの範囲を超えていますが、詳細についてはhttps://github.com/kubernetes-monitoring/kubernetes-mixin[kubernetes-mixin GitHub repo]を参照してください。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/grafana-0serviceaccount.yaml [
+ grafana-0serviceaccount.yaml +
]:
Grafanaサービスアカウント。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/grafana-configmap.yaml [
+ grafana-configmap.yaml +
]:
最小限のGrafana構成ファイルのデフォルトセットを含むConfigMap。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/grafana-secret.yaml [
+ grafana-secret.yaml +
]:
Grafana管理者ユーザーとパスワードを含むKubernetesシークレット。 Kubernetes Secretsの詳細については、https://kubernetes.io/docs/concepts/configuration/secret/ [Secrets]をご覧ください。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/grafana-service.yaml [
+ grafana-service.yaml +
]:
Grafanaサービスを定義するマニフェスト。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/grafana-statefulset.yaml [
+ grafana-statefulset.yaml +
]:
1つのレプリカで構成されたGrafana StatefulSet。これはスケーラブルではありません。 Grafanaのスケーリングは、このチュートリアルの範囲外です。 高可用性Grafanaセットアップの作成方法については、公式のGrafanaドキュメントからhttps://grafana.com/docs/tutorials/ha_setup/ [高可用性のためのGrafanaのセットアップ方法]を参照してください。
キューブ状態メトリック
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/kube-state-metrics-0serviceaccount.yaml [
+ kube-state-metrics-0serviceaccount.yaml +
]:
kube-state-metricsサービスアカウントとClusterRole。 ClusterRolesの詳細については、Kubernetesドキュメントのhttps://kubernetes.io/docs/reference/access-authn-authz/rbac/#role-and-clusterrole[Role and ClusterRole]を参照してください。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/kube-state-metrics-deployment.yaml [
+ kube-state-metrics-deployment.yaml +
]:
メインのkube-state-metrics Deploymentマニフェスト。https://github.com/kubernetes/autoscaler/tree/master/addon-resizer [+ addon-resizer +
]を使用して1つの動的にスケーラブルなレプリカで構成されます。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/kube-state-metrics-service.yaml [
+ kube-state-metrics-service.yaml +
]:
`+ kube-state-metrics +`デプロイメントを公開するサービス。
ノードエクスポーター
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/node-exporter-0serviceaccount.yaml [
+ node-exporter-0serviceaccount.yaml +
]:
node-exporterサービスアカウント。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/node-exporter-ds.yaml [
+ node-exporter-ds.yaml +
]:
node-exporter DaemonSetマニフェスト。 node-exporterはDaemonSetであるため、node-exporter Podはクラスター内の各ノードで実行されます。
プロメテウス
-
https://github.com/do-community/doks-monitoring/blob/master/manifest/prometheus-0serviceaccount.yaml [
+ prometheus-0serviceaccount.yaml +
]:
Prometheusサービスアカウント、ClusterRoleおよびClusterRoleBinding。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/prometheus-configmap.yaml [
+ prometheus-configmap.yaml +
]:
3つの構成ファイルを含むConfigMap: -
+ alerts.yaml +
:によって生成された事前設定済みのアラートセットが含まれています
+ kubernetes-mixin +
(これはGrafanaダッシュボードの生成にも使用されました)。 アラートルールの設定の詳細については、Prometheusドキュメントのhttps://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/[Alerting Rules]を参照してください。 -
+ prometheus.yaml +
:プロメテウスのメイン設定ファイル。 プロメテウス
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-prometheus-grafana-and-alertmanager-monitoring-stack-onの最初にリストされているすべてのコンポーネントをスクレイピングするように事前構成されています-digitalocean-kubernetes#step-2-%E2%80%94-creating-the-monitoring-stack [ステップ2]。 Prometheusの構成はこの記事の範囲を超えていますが、詳細については、公式のPrometheus docsのhttps://prometheus.io/docs/prometheus/latest/configuration/configuration/[Configuration]を参照してください。 -
+ rules.yaml +
:有効にするプロメテウスの記録ルールのセット
Prometheusは、頻繁に必要な、または計算コストの高い式を計算し、その結果を新しい時系列セットとして保存します。 これらは `+ kubernetes-mixin +`によっても生成され、それらの設定はこの記事の範囲を超えています。 詳細については、公式のPrometheusドキュメントのhttps://prometheus.io/docs/prometheus/latest/configuration/recording_rules/#recording-rules[Recording Rules]を参照してください。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/prometheus-service.yaml [
+ prometheus-service.yaml +
]:
Prometheus StatefulSetを公開するサービス。 -
https://github.com/do-community/doks-monitoring/blob/master/manifest/prometheus-statefulset.yaml [
+ prometheus-statefulset.yaml +
]:
2つのレプリカで構成されたPrometheus StatefulSet。 このパラメーターは、ニーズに応じてスケーリングできます。
例:プロメテウスのスケーリング
監視スタックを変更する方法を示すために、プロメテウスのレプリカの数を2から3にスケーリングします。
選択したエディターを使用して、 `+ _manifest.yaml +`マスターマニフェストファイルを開きます。
nano _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:
podManagementPolicy: "Parallel"
updateStrategy:
type: "RollingUpdate"
selector:
matchLabels: *Labels
template:
metadata:
labels: *Labels
spec:
. . .
完了したら、ファイルを保存して閉じます。
`+ kubectl apply -f +`を使用して変更を適用します。
kubectl apply -f _manifest.yaml --namespace default
`+ kubectl get pods +`を使用して進行状況を追跡できます。 これと同じ手法を使用して、Kubernetesパラメーターの多くと、この可観測性スタックの構成の多くを更新できます。
結論
このチュートリアルでは、ダッシュボード、Prometheusルール、およびアラートの標準セットを使用して、Prometheus、Grafana、Alertmanagerの監視スタックをDigitalOcean Kubernetesクラスターにインストールしました。
Helm Kubernetesパッケージマネージャーを使用して、この監視スタックを展開することもできます。 詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-digitalocean-kubernetes-cluster-monitoring-with-helm-and-prometheus-operator [DigitalOceanのセットアップ方法]を参照してください。 HelmとPrometheusを使用したKubernetesクラスター監視]。 このスタックを稼働させるもう1つの方法は、現在ベータ版であるDigitalOcean Marketplace Kubernetes Monitoring Stack solutionを使用することです。
DigitalOcean Kubernetes Cluster Monitoring Quickstartリポジトリは、Google Cloud Platformのhttps://github.com/GoogleCloudPlatform/click-to-deploy/tree/master/k8s/prometheus[click-to-deploy Prometheusソリューション]に大きく基づいており、そこから変更されています。 元のリポジトリからの変更と変更の完全なマニフェストは、クイックスタートリポジトリのhttps://github.com/do-community/doks-monitoring/blob/master/changes.md [`+ changes.md +`ファイル]にあります。 。