-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.monitor.yaml
235 lines (223 loc) · 6.67 KB
/
docker-compose.monitor.yaml
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
#-------------------------------------------------------------
# Docker compose related to monitoring services
#-------------------------------------------------------------
version: '3.8'
services:
# Portainer CE
# Managing containers via nice web UI
portainer:
container_name: portainer
image: portainer/portainer-ce
restart: always
ports:
- "9000:9000/tcp"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${SELF_HOME_DIR}/portainer:/data
env_file:
- .env
# Duplicati
# Free backup software to store encrypted backups online
# https://github.com/duplicati/duplicati
duplicati:
container_name: duplicati
image: lscr.io/linuxserver/duplicati
env_file:
- .env
volumes:
- ${SELF_HOME_DIR}/duplicati/config/:/config
- ${SELF_HOME_DIR}:/source
ports:
- 8200:8200
restart: unless-stopped
# Grafana
# Grafana allows you to query, visualize,
# alert on and understand your metrics no matter where they are stored.
# https://github.com/grafana/grafana
grafana:
container_name: grafana
image: grafana/grafana
volumes:
- ${SELF_HOME_DIR}/grafana/data:/var/lib/grafana
- ${SELF_HOME_DIR}/grafana/provisioning:/etc/grafana/provisioning
restart: unless-stopped
user: "104"
expose:
- 3000
env_file:
- .env
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
# Prometheus
# Systems and service monitoring system.
# It collects metrics from configured targets at given intervals,
# evaluates rule expressions, displays the results,
# and can trigger alerts when specified conditions are observed.
# https://github.com/prometheus/prometheus
prometheus:
container_name: prometheus
image: prom/prometheus:v2.17.1
volumes:
- ${SELF_HOME_DIR}/prometheus:/etc/prometheus
- ${SELF_HOME_DIR}/prometheus/data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention.time=200h'
- '--web.enable-lifecycle'
restart: unless-stopped
expose:
- 9090
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
# Alert Manager
# It handles alerts sent by client applications such as the Prometheus server.
# It takes care of deduplicating, grouping, and
# routing them to the correct receiver integration such as email,
# PagerDuty, or OpsGenie.
# It also takes care of silencing and inhibition of alerts.
# https://prometheus.io/docs/alerting/latest/alertmanager/
alertmanager:
container_name: alertmanager
image: prom/alertmanager:v0.20.0
volumes:
- ${SELF_HOME_DIR}/alertmanager:/etc/alertmanager
command:
- '--config.file=/etc/alertmanager/config.yml'
- '--storage.path=/alertmanager'
restart: unless-stopped
expose:
- 9093
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
# Node Exporter
# Prometheus exporter for hardware and OS metrics exposed by *NIX kernels,
# written in Go with pluggable metric collectors.
# https://github.com/prometheus/node_exporter
nodeexporter:
image: prom/node-exporter:latest
container_name: nodeexporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
- /:/host:ro
command:
- '--path.rootfs=/host'
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
restart: unless-stopped
expose:
- 9100
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
# cAdvisor (Container Advisor)
# Provides container users an understanding of the resource usage
# and performance characteristics of their running containers
# https://github.com/google/cadvisor
cadvisor:
image: gcr.io/cadvisor/cadvisor
container_name: cadvisor
privileged: true
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /etc/machine-id:/etc/machine-id:ro
- /var/lib/dbus/machine-id:/var/lib/dbus/machine-id:ro
restart: unless-stopped
expose:
- 8080
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
# Prometheus Pushgateway
# The Prometheus Pushgateway exists to allow ephemeral and batch jobs to
# expose their metrics to Prometheus.
# Since these kinds of jobs may not exist long enough to be scraped,
# they can instead push their metrics to a Pushgateway.
# The Pushgateway then exposes these metrics to Prometheus.
# https://github.com/prometheus/pushgateway
pushgateway:
container_name: pushgateway
image: prom/pushgateway
restart: unless-stopped
expose:
- 9091
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
# Caddy 2
# Is a powerful, enterprise-ready, open source web server
# with automatic HTTPS written in Go.
# https://github.com/caddyserver/caddy-docker
caddy:
image: stefanprodan/caddy
container_name: caddy
ports:
- "3000:3000"
- "9090:9090"
- "9093:9093"
- "9091:9091"
volumes:
- ${SELF_HOME_DIR}/caddy:/etc/caddy
restart: unless-stopped
networks:
- monitor-net
env_file:
- .env
labels:
org.label-schema.group: "monitoring"
# Uptime Kuma
# Uptime Kuma is an easy-to-use self-hosted monitoring tool.
# https://github.com/louislam/uptime-kuma
uptime-kuma:
container_name: uptime-kuma
hostname: uptime-kuma
image: louislam/uptime-kuma
restart: always
ports:
- 3005:3001
dns:
- 1.1.1.1
- 8.8.8.8
volumes:
- ${SELF_HOME_DIR}/uptimekuma:/app/data
env_file:
- .env
# Diun
# Docker Image Update Notifier is a CLI application written in Go and delivered as a single executable (and a Docker image)
# to receive notifications when a Docker image is updated on a Docker registry.
# https://crazymax.dev/diun/
diun:
container_name: diun
image: crazymax/diun:latest
command: serve
volumes:
- "${SELF_HOME_DIR}/diun/data:/data"
- /var/run/docker.sock:/var/run/docker.sock
env_file:
- .env
environment:
- "DIUN_WATCH_SCHEDULE=0 19 * * FRI,SAT,SUN"
- "LOG_LEVEL=info"
- "LOG_JSON=false"
restart: always
networks:
monitor-net:
driver: bridge