12章exporterの書き方

アプリケーションにダイレクトインストルメンテーションを追加できず、アプリケーションを対象とする既存のexporterも見つからない場合がある。そうなれば、自分でexporterを書かなければならない。幸い、exporterは比較的簡単に書ける。難しいのは、アプリケーションが開示するメトリクスの意味を明らかにすることだ。単位はわからず、ドキュメントはあったとしても曖昧なことがある。この章では、の書き方を学ぶ。

12.1 Consulのtelemetry

ここでは、Consulのための小さなexporterを書くことにする。Consulについては、すでに「10.1 Consul exporter」でConsul exporterのバージョン0.3.0を紹介しているが、このバージョンは、新しく追加されたtelemetry APIのメトリクスをサポートしていない†1

[†1] Consul exporterのバージョン0.4.0ではこれらのメトリクスもサポートされるだろう。(監訳注:2018年8月にリリースされたバージョン0.4.0で、これらのメトリクスはサポートされなかった。)

exporterはどのプログラミング言語でも書けるが、大半はGoで書かれており、この章でもGoを使うことにする。しかし、少数ながらPythonで書かれているexporterも見かけるだろうし、さらに少数だがJavaによるものもある。

Consulが実行されていないなら、例8-6に従ってもう1度起動しておこう。http://localhost:8500/v1/agent/metricsに移動すると、相手にすることになるJSON出力がわかる(例12-1参照)。幸い、Consulは自由に使えるGoライブラリを提供しており、このJSONを自分でパースする必要はない。 ...

Get 入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.