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,Gemfileburadadır)
Linux (systemd)
- Gem'leri ekleyin:
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- Rails:
/srv/app/config/initializers/opentelemetry.rb; Sinatra:/srv/app/config/opentelemetry.rboluşturun. Yapıştırın:
# 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- Yalnız Sinatra:
app.rb'derequire 'sinatra'satırının altına ekleyin:
require_relative 'config/opentelemetry'- Klasörü oluşturun:
sudo mkdir -p /etc/spitfire-otel/etc/spitfire-otel/<service-name>.envdosyasını oluşturup yapıştırın:
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- İznini kısıtlayın:
sudo chmod 600 /etc/spitfire-otel/<service-name>.env- Ortam dosyasını servise verin (
<unit>: systemd unit'i):
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- Yeniden başlatın:
sudo systemctl daemon-reload && sudo systemctl restart <unit>Docker
- Linux 2. ve 3. adımlar image'ın kaynağında.
Dockerfile'dabundle installsatırından sonra:
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- Ortam dosyasını (Linux 4–6. adımlar) Docker makinesine kaydedin, sonra çalıştırın:
docker run -d --env-file /etc/spitfire-otel/<service-name>.env <image>- Ortam dosyası değişince container'ı yeniden oluşturun:
docker compose -f /srv/app/compose.yaml up -d --force-recreate <service>Kubernetes
- Image'ı Docker bölümündeki gibi hazırlayın. Ortam dosyasını Secret yapın:
kubectl create secret generic <service-name>-otel --from-env-file=/etc/spitfire-otel/<service-name>.env --dry-run=client -o yaml | kubectl apply -f -- Deployment'ta container'ın altına:
envFrom:
- secretRef:
name: <service-name>-otel- Yeniden başlatın:
kubectl rollout restart deployment/<deployment>Doğrulama
- Gem'ler yükleniyor:
cd /srv/app && IS_OTEL_ENABLED=true bundle exec ruby -e 'require "opentelemetry/sdk"; require "opentelemetry/exporter/otlp"; require "opentelemetry/instrumentation/all"; puts "OK"'- Spitfire token'ı kabul ediyor:
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