Help us understand the problem. What is going on with this article?

PCFのbosh-prometheus をWavefront Proxyにつなげる

始めに

Pivotal Cloud Foundry(PCF)を管理する場合、一つの監視方法として、bosh-prometheusという手段があります。
これは、Prometheus、Grafanaなどの管理コンポーネントをインストールするためのコンポーネントです。

https://github.com/bosh-prometheus/prometheus-boshrelease

これだけで、監視を完成させることができるかもしれないですが、Prometheusの以下の特性に悩まされるかもしれないです。

  • データのバックアップや可用性
  • 長期のRetention期間でメトリクスを保管
  • パフォーマンス要件

これらの一つの解決方法として、Prometheusのストレージ連携先としてWavefrontを使う方法です。
Prometheusをあくまで、テンポラリーストレージとして使い、長期データの保管先やメトリクスの分析先としてWavefront使います。

イメージ

Prometheusの連携イメージは以下のとおりです。

image.png

すでにPrometheusがある前提で追加のインストールが必要なのが以下です。

Wavefront Proxyに関しては、Wavefront Nozzleをインストールすることで、追加されます。

よってこの記事では、Prometheus Storage Adaptor for Wavefrontの接続方法を中心に紹介します。

準備編

PCF環境とbosh-prometheusのインストールを完了してください。

さらに、以下の記事にあるとおり、Wavefront Nozzleをインストールしてください。
https://qiita.com/hmachi/items/fd2621d5aa7126e98c5e

Prometheus Storage Adaptorのインストール

インストール方法は、このGithubにあるとおりです。
StandaloneとDockerイメージの方法が紹介されています。

今回は手早く始めるために、Dockerイメージをcf pushして使う方法でためします。
まず、cfでdiego_dockerを有効にします。

$ cf enable-feature-flag diego_docker

その後、cf pushでdockerイメージを起動します。
-cの引数の中の-proxyはそれぞれの環境のWavefront ProxyのIPアドレスを指定してください。
また-prefixは最終的にWavefrontのメトリクスの接頭語になるので、みわけがつくものにしてください。

$ cf push wf-prom-proxy --docker-image wavefronthq/prometheus-storage-adapter  -c '/bin/adapter -proxy 192.168.3.5 -proxy-port 2878 -listen 8080 -prefix prom'

完了したら、一応念のためCurlでサービスが稼働しているか確認します。

% curl http://wf-prom-proxy.apps.SYSTEM_DOMAIN/health
{"Message":"OK"}

{"Message":"OK"}と表示されれば、サービスは起動しているということなので、一旦は成功です。

bosh-prometheusの再構成

今度はbosh-prometheusを再構成して、作成したアダプターにデータを送るようにします。

以下のYamlファイルを作ります。

- type: replace
  path: /instance_groups/name=prometheus2/jobs/name=prometheus2/properties/prometheus/remote_write?/-
  value:
    url: http://wf-prom-proxy.apps.SYSTEM_DOMAIN/receive

完了後、bosh deploy-o <yaml_file>で再度Prometheusをデプロイします。(これは、それぞれのbosh-promethesのデプロイされ方によって、異なるので割愛します)

これで完了です。もし、ただし起動していない場合、以下のLogなどでデバッグしてください。

$ cf logs wf-prom-proxy

Wavefrontでは、どうみえるか

ここまで設定すると、WavefrontにPrometheusのメトリクスが見えてくるはずです。
メトリクスは以下のロジックでみえるようになります。

  • _アンダースコアを.ドットに切り替える
  • 接頭語に-prefixを指定したものが付与される。

例えば以下のようにbosh_deployment_instancesというPrometheusのメトリクスは

image.png

Wavefrontからはprom.bosh.deployment.instancesとしてみえるようになります。

image.png

PPSはどうなるか?

Wavefrontで注意しないといけないのが、課金方式が秒あたりのメトリクス転送量(Points Per Sec)が課金料に影響するという点です。
実際実機でみたところ、接続直後にバーストしましたが、その後、Prometheus接続後私の環境では +100pps で落ち着きました。

image.png

ただ、注意が必要なのが、これはPrometheusのRemote WriteのTuningが関係しています。

https://prometheus.io/docs/practices/remote_write/

より大きな環境の場合、特にmax_samples_per_sendに注視しつつ、メトリクスが落ちていないかなどをモニターしながら適切な値のチューニングが必要と思われます。

hmachi
VMware Tanzuで頑張り始めました。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away