44 prometheus_data: {}
55 grafana_data: {}
66 alertmanager_data: {}
7+ prometheus_data_cadvisor: {}
78
89networks:
910 internal:
@@ -23,6 +24,8 @@ configs:
2324 file: ./node-exporter/docker-entrypoint.sh
2425 prometheus_config:
2526 file: ./prometheus/prometheus.yml
27+ prometheus_config_cadvisor:
28+ file: ./prometheus/prometheus-cadvisor.yml
2629 prometheus_rules:
2730 file: ./prometheus/prometheus.rules.yml
2831 grafana_image_renderer_config:
@@ -32,8 +35,9 @@ configs:
3235 smokeping_prober_config:
3336 file: ./smokeping_prober_config.yaml
3437services:
35- prometheus:
36- image: prom/prometheus:v2.40.7
38+ prometheus-catchall:
39+ hostname: "{% raw %} {{.Service.Name}}{% endraw %} "
40+ image: prom/prometheus:v2.44.0
3741 volumes:
3842 - prometheus_data:/prometheus
3943 - /var/run/docker.sock:/var/run/docker.sock:ro
@@ -63,20 +67,64 @@ services:
6367 - traefik.enable=true
6468 - traefik.docker.network=${PUBLIC_NETWORK}
6569 # direct access through port
66- - traefik.http.services.prometheus .loadbalancer.server.port=${MONITORING_PROMETHEUS_PORT}
67- - traefik.http.routers.prometheus .rule=Host(`${MONITORING_DOMAIN}`) && PathPrefix(`/prometheus`)
68- - traefik.http.routers.prometheus .entrypoints=https
69- - traefik.http.routers.prometheus .tls=true
70- - traefik.http.middlewares.prometheus_stripprefixregex .stripprefixregex.regex=^/prometheus
71- - traefik.http.routers.prometheus .middlewares=ops_whitelist_ips@docker, ops_auth@docker, ops_gzip@docker, prometheus_stripprefixregex
72- - prometheus-job=prometheus
70+ - traefik.http.services.prometheuscatchall .loadbalancer.server.port=${MONITORING_PROMETHEUS_PORT}
71+ - traefik.http.routers.prometheuscatchall .rule=Host(`${MONITORING_DOMAIN}`) && PathPrefix(`/prometheus`)
72+ - traefik.http.routers.prometheuscatchall .entrypoints=https
73+ - traefik.http.routers.prometheuscatchall .tls=true
74+ - traefik.http.middlewares.prometheuscatchall_stripprefixregex .stripprefixregex.regex=^/prometheus
75+ - traefik.http.routers.prometheuscatchall .middlewares=ops_whitelist_ips@docker, ops_auth@docker, ops_gzip@docker, prometheuscatchall_stripprefixregex
76+ - prometheus-job=prometheus-catchall
7377 - prometheus-port=${MONITORING_PROMETHEUS_PORT}
7478 resources:
7579 limits:
7680 memory: 4096M
7781 reservations:
78- memory: 64M
79-
82+ memory: 4096M
83+ prometheus-cadvisor:
84+ hostname: "{% raw %} {{.Service.Name}}{% endraw %} "
85+ image: prom/prometheus:v2.44.0
86+ volumes:
87+ - prometheus_data_cadvisor:/prometheus
88+ - /var/run/docker.sock:/var/run/docker.sock:ro
89+ user: root # only user root can use the docker socket
90+ configs:
91+ - source: prometheus_config_cadvisor
92+ target: /etc/prometheus/prometheus.yml
93+ - source: prometheus_rules
94+ target: /etc/prometheus/prometheus.rules.yml
95+ command:
96+ - "--config.file=/etc/prometheus/prometheus.yml"
97+ - "--storage.tsdb.path=/prometheus"
98+ - "--storage.tsdb.retention=30d"
99+ - "--web.console.libraries=/usr/share/prometheus/console_libraries"
100+ - "--web.console.templates=/usr/share/prometheus/consoles"
101+ - "--web.external-url=https://${MONITORING_DOMAIN}/prometheus-cadvisor/"
102+ - "--web.route-prefix=/"
103+ - "--storage.tsdb.allow-overlapping-blocks" # via https://jessicagreben.medium.com/prometheus-fill-in-data-for-new-recording-rules-30a14ccb8467
104+ #- "--web.enable-admin-api" This allows messing with prometheus using its API from the CLI. Disabled for security reasons by default.
105+ networks:
106+ - internal
107+ - monitored
108+ - public
109+ extra_hosts: []
110+ deploy:
111+ labels:
112+ - traefik.enable=true
113+ - traefik.docker.network=${PUBLIC_NETWORK}
114+ # direct access through port
115+ - traefik.http.services.prometheuscadvisor.loadbalancer.server.port=${MONITORING_PROMETHEUS_PORT}
116+ - traefik.http.routers.prometheuscadvisor.rule=Host(`${MONITORING_DOMAIN}`) && PathPrefix(`/prometheuscadvisor`)
117+ - traefik.http.routers.prometheuscadvisor.entrypoints=https
118+ - traefik.http.routers.prometheuscadvisor.tls=true
119+ - traefik.http.middlewares.prometheuscadvisor_stripprefixregex.stripprefixregex.regex=^/prometheuscadvisor
120+ - traefik.http.routers.prometheuscadvisor.middlewares=ops_whitelist_ips@docker, ops_auth@docker, ops_gzip@docker, prometheuscadvisor_stripprefixregex
121+ - prometheus-job=prometheus-cadvisor
122+ - prometheus-port=${MONITORING_PROMETHEUS_PORT}
123+ resources:
124+ limits:
125+ memory: 4096M
126+ reservations:
127+ memory: 4096M
80128 node-exporter:
81129 image: prom/node-exporter:v0.18.1
82130 volumes:
@@ -156,7 +204,7 @@ services:
156204 memory: 64M
157205
158206 cadvisor-exporter:
159- image: gcr.io/cadvisor/cadvisor:v0.46 .0
207+ image: gcr.io/cadvisor/cadvisor:v0.47 .0
160208 volumes:
161209 - /:/rootfs:ro
162210 - /var/run:/var/run:ro
0 commit comments