SpitfireYük Testi ve Gözlemlenebilirlikv1.1.0 · Yenilikler

Sürüm: 1.1.0Bu dokümantasyon Spitfire 1.1.0 içindir.

Ruby servisini OTel ile bağlamak

Rails ve Sinatra; trace. Değerler: Servisleri OTel ile bağlamak: genel.

Sürüm tablosu

Ruby opentelemetry-sdk opentelemetry-exporter-otlp opentelemetry-instrumentation-all Çatı
3.3 ve sonrası 1.13.1 0.37.0 0.100.0 Rails 7.1, 7.2, 8.x; Sinatra 2, 3, 4
3.2 1.10.0 0.32.0 0.91.0 Rails 7.0 – 8.x; Sinatra 2, 3, 4
3.1 ve öncesi desteklenmiyor – – Ruby 3.3'e yükseltin

Sürümünüz: ruby --version

Komutlarda 1.13.1, 0.37.0, 0.100.0 yazar; Ruby 3.2 için 1.10.0, 0.32.0, 0.91.0 yazın.

Metrik ve log: gönderilmez (Ruby metrik ve log SDK'ları kararlı değil). Sunucu metrikleri: Collector.

Doğrulandı: 2026-11-04. Kaynak: Ruby getting started, desteklenen Ruby sürümleri, RubyGems opentelemetry-sdk, RubyGems opentelemetry-exporter-otlp, RubyGems opentelemetry-instrumentation-all, Rails enstrümantasyonu (Rails sürümleri).

Gerekenler

  • Spitfire adresi https://<spitfire> ve OTLP alıcısı token'ı sfotlp_…
  • Servis adı <service-name>, sürüm <service-version>, ortam <environment>
  • Uygulama klasörü (burada /srv/app, Gemfile buradadır)

Linux (systemd)

  1. Gem'leri ekleyin:
bash
cd /srv/app && bundle add opentelemetry-sdk --version 1.13.1 && bundle add opentelemetry-exporter-otlp --version 0.37.0 && bundle add opentelemetry-instrumentation-all --version 0.100.0
  1. Rails: /srv/app/config/initializers/opentelemetry.rb; Sinatra: /srv/app/config/opentelemetry.rb oluşturun. Yapıştırın:
ruby
# IS_OTEL_ENABLED=true: OTel açık; başka her değer: kapalı.
if ENV['IS_OTEL_ENABLED'] == 'true'
  require 'opentelemetry/sdk'
  require 'opentelemetry/exporter/otlp'
  require 'opentelemetry/instrumentation/all'
  OpenTelemetry::SDK.configure(&:use_all)
end
  1. Yalnız Sinatra: app.rb'de require 'sinatra' satırının altına ekleyin:
ruby
require_relative 'config/opentelemetry'
  1. Klasörü oluşturun:
bash
sudo mkdir -p /etc/spitfire-otel
  1. /etc/spitfire-otel/<service-name>.env dosyasını oluşturup yapıştırın:
bash
IS_OTEL_ENABLED=true
OTEL_SERVICE_NAME=<service-name>
OTEL_RESOURCE_ATTRIBUTES=service.version=<service-version>,deployment.environment=<environment>
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://<spitfire>/otlp/v1/traces
OTEL_EXPORTER_OTLP_TRACES_HEADERS=authorization=sfotlp_…
OTEL_TRACES_EXPORTER=otlp
OTEL_METRICS_EXPORTER=none
OTEL_LOGS_EXPORTER=none
OTEL_TRACES_SAMPLER=parentbased_traceidratio
OTEL_TRACES_SAMPLER_ARG=0.1
NO_PROXY=<spitfire>
#OTEL_EXPORTER_OTLP_CERTIFICATE=/etc/spitfire-otel/ca.pem
  1. İznini kısıtlayın:
bash
sudo chmod 600 /etc/spitfire-otel/<service-name>.env
  1. Ortam dosyasını servise verin (<unit>: systemd unit'i):
bash
sudo mkdir -p /etc/systemd/system/<unit>.service.d && printf '[Service]\nEnvironmentFile=/etc/spitfire-otel/<service-name>.env\n' | sudo tee /etc/systemd/system/<unit>.service.d/otel.conf >/dev/null
  1. Yeniden başlatın:
bash
sudo systemctl daemon-reload && sudo systemctl restart <unit>

Docker

  1. Linux 2. ve 3. adımlar image'ın kaynağında. Dockerfile'da bundle install satırından sonra:
dockerfile
RUN bundle add opentelemetry-sdk --version 1.13.1 && bundle add opentelemetry-exporter-otlp --version 0.37.0 && bundle add opentelemetry-instrumentation-all --version 0.100.0
  1. Ortam dosyasını (Linux 4–6. adımlar) Docker makinesine kaydedin, sonra çalıştırın:
bash
docker run -d --env-file /etc/spitfire-otel/<service-name>.env <image>
  1. Ortam dosyası değişince container'ı yeniden oluşturun:
bash
docker compose -f /srv/app/compose.yaml up -d --force-recreate <service>

Kubernetes

  1. Image'ı Docker bölümündeki gibi hazırlayın. Ortam dosyasını Secret yapın:
bash
kubectl create secret generic <service-name>-otel --from-env-file=/etc/spitfire-otel/<service-name>.env --dry-run=client -o yaml | kubectl apply -f -
  1. Deployment'ta container'ın altına:
yaml
envFrom:
  - secretRef:
      name: <service-name>-otel
  1. Yeniden başlatın:
bash
kubectl rollout restart deployment/<deployment>

Doğrulama

  1. Gem'ler yükleniyor:
bash
cd /srv/app && IS_OTEL_ENABLED=true bundle exec ruby -e 'require "opentelemetry/sdk"; require "opentelemetry/exporter/otlp"; require "opentelemetry/instrumentation/all"; puts "OK"'
  1. Spitfire token'ı kabul ediyor:
bash
curl -s -o /dev/null -w '%{http_code}' -X POST https://<spitfire>/otlp/v1/traces -H 'Authorization: Bearer sfotlp_…' -H 'Content-Type: application/json' -d '{}' | grep -q '^200
  

 && echo OK

Framework: Rails

Rails Enstrümantasyon Server span
7.0 – 8.x opentelemetry-instrumentation-rails (instrumentation-all içinde) ItemsController#show

Doğrulandı: 2026-11-04. Kaynak: instrumentation-rails.

  1. Yukarıda ortamınızın bölümündeki gibi kurun; dosya config/initializers/opentelemetry.rb.
  2. Rails enstrümantasyonunun yüklendiğine bakın:
bash
cd /srv/app && IS_OTEL_ENABLED=true bundle exec rails runner 'puts OpenTelemetry::Instrumentation::Rails::Instrumentation.instance.installed? ? "OK" : "YOK"' | grep -q '^OK
  

 && echo OK

Framework: Sinatra

Sinatra Enstrümantasyon Server span
2, 3, 4 opentelemetry-instrumentation-sinatra (instrumentation-all içinde) GET /items/:id

Doğrulandı: 2026-11-04. Kaynak: instrumentation-sinatra.

  1. Yukarıda ortamınızın bölümündeki gibi kurun; dosya config/opentelemetry.rb, app.rb'de require_relative satırı.
  2. Sinatra enstrümantasyonunun kurulu olduğuna bakın:
bash
cd /srv/app && IS_OTEL_ENABLED=true bundle exec ruby -e 'require "opentelemetry/instrumentation/sinatra"' && echo OK

Kapatma ve kaldırma

  1. Kapatmak: ortam dosyasında IS_OTEL_ENABLED=false yazın, yeniden başlatın (Linux 8. adım, docker compose … --force-recreate ya da kubectl rollout restart).
  2. Kaldırmak:
bash
cd /srv/app && bundle remove opentelemetry-instrumentation-all opentelemetry-exporter-otlp opentelemetry-sdk && rm -f config/initializers/opentelemetry.rb config/opentelemetry.rb

Sık karşılaşılan sorunlar

Belirti Çözüm
Could not find compatible versions Ruby bandınızın sürümlerini yazın
Span yok Ortam dosyasında IS_OTEL_ENABLED=true; yeniden başlatın
Doğrulama 2. adım bir şey yazmıyor Adres ya da token: Doğrulama
Sinatra: span yok require_relative 'config/opentelemetry' require 'sinatra' satırından sonra olmalı

İlgili sayfalar