📌

Google Managed Prometheus 触ってみた

2021/12/11に公開

この記事は CyberAgent 22 新卒 Advent Calendar 11日目の記事です。

https://adventar.org/calendars/6671

概要

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 を時系列データのラベルとして付与できません

alerting/recording rule

blackbox-exporter

  • おそらく使用できません。
    • 従来のPrometheusでは設定できる static config/params が書けません。
    • metrics path で設定しようとしても?がURLエンコードされて正しくスクレイプできません。
      • path: /probe?target=https://prometheus.io&module=http_2xx のように書いても /probe%3Ftarget=https://prometheus.io&module=http_2xx というパスになってしまいます。

メリット

  • データストアは完全マネージドなため PVC を用意して容量がいっぱいになったら増やす、ノードにsshして溜まりに溜まったWALを消すなどをしなくて良いです。
    • 運用コストが低くなリます。
  • collector が冗長化されているのでデータ欠損が起きません(障害などが起きなければ)、データの重複排除もよしなにやってくれます。

デメリット

  • 機能が従来のPrometheusと比べると少ないです。
    • 要件を満たさない場合があります。

まとめ

  • データ欠損、可用性を上げるために Prometheus/Thanos をセットアップする必要がなくなる未来がくるかもしれません。
  • 現状は機能が少なく要件を満たす環境はあまりなさそうです。
    • 自分はやりたいことができなくて残念な気持ちになりました、、、

まだ乗り換えるのは先になりそうですが、引き続き開発を見守りチャンスがあればコントリビュートしたいなと思いました。

Discussion