feat(tracing): Implement Jaeger/OpenTracing provider with configuration options
- Added Punycode encoding implementation for cookie handling. - Introduced serialization for cookie jar with JSON support. - Created a comprehensive README for the tracing provider, detailing configuration and usage. - Developed a configuration structure for tracing, including sampler and reporter settings. - Implemented the provider logic to initialize Jaeger tracer with logging capabilities. - Ensured graceful shutdown of the tracer on application exit.
This commit is contained in:
153
templates/providers/otel/docker/docker-compose.yaml.raw
Normal file
153
templates/providers/otel/docker/docker-compose.yaml.raw
Normal file
@@ -0,0 +1,153 @@
|
||||
# Copyright The OpenTelemetry Authors
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
x-default-logging: &logging
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "5m"
|
||||
max-file: "2"
|
||||
tag: "{{.Name}}"
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: opentelemetry-demo
|
||||
driver: bridge
|
||||
|
||||
services:
|
||||
# ********************
|
||||
# Telemetry Components
|
||||
# ********************
|
||||
# Jaeger
|
||||
jaeger:
|
||||
image: ${JAEGERTRACING_IMAGE}
|
||||
container_name: jaeger
|
||||
command:
|
||||
- "--memory.max-traces=5000"
|
||||
- "--query.base-path=/jaeger/ui"
|
||||
- "--prometheus.server-url=http://${PROMETHEUS_ADDR}"
|
||||
- "--prometheus.query.normalize-calls=true"
|
||||
- "--prometheus.query.normalize-duration=true"
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 400M
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${JAEGER_SERVICE_PORT}:${JAEGER_SERVICE_PORT}" # Jaeger UI
|
||||
# - "${OTEL_COLLECTOR_PORT_GRPC}"
|
||||
environment:
|
||||
- METRICS_STORAGE_TYPE=prometheus
|
||||
logging: *logging
|
||||
|
||||
# Grafana
|
||||
grafana:
|
||||
image: ${GRAFANA_IMAGE}
|
||||
container_name: grafana
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 100M
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- "GF_INSTALL_PLUGINS=grafana-opensearch-datasource"
|
||||
volumes:
|
||||
- ./grafana/grafana.ini:/etc/grafana/grafana.ini
|
||||
- ./grafana/provisioning/:/etc/grafana/provisioning/
|
||||
ports:
|
||||
- "${GRAFANA_SERVICE_PORT}:${GRAFANA_SERVICE_PORT}"
|
||||
logging: *logging
|
||||
|
||||
# OpenTelemetry Collector
|
||||
otel-collector:
|
||||
image: ${COLLECTOR_CONTRIB_IMAGE}
|
||||
container_name: otel-collector
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 200M
|
||||
restart: unless-stopped
|
||||
command:
|
||||
[
|
||||
"--config=/etc/otelcol-config.yml",
|
||||
"--config=/etc/otelcol-config-extras.yml",
|
||||
]
|
||||
user: 0:0
|
||||
volumes:
|
||||
- ${HOST_FILESYSTEM}:/hostfs:ro
|
||||
- ${DOCKER_SOCK}:/var/run/docker.sock:ro
|
||||
- ${OTEL_COLLECTOR_CONFIG}:/etc/otelcol-config.yml
|
||||
- ${OTEL_COLLECTOR_CONFIG_EXTRAS}:/etc/otelcol-config-extras.yml
|
||||
ports:
|
||||
- "${OTEL_COLLECTOR_PORT_GRPC}:${OTEL_COLLECTOR_PORT_GRPC}"
|
||||
- "${OTEL_COLLECTOR_PORT_HTTP}:${OTEL_COLLECTOR_PORT_HTTP}"
|
||||
depends_on:
|
||||
jaeger:
|
||||
condition: service_started
|
||||
opensearch:
|
||||
condition: service_healthy
|
||||
logging: *logging
|
||||
environment:
|
||||
- ENVOY_PORT
|
||||
- HOST_FILESYSTEM
|
||||
- OTEL_COLLECTOR_HOST
|
||||
- OTEL_COLLECTOR_PORT_GRPC
|
||||
- OTEL_COLLECTOR_PORT_HTTP
|
||||
|
||||
# Prometheus
|
||||
prometheus:
|
||||
image: ${PROMETHEUS_IMAGE}
|
||||
container_name: prometheus
|
||||
command:
|
||||
- --web.console.templates=/etc/prometheus/consoles
|
||||
- --web.console.libraries=/etc/prometheus/console_libraries
|
||||
- --storage.tsdb.retention.time=1h
|
||||
- --config.file=/etc/prometheus/prometheus-config.yaml
|
||||
- --storage.tsdb.path=/prometheus
|
||||
- --web.enable-lifecycle
|
||||
- --web.route-prefix=/
|
||||
- --web.enable-otlp-receiver
|
||||
- --enable-feature=exemplar-storage
|
||||
volumes:
|
||||
- ./prometheus/prometheus-config.yaml:/etc/prometheus/prometheus-config.yaml
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 300M
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${PROMETHEUS_SERVICE_PORT}:${PROMETHEUS_SERVICE_PORT}"
|
||||
logging: *logging
|
||||
|
||||
# OpenSearch
|
||||
opensearch:
|
||||
image: ${OPENSEARCH_IMAGE}
|
||||
container_name: opensearch
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 1G
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- cluster.name=demo-cluster
|
||||
- node.name=demo-node
|
||||
- bootstrap.memory_lock=true
|
||||
- discovery.type=single-node
|
||||
- OPENSEARCH_JAVA_OPTS=-Xms300m -Xmx300m
|
||||
- DISABLE_INSTALL_DEMO_CONFIG=true
|
||||
- DISABLE_SECURITY_PLUGIN=true
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
nofile:
|
||||
soft: 65536
|
||||
hard: 65536
|
||||
ports:
|
||||
- "9200:9200"
|
||||
healthcheck:
|
||||
test: curl -s http://localhost:9200/_cluster/health | grep -E '"status":"(green|yellow)"'
|
||||
start_period: 10s
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
logging: *logging
|
||||
Reference in New Issue
Block a user