2018年10月5日金曜日

Prometheus ruby client を自分のアプリに組み込んでみよう

概要

prometheus-client という gem を使うと自分の Web アプリケーションに簡単に Prometheus で監視するためのメトリックを追加することができます
具体的には /metrics にアクセスするとアプリの監視のためのメトリックが取得できるようになります

環境

  • macOS 10.14
  • ruby 2.5.1p57
  • prometheus-client 0.8.0

ライブラリインストール

  • bundle init
  • vim Gemfile
gem 'sinatra'
gem 'prometheus-client'
  • bundle install --path vendor

Web フレームワークは Sinatra を使います
prometheus-client の Rack 用のモジュールを使うためです

メトリック取得用のロジック追加

prometheus-client にはすでにいくつかのメトリックが用意されています
Rack の設定ファイル (config.ru) にモジュールを読み込む設定を追加するだけで簡単にメトリックを取得できます

  • vim config.ru
require 'prometheus/middleware/collector'
require 'prometheus/middleware/exporter'

use Rack::Deflater
use Prometheus::Middleware::Collector
use Prometheus::Middleware::Exporter

上記を既存の config.ru に追加してあげましょう
先頭にでも追加すれば OK です

動作確認

  • bundle exec rackup config.ru

でアプリを起動したら localhost:9292/metrics にアクセスしてみましょう
ブラウザで確認すると以下のようなメトリックが取得できると思います
prometheus_client1.png

基本的にはアクセスに関するメトリックでアクセス数やレスポンスタイムなどを返却してくれます

最後に

Ruby の prometheus-client を使って自分のアプリでメトリックが取得できるようにしてみました
最低限のアプリの QA がしたいのであればこの程度の情報でもいいかもしれません

今回はデフォルトで用意されたメトリックを追加しました
実際のケースでは独自のメトリックも取得したくなると思います
この状態から独自のメトリックを追加する方法は別の記事で紹介したいと思います

参考サイト

0 件のコメント:

コメントを投稿