Files
gophercon-africa-2024/compose.yaml
T
Rodney Osodo 48c349a600 WIP: test observability with grafana
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
2024-10-17 22:23:24 +03:00

139 lines
3.4 KiB
YAML

name: gophercon
networks:
gophercon-net:
driver: bridge
volumes:
prometheus-volume:
tempo-volume:
services:
gophercon:
image: ghcr.io/rodneyosodo/gophercon-africa-2024:latest
container_name: gophercon
restart: unless-stopped
ports:
- ${GOPHERCON_PORT}:${GOPHERCON_PORT}
- ${GOPHERCON_PROMETHEUS_PORT}:${GOPHERCON_PROMETHEUS_PORT}
expose:
- ${GOPHERCON_PORT}
- ${GOPHERCON_PROMETHEUS_PORT}
networks:
- gophercon-net
environment:
GOPHERCON_LOG_LEVEL: ${GOPHERCON_LOG_LEVEL}
GOPHERCON_ADDR: ${GOPHERCON_ADDR}
GOPHERCON_PROMETHEUS_ENDPOINT: ${GOPHERCON_PROMETHEUS_ENDPOINT}
GOPHERCON_READ_TIMEOUT: ${GOPHERCON_READ_TIMEOUT}
GOPHERCON_WRITE_TIMEOUT: ${GOPHERCON_WRITE_TIMEOUT}
GOPHERCON_OTEL_URL: ${GOPHERCON_OTEL_URL}
GOPHERCON_TRACE_RATIO: ${GOPHERCON_TRACE_RATIO}
GOPHERCON_LOKI_URL: ${GOPHERCON_LOKI_URL}
GOPHERCON_PYROSCOPE_URL: ${GOPHERCON_PYROSCOPE_URL}
loki:
image: grafana/loki:2.9.8
container_name: loki
restart: on-failure
ports:
- ${LOKI_PORT}:${LOKI_PORT}
command: "-config.file=/etc/loki/config.yaml -target=all"
volumes:
- ./loki/loki-config.yaml:/etc/loki/config.yaml
networks:
- gophercon-net
prometheus:
image: prom/prometheus:v2.54.1
container_name: prometheus
restart: on-failure
command:
- --web.enable-remote-write-receiver
- --enable-feature=native-histograms
- --config.file=/etc/prometheus/prometheus.yml
ports:
- ${PROMETHEUS_PORT}:9090
networks:
- gophercon-net
volumes:
- type: bind
source: ./prometheus/prometheus.yaml
target: /etc/prometheus/prometheus.yml
- prometheus-volume:/prometheus
tempo-init:
image: grafana/tempo:2.6.0
container_name: tempo-init
user: root
entrypoint:
- "chown"
- "10001:10001"
- "/var/tempo"
volumes:
- tempo-volume:/var/tempo
networks:
- gophercon-net
memcached:
image: memcached:1.6.29
container_name: memcached
restart: on-failure
ports:
- ${TEMPO_MEMCACHED_PORT}:11211
environment:
- MEMCACHED_MAX_MEMORY=${MEMCACHED_MAX_MEMORY}
- MEMCACHED_THREADS=${MEMCACHED_THREADS}
networks:
- gophercon-net
tempo:
image: grafana/tempo:2.6.0
container_name: tempo
command: ["-config.file=/etc/tempo.yaml"]
restart: on-failure
depends_on:
- tempo-init
- memcached
ports:
- ${TEMPO_PORT}:3200
- ${TEMPO_OLTP_HTTP}:4318
volumes:
- ./tempo/tempo.yaml:/etc/tempo.yaml
- tempo-volume:/var/tempo
networks:
- gophercon-net
grafana:
image: grafana/grafana:11.2.0
container_name: grafana
restart: on-failure
depends_on:
- prometheus
ports:
- ${GRAFANA_PORT}:3000
environment:
- GF_LOG_LEVEL=ERROR
- GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER}
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD}
volumes:
- ./grafana:/etc/grafana/provisioning/
networks:
- gophercon-net
pyroscope:
image: grafana/pyroscope:latest
container_name: pyroscope
restart: on-failure
environment:
JAEGER_AGENT_HOST: tempo
JAEGER_SAMPLER_TYPE: const
JAEGER_SAMPLER_PARAM: 1
command: ["-config.file=/etc/pyroscope.yml"]
ports:
- "4040:4040"
volumes:
- ./pyroscope/pyroscope.yml:/etc/pyroscope.yml
networks:
- gophercon-net