📈
GCP Managed Prometheus セルフデプロイコレクションを構築してみた
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
インストール〜起動
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