📈

GCP Managed Prometheus セルフデプロイコレクションを構築してみた

2022/08/02に公開

GCP Managed Prometheus を使ってみたので、そのメモ書きです。

システムは図のような感じで、GCE(Google Compute Engine)上で、

  • メトリクス収集する Prometheus のドロップイン代替バイナリを実行し(収集したものが GCP Managed Prometheus に送られる)
  • Grafana サーバーを起動し、可視化します

GCE インスタンス作成

基本的に GCP コンソール画面からポチポチした際のデフォルトの値ですが、2点ポイントがあります。

  • Grafana にアクセスできるように HTTP トラフィックを有効にしています(--tags http-server)
  • Cloud Monitoring の書き込み(デフォルト)に加えて、読み込み権限を持つようにしています( --scope に https://www.googleapis.com/auth/monitoring

Prometheus

インストールの公式ドキュメント

現状、Prometheus のドロップイン代替バイナリ は precompiled binariesが提供されておらず、自分達でソースをビルドする必要があります。

git clone https://github.com/GoogleCloudPlatform/prometheus &&
cd prometheus

git checkout v2.35.0-gmp.2

make build && make tarball

tar ファイルを作成したら、あとはそれを GCE にアップロードして使えば良いです。

GCE にインストール

GCE には GCP コンソールから簡単に ssh できて、ファイルアップロードもポチポチ簡単に行えます。
tar ファイルをアップロードします。


解凍し、シンボリックリンクを張ります。

sudo rm -rf /usr/local/prometheus* && sudo tar -C /usr/local -zxvf prometheus-2.35.0-gmp.0.linux-amd64.tar.gz
sudo ln -s /usr/local/prometheus-2.35.0-gmp.0.linux-amd64/prometheus /usr/local/bin/prometheus

Prometheus の config ファイルを作成します。ドキュメント

sudo mkdir /etc/prometheus
sudo vim /etc/prometheus/my-prometheus.yml

my-prometheus.yml

global:
  external_labels:
    project_id: [プロジェクトID]
    location: [ゾーン]
    namespace: [ネームスペース名]

scrape_configs:
  - job_name: [ジョブ名]
    scrape_interval: 15s
    metrics_path: /metrics
    scheme: https
    static_configs:
      - targets: ["ターゲットのURL"]

Prometheus起動

このコンフィグファイルを指定して実行します。

sudo prometheus --config.file=/etc/prometheus/my-prometheus.yml --export.match='{__name__=~"foobar_.*"}' --export.compression=gzip
  • --export.matchフラグで foobar_ で始まるメトリクスだけを送るようにしています。ドキュメントはこちら
  • --export.compression=gzipフラグを使用して圧縮を有効にしています。

GCPコンソールの マネージドPrometheus 画面で foobar_*メトリクスが確認できます。

Grafana

Download Grafana

インストール〜起動

GCE に ssh して tar ファイルを解凍し、Grafana サーバーを起動します。

curl -OL https://dl.grafana.com/oss/release/grafana-9.0.5.linux-amd64.tar.gz

sudo rm -rf /usr/local/grafana* && sudo tar -C /usr/local -zxvf grafana-9.0.5.linux-amd64.tar.gz
# grafana-server は grafana のディレクトリで実行せなばならなかったので、シンボリックリンクは張っていません。

Grafanaサーバー起動

80番ポートで実行するには、sudo が必要です。

cd /usr/local/grafana-9.0.5 && export GF_SERVER_HTTP_PORT=80 && sudo -E ./bin/grafana-server

GCE インスタンスの外部IPでアクセスします。

Data source 追加

Using Google Cloud Monitoring in Grafana

Cloud Monitoring を Data source に追加します。

GCE Default Service Account で大丈夫です。

あとは Dashboard、Panel を作成し、値が表示されることを確認します。

Discussion