Skip to content

Commit 6558e99

Browse files
committed
add prometheus, grafana, caddy, alertmanager
1 parent 7493975 commit 6558e99

16 files changed

Lines changed: 6797 additions & 3 deletions

File tree

.env.sample

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,10 @@ RMQ_PORT=5672
1616
RABBITMQ_DEFAULT_USER=guest
1717
RABBITMQ_DEFAULT_PASS=guest
1818
# ==================ORIGINS==================
19-
CURRENT_ORIGIN=http://locahost:8080
19+
CURRENT_ORIGIN=http://locahost:8080
20+
# ==================GRAFANA==================
21+
GF_SECURITY_ADMIN_USER=admin
22+
GF_SECURITY_ADMIN_PASSWORD=admin
23+
# ==================CADDY==================
24+
ADMIN_USER=admin
25+
ADMIN_PASSWORD=admin

app_includes/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
from .logs_errors import register_errors
22
from .middlewares import register_middlewares
3+
from .prometheus import register_prometheus
34

45

56
__all__ = ('register_errors',
67
'register_middlewares',
8+
'register_prometheus',
79
)

app_includes/prometheus.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from fastapi import FastAPI
2+
from prometheus_fastapi_instrumentator import Instrumentator
3+
4+
5+
def register_prometheus(app: FastAPI) -> None:
6+
"""
7+
Регистрация Промитеуса
8+
"""
9+
Instrumentator().instrument(app=app).expose(app=app)

caddy/Caddyfile

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
:9090 {
2+
basicauth / {$ADMIN_USER} {$ADMIN_PASSWORD}
3+
proxy / prometheus:9090 {
4+
transparent
5+
}
6+
7+
errors stderr
8+
tls off
9+
}
10+
11+
:9093 {
12+
basicauth / {$ADMIN_USER} {$ADMIN_PASSWORD}
13+
proxy / alertmanager:9093 {
14+
transparent
15+
}
16+
17+
errors stderr
18+
tls off
19+
}
20+
21+
:3000 {
22+
proxy / grafana:3000 {
23+
transparent
24+
websocket
25+
}
26+
27+
errors stderr
28+
tls off
29+
}

docker-compose.yml

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,85 @@ services:
6868
env_file:
6969
- .env
7070

71+
prometheus:
72+
image: prom/prometheus
73+
container_name: prometheus
74+
volumes:
75+
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
76+
- prometheus-data:/prometheus
77+
command:
78+
- '--config.file=/etc/prometheus/prometheus.yml'
79+
- '--storage.tsdb.path=/prometheus'
80+
- '--web.console.libraries=/etc/prometheus/console_libraries'
81+
- '--web.console.templates=/etc/prometheus/consoles'
82+
- '--storage.tsdb.retention.time=200h'
83+
- '--web.enable-lifecycle'
84+
restart: unless-stopped
85+
expose:
86+
- 9090
87+
networks:
88+
- monitor-net
89+
labels:
90+
org.label-schema.group: "monitoring"
91+
92+
alertmanager:
93+
image: prom/alertmanager:v0.20.0
94+
container_name: alertmanager
95+
volumes:
96+
- ./docker/alertmanager:/etc/alertmanager
97+
command:
98+
- '--config.file=/etc/alertmanager/config.yml'
99+
- '--storage.path=/alertmanager'
100+
restart: unless-stopped
101+
expose:
102+
- 9093
103+
networks:
104+
- monitor-net
105+
labels:
106+
org.label-schema.group: "monitoring"
107+
108+
grafana:
109+
image: grafana/grafana
110+
container_name: grafana
111+
volumes:
112+
- grafana-data:/var/lib/grafana
113+
- ./grafana/provisioning:/etc/grafana/provisioning
114+
environment:
115+
- GF_USERS_ALLOW_SIGN_UP=false
116+
env_file:
117+
- .env
118+
restart: unless-stopped
119+
expose:
120+
- 3000
121+
networks:
122+
- monitor-net
123+
labels:
124+
org.label-schema.group: "monitoring"
125+
126+
caddy:
127+
image: stefanprodan/caddy
128+
container_name: caddy
129+
ports:
130+
- "3000:3000"
131+
- "9090:9090"
132+
- "9093:9093"
133+
volumes:
134+
- ./caddy:/etc/caddy
135+
environment:
136+
- ADMIN_USER=${ADMIN_USER}
137+
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
138+
restart: unless-stopped
139+
networks:
140+
- monitor-net
141+
labels:
142+
org.label-schema.group: "monitoring"
143+
71144
volumes:
72145
postgres_data:
73146
rabbitmq-data:
147+
prometheus-data: {}
148+
grafana-data: {}
149+
150+
networks:
151+
monitor-net:
152+
driver: bridge

docker/alertmanager/config.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
route:
2+
receiver: 'slack'
3+
4+
receivers:
5+
- name: 'slack'
6+
slack_configs:
7+
- send_resolved: true
8+
text: "{{ .CommonAnnotations.description }}"
9+
username: 'Prometheus'
10+
channel: '#prometheus'
11+
api_url: 'https://hooks.slack.com/services/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'
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: 1
2+
3+
providers:
4+
- name: 'Prometheus'
5+
orgId: 1
6+
folder: ''
7+
type: file
8+
disableDeletion: false
9+
editable: true
10+
allowUiUpdates: true
11+
options:
12+
path: /etc/grafana/provisioning/dashboards

0 commit comments

Comments
 (0)