Repository navigation
Expand file tree
/
Copy pathdocker-compose.monitoring.yml
More file actions
87 lines (80 loc) · 3.21 KB
/
Copy pathdocker-compose.monitoring.yml
File metadata and controls
87 lines (80 loc) · 3.21 KB
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
# Runs on Docker Desktop (Windows). The backend on the EVE-NG VM publishes to the
# EXTERNAL listener <KAFKA_ADVERTISED_HOST>:9094. Set KAFKA_ADVERTISED_HOST in .env
# to the Windows IP that the EVE VM can reach (e.g. the VMware VMnet adapter IP).
# docker compose -f docker-compose.monitoring.yml up -d --build
services:
kafka:
image: apache/kafka:3.8.0 # single-node KRaft (no ZooKeeper)
container_name: bgp-kafka
ports: ["9094:9094"]
environment:
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: broker,controller
KAFKA_LISTENERS: INTERNAL://:29092,EXTERNAL://:9094,CONTROLLER://:9093
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:29092,EXTERNAL://${KAFKA_ADVERTISED_HOST:-localhost}:9094
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_LOG_RETENTION_HOURS: 72
volumes: [kafka_data:/var/lib/kafka/data]
healthcheck:
test: ["CMD-SHELL", "/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:29092 --list"]
interval: 10s
retries: 12
kafka-init:
image: apache/kafka:3.8.0
depends_on: {kafka: {condition: service_healthy}}
restart: "no"
entrypoint: ["/bin/sh", "-c"]
command:
- |
for t in bgp.neighbor.events bgp.neighbor.snapshots bgp.config.changes; do
/opt/kafka/bin/kafka-topics.sh --bootstrap-server kafka:29092 --create --if-not-exists --topic $$t --partitions 3 --replication-factor 1
done
exporter:
build: ./monitoring/exporter
container_name: bgp-exporter
depends_on: {kafka-init: {condition: service_completed_successfully}}
environment:
KAFKA_BOOTSTRAP: kafka:29092
restart: unless-stopped
prometheus:
image: prom/prometheus:v2.55.1
container_name: bgp-prometheus
ports: ["9090:9090"]
volumes:
- ./monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./monitoring/prometheus/alerts.yml:/etc/prometheus/alerts.yml:ro
- prom_data:/prometheus
depends_on: [exporter]
grafana:
image: grafana/grafana:11.3.0
container_name: bgp-grafana
ports: ["3000:3000"]
environment:
GF_SECURITY_ALLOW_EMBEDDING: "true"
GF_AUTH_ANONYMOUS_ENABLED: "true"
GF_AUTH_ANONYMOUS_ORG_ROLE: Viewer
GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH: /var/lib/grafana/dashboards/bgp.json
volumes:
- ./monitoring/grafana/provisioning:/etc/grafana/provisioning:ro
- ./monitoring/grafana/dashboards:/var/lib/grafana/dashboards:ro
- grafana_data:/var/lib/grafana
depends_on: [prometheus]
kafka-ui:
image: provectuslabs/kafka-ui:v0.7.2
container_name: bgp-kafka-ui
ports: ["8080:8080"]
environment:
KAFKA_CLUSTERS_0_NAME: bgp-lab
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092
depends_on: {kafka: {condition: service_healthy}}
volumes:
kafka_data:
prom_data:
grafana_data: