-
Notifications
You must be signed in to change notification settings - Fork 419
/
docker-compose.o11y.yml
117 lines (116 loc) · 3.66 KB
/
docker-compose.o11y.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
version: "3.9"
x-default-logging: &logging
driver: "json-file"
options:
max-size: "5m"
max-file: "2"
# x-loki-logging: &loki-logging
# driver: loki
# options:
# loki-url: 'http://loki:3100/api/prom/push'
services:
# ********************
# Telemetry Components
# ********************
# OpenTelemetry Collector
collector:
image: otel/opentelemetry-collector-contrib:0.105.0
container_name: collector
hostname: ${OTEL_COLLECTOR_HOST}
depends_on:
tempo:
condition: service_healthy
prometheus:
condition: service_healthy
deploy:
resources:
limits:
memory: 125M
restart: unless-stopped
command: [ "--config=/etc/otelcol-config.yml","--feature-gates=pkg.translator.prometheus.NormalizeName"]
volumes:
- ./docker/otel-collector/otelcol-config.yml:/etc/otelcol-config.yml
ports:
- "5555:5555" # OTLP over gRPC receiver
- "6666:6666" # OTLP over HTTP receiver
logging: *logging
networks:
- yas-network
prometheus:
image: prom/prometheus:v2.42.0
hostname: ${PROMETHEUS_SERVICE_HOST}
container_name: prometheus
command:
- --web.console.templates=/etc/prometheus/consoles
- --web.console.libraries=/etc/prometheus/console_libraries
- --web.enable-remote-write-receiver
- --storage.tsdb.retention.time=1h
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --web.enable-lifecycle
- --web.route-prefix=/
- --enable-feature=exemplar-storage
volumes:
- ./docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
ports:
- "${PROMETHEUS_SERVICE_PORT}:${PROMETHEUS_SERVICE_PORT}"
healthcheck:
interval: 5s
retries: 10
test: wget --no-verbose --tries=1 --spider http://localhost:9090/status || exit 1
logging: *logging
networks:
- yas-network
grafana:
image: grafana/grafana:10.0.0
container_name: grafana
extra_hosts: [ 'host.docker.internal:host-gateway' ]
volumes:
- ./docker/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources:ro
- ./docker/grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards:ro
environment:
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
- GF_AUTH_DISABLE_LOGIN_FORM=true
#ports:
# - "3000:3000" we don't need to expose the port since we are using a reverse proxy
healthcheck:
interval: 5s
retries: 10
test: wget --no-verbose --tries=1 --spider http://localhost:3000 || exit 1
logging: *logging
networks:
- yas-network
loki:
image: grafana/loki:3.1.0
container_name: loki
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
logging: *logging
networks:
- yas-network
tempo:
image: grafana/tempo:1.5.0
container_name: tempo
command: [ "-config.file=/etc/tempo.yaml", "-search.enabled=true"]
volumes:
- ./docker/tempo/tempo-local.yaml:/etc/tempo.yaml:ro
- ./tempo-data:/tmp/tempo
ports:
- "3200:3200"
# - "14268:14268" # jaeger ingest
# - "9411:9411" # zipkin
- "4317:4317" # otlp grpc ingest
# - "4318:4318" # otlp http ingest
healthcheck:
interval: 5s
retries: 10
test: wget --no-verbose --tries=1 --spider http://localhost:3200/status || exit 1
logging: *logging
networks:
- yas-network
networks:
yas-network:
name: yas-network
external: true