RubyにOpenTelemetryを導入する
最終更新
最終更新
VaxilaはOpenTelemetryの仕組み (計装)を利用してデータを送信しています。
このページではRuby のデータをVaxilaに送信する方法を解説します。
OpenTelemetry には Ruby用のSDKが用意されています。
このSDKに加えて、RubyOnRailsやActiveRecord用のSDKを使用すると、既存の実装を変更せずに計装することができます。
Vaxilaを使用する場合、SDKからデータを直接Vaxilaに送信するのではなく、Collectorを使うこともできます。
Collectorを使うかどうかを決める際は以下のページを参考にしてください。
Rubyにはいくつかのフレームワークが存在しますが、このページでは Ruby On Rails
を使っている場合の導入方法を説明します。
以下のステップでVaxilaを導入できます。
Gemの追加
initializers 内での初期設定
エラーを補足
独自の計装の追加 (任意)
以下のGemを使用すると、Ruby On RailsへのリクエストやDBへのクエリなどが自動で計装されます。
また、 opentelemetry-instrumentation-all
は多くのGemを内包しているため、下のように個別のGemだけを利用することもできます。
足りない場合は、OpenTelemetryのページからGemを探すことができます。
OpenTelemetryのデータをVaxilaに送信するためには、initializer内で設定をする必要があります。
OpenTelemetry::SDK.configure
内では、以下の項目を設定をすることができます。
service_name
service_version
resource
span_processor
例えば、 config/initializers/opentelemetry.rb
で以下のように設定するとSDKから直接Vaxilaに送信することができます。
この例では次の項目を設定しています。
service_name, service_version, resource
これらの項目を設定することでデータがどこから来たかわかるようになります。
endpoint
https://telemetry.vaxila-labs.com/v1/traces
と設定することで、データを直接Vaxilaに送信するようになります。
Collectorを利用する場合は、Collectorのエンドポイント (http://localhost:4318/v1/traces など)を設定してください。
headers
X-Vaxila-Token
と Accept
のヘッダーを設定することでVaxilaと通信することができます。
X-Vaxila-Token
には、Vaxilaで発行されたトークンを設定してください。
Collectorを利用する場合、ヘッダーは必要ないでしょう。
Vaxilaはエラーをトラッキングすることができますが、RubyのOpenTelemetryはインストールしただけではエラー内容を送信しません。
エラー内容も送信するため、以下のどちらかの作業が必要です。
rescue_from
でエラーを補足する
Middlewareでエラーを補足する
エラーの補足場所は変わりますが、どちらの場合であっても、補足したエラーをSpanに追加するだけで良いことは変わりません。
具体的に、例えば resuce_from
を使用する場合には以下のようにします。
独自のSpanを追加することで、任意の範囲を計装することができます。
計装によって、変数の値や処理時間を記録することが出来るようになります。
具体的には、下のように in_span
で囲むと計装が追加できます。
計装の方法は他にも用意されています。詳細はOpenTelemetryのドキュメントを参照してください。