- 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.
154 lines
4.0 KiB
Plaintext
154 lines
4.0 KiB
Plaintext
# 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
|