OpenTelemetry dışa aktarıcı, istemcide ve sunucuda OpenTelemetry toplayıcı ile doğru şekilde nasıl kullanılır?
OpenTelemetry dışa aktarıcının OpenTelemetry toplayıcı ile çalışmasını sağlamaya çalışıyorum.
Bu OpenTelemetry toplayıcı demosunu buldum .
Ben de bu dört yapılandırma dosyasını kopyaladım
- docker-compose.yml (Uygulamamda, şu anda çalıştırmakta sorun yaşadığım jeneratörler bölümünü ve prometheus'u kaldırdım)
- otel-agent-config.yaml
- otel-collector-config.yaml
- .env
benim uygulamama.
Ayrıca açık telemetri / opentelemetry-js deposundaki bu iki gösterime dayanarak:
- Web demosundaki izler
- Düğümdeki İzler - GRPC demosu
Sürümümü buldum (biraz uzun süredir özür dilerim, doküman eksikliği nedeniyle minimum çalışan bir sürümü kurmak gerçekten zor):
.env
OTELCOL_IMG=otel/opentelemetry-collector-dev:latest
OTELCOL_ARGS=
docker-compose.yml
version: '3.7'
services:
# Jaeger
jaeger-all-in-one:
image: jaegertracing/all-in-one:latest
ports:
- "16686:16686"
- "14268"
- "14250"
# Zipkin
zipkin-all-in-one:
image: openzipkin/zipkin:latest
ports:
- "9411:9411"
# Collector
otel-collector:
image: ${OTELCOL_IMG} command: ["--config=/etc/otel-collector-config.yaml", "${OTELCOL_ARGS}"]
volumes:
- ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
ports:
- "1888:1888" # pprof extension
- "8888:8888" # Prometheus metrics exposed by the collector
- "8889:8889" # Prometheus exporter metrics
- "13133:13133" # health_check extension
- "55678" # OpenCensus receiver
- "55680:55679" # zpages extension
depends_on:
- jaeger-all-in-one
- zipkin-all-in-one
# Agent
otel-agent:
image: ${OTELCOL_IMG} command: ["--config=/etc/otel-agent-config.yaml", "${OTELCOL_ARGS}"]
volumes:
- ./otel-agent-config.yaml:/etc/otel-agent-config.yaml
ports:
- "1777:1777" # pprof extension
- "8887:8888" # Prometheus metrics exposed by the agent
- "14268" # Jaeger receiver
- "55678" # OpenCensus receiver
- "55679:55679" # zpages extension
- "13133" # health_check
depends_on:
- otel-collector
otel-agent-config.yaml
receivers:
opencensus:
zipkin:
endpoint: :9411
jaeger:
protocols:
thrift_http:
exporters:
opencensus:
endpoint: "otel-collector:55678"
insecure: true
logging:
loglevel: debug
processors:
batch:
queued_retry:
extensions:
pprof:
endpoint: :1777
zpages:
endpoint: :55679
health_check:
service:
extensions: [health_check, pprof, zpages]
pipelines:
traces:
receivers: [opencensus, jaeger, zipkin]
processors: [batch, queued_retry]
exporters: [opencensus, logging]
metrics:
receivers: [opencensus]
processors: [batch]
exporters: [logging,opencensus]
otel-collector-config.yaml
receivers:
opencensus:
exporters:
prometheus:
endpoint: "0.0.0.0:8889"
namespace: promexample
const_labels:
label1: value1
logging:
zipkin:
endpoint: "http://zipkin-all-in-one:9411/api/v2/spans"
format: proto
jaeger:
endpoint: jaeger-all-in-one:14250
insecure: true
processors:
batch:
queued_retry:
extensions:
health_check:
pprof:
endpoint: :1888
zpages:
endpoint: :55679
service:
extensions: [pprof, zpages, health_check]
pipelines:
traces:
receivers: [opencensus]
processors: [batch, queued_retry]
exporters: [logging, zipkin, jaeger]
metrics:
receivers: [opencensus]
processors: [batch]
exporters: [logging]
docker-compose up -d
Çalıştırdıktan sonra Jaeger (http: // localhost: 16686) ve Zipkin UI (http: // localhost: 9411) açabilirim.
Ve işlerim ConsoleSpanExporter
hem web istemcisinde hem de Express.js sunucusunda.
Ancak, bu OpenTelemetry dışa aktarıcı kodunu hem istemcide hem de sunucuda denedim, hala OpenTelemetry toplayıcısına bağlanmak için sorun yaşıyorum.
Lütfen kodun içindeki URL hakkındaki yorumuma bakın
import { CollectorTraceExporter } from '@opentelemetry/exporter-collector';
// ...
tracerProvider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
tracerProvider.addSpanProcessor(
new SimpleSpanProcessor(
new CollectorTraceExporter({
serviceName: 'my-service',
// url: 'http://localhost:55680/v1/trace', // Return error 404.
// url: 'http://localhost:55681/v1/trace', // No response, not exists.
// url: 'http://localhost:14268/v1/trace', // No response, not exists.
})
)
);
Herhangi bir fikir? Teşekkürler
Yanıtlar
Denediğiniz demo, otlp alıcısı ile değiştirilmesi gereken eski yapılandırma ve açıklık kullanıyor. Bunun çalışan bir örnek olduğunu söyledikten sonrahttps://github.com/open-telemetry/opentelemetry-js/tree/master/examples/collector-exporter-node/docker Bu yüzden dosyaları oradan kopyalıyorum:
docker-compose.yaml
version: "3"
services:
# Collector
collector:
image: otel/opentelemetry-collector:latest
command: ["--config=/conf/collector-config.yaml", "--log-level=DEBUG"]
volumes:
- ./collector-config.yaml:/conf/collector-config.yaml
ports:
- "9464:9464"
- "55680:55680"
- "55681:55681"
depends_on:
- zipkin-all-in-one
# Zipkin
zipkin-all-in-one:
image: openzipkin/zipkin:latest
ports:
- "9411:9411"
# Prometheus
prometheus:
container_name: prometheus
image: prom/prometheus:latest
volumes:
- ./prometheus.yaml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
collector-config.yaml
receivers:
otlp:
protocols:
grpc:
http:
exporters:
zipkin:
endpoint: "http://zipkin-all-in-one:9411/api/v2/spans"
prometheus:
endpoint: "0.0.0.0:9464"
processors:
batch:
queued_retry:
service:
pipelines:
traces:
receivers: [otlp]
exporters: [zipkin]
processors: [batch, queued_retry]
metrics:
receivers: [otlp]
exporters: [prometheus]
processors: [batch, queued_retry]
prometheus.yaml
global:
scrape_interval: 15s # Default is every 1 minute.
scrape_configs:
- job_name: 'collector'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['collector:9464']
Bu, opentelemetry-js ver ile düzgün çalışmalıdır. 0.10.2
İzlemeler için varsayılan bağlantı noktası 55680 ve ölçümler için 55681'dir
Daha önce yayınladığım bağlantı - orada her zaman en son güncel çalışma örneğini bulacaksınız: https://github.com/open-telemetry/opentelemetry-js/tree/master/examples/collector-exporter-node Web örneği için aynı docker'ı kullanabilir ve tüm çalışma örneklerini burada görebilirsiniz: https://github.com/open-telemetry/opentelemetry-js/tree/master/examples/tracer-web/
@ BObecny'nin yardımı için çok teşekkür ederim! Bu @ BObecny'nin cevabının tamamlayıcısıdır.
Jaeger ile entegrasyonla daha çok ilgilendiğim için. İşte tüm Jaeger, Zipkin, Prometheus ile kurulacak yapılandırma. Ve şimdi hem ön hem de arka uçta çalışıyor.
Önce hem ön uç hem de arka uç aynı ihracatçı kodunu kullanır:
import { CollectorTraceExporter } from '@opentelemetry/exporter-collector';
new SimpleSpanProcessor(
new CollectorTraceExporter({
serviceName: 'my-service',
})
)
docker-compose.yaml
version: "3"
services:
# Collector
collector:
image: otel/opentelemetry-collector:latest
command: ["--config=/conf/collector-config.yaml", "--log-level=DEBUG"]
volumes:
- ./collector-config.yaml:/conf/collector-config.yaml
ports:
- "9464:9464"
- "55680:55680"
- "55681:55681"
depends_on:
- jaeger-all-in-one
- zipkin-all-in-one
# Jaeger
jaeger-all-in-one:
image: jaegertracing/all-in-one:latest
ports:
- "16686:16686"
- "14268"
- "14250"
# Zipkin
zipkin-all-in-one:
image: openzipkin/zipkin:latest
ports:
- "9411:9411"
# Prometheus
prometheus:
container_name: prometheus
image: prom/prometheus:latest
volumes:
- ./prometheus.yaml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
collector-config.yaml
receivers:
otlp:
protocols:
grpc:
http:
exporters:
jaeger:
endpoint: jaeger-all-in-one:14250
insecure: true
zipkin:
endpoint: "http://zipkin-all-in-one:9411/api/v2/spans"
prometheus:
endpoint: "0.0.0.0:9464"
processors:
batch:
queued_retry:
service:
pipelines:
traces:
receivers: [otlp]
exporters: [zipkin]
processors: [batch, queued_retry]
metrics:
receivers: [otlp]
exporters: [prometheus]
processors: [batch, queued_retry]
prometheus.yaml
global:
scrape_interval: 15s # Default is every 1 minute.
scrape_configs:
- job_name: 'collector'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['collector:9464']