📌
Google Managed Prometheus 触ってみた
この記事は CyberAgent 22 新卒 Advent Calendar 11日目の記事です。
概要
GCP の新たなサービスとして発表された Google Cloud Managed Service for Prometheus
はself-managed prometheus から乗り換えるだけの価値があるのかという部分について、実際に動かしながらメリット、デメリットをまとめてみたという記事です。
Google Managed Prometheus のインストール
managed collection でインストールします。
❯ kubectl get crd | grep monitoring.googleapi
clusterrules.monitoring.googleapis.com 2021-11-25T03:40:26Z
operatorconfigs.monitoring.googleapis.com 2021-11-25T03:40:26Z
podmonitorings.monitoring.googleapis.com 2021-11-25T03:40:26Z
rules.monitoring.googleapis.com 2021-11-25T03:40:27Z
❯ kubectl get pods -n gmp-system
NAME READY STATUS RESTARTS AGE
collector-22lpc 2/2 Running 1 122m
collector-6bw8j 2/2 Running 1 16h
collector-9zppd 2/2 Running 1 20h
collector-bmp86 2/2 Running 1 179m
collector-psd55 2/2 Running 1 21h
collector-wsmmj 2/2 Running 1 20h
gmp-operator-5c7f6f5dcb-85wkd 1/1 Running 0 123m
rule-evaluator-6f846fb5d5-ghwtk 2/2 Running 1 16h
|コンポーネント名|役割|
|-|-|-|
|collector|スクレイピングターゲットに対してスクレイプする|
|rule-evaluator|recording/alerting rule を評価する|
|gmp-operator|collector/rule-evaluator を管理する|
Prometheus が今まで一人でやっていた役割を分散させていることがわかります。
次に Prometheus UI をこちらの手順でインストールします。
❯ kubectl get pods -n gmp-system | grep frontend
frontend-6d94449b75-j4hqt 1/1 Running 0 109m
PromQL をブラウザで実行するためのコンポーネントです。
relabeling
- メトリクスを収集するPodに付与されている label を時系列データのラベルとして付与できます。
- __meta_kubernetes_node_name のような meta label を時系列データのラベルとして付与できません
- https://prometheus.io/docs/prometheus/latest/configuration/configuration/#node のようなものは使えません。
- node-exporter を使用した場合、ノードネームを時系列データのラベルとして付与できないのでこれは結構辛いです。
alerting/recording rule
- ClusterRule/Rule を使用することで従来のPrometheusと同じような使い方ができます。
blackbox-exporter
- おそらく使用できません。
- 従来のPrometheusでは設定できる static config/params が書けません。
- https://github.com/prometheus/blackbox_exporter#prometheus-configuration で設定されているようなものを Google Managed Prometheus では表現できません。
- metrics path で設定しようとしても?がURLエンコードされて正しくスクレイプできません。
-
path: /probe?target=https://prometheus.io&module=http_2xx
のように書いても/probe%3Ftarget=https://prometheus.io&module=http_2xx
というパスになってしまいます。
-
- 従来のPrometheusでは設定できる static config/params が書けません。
メリット
- データストアは完全マネージドなため PVC を用意して容量がいっぱいになったら増やす、ノードにsshして溜まりに溜まったWALを消すなどをしなくて良いです。
- 運用コストが低くなリます。
- collector が冗長化されているのでデータ欠損が起きません(障害などが起きなければ)、データの重複排除もよしなにやってくれます。
デメリット
- 機能が従来のPrometheusと比べると少ないです。
- 要件を満たさない場合があります。
まとめ
- データ欠損、可用性を上げるために Prometheus/Thanos をセットアップする必要がなくなる未来がくるかもしれません。
- 現状は機能が少なく要件を満たす環境はあまりなさそうです。
- 自分はやりたいことができなくて残念な気持ちになりました、、、
まだ乗り換えるのは先になりそうですが、引き続き開発を見守りチャンスがあればコントリビュートしたいなと思いました。
Discussion