Skip to content

Commit 40605cc

Browse files
Merge pull request #5 from mohamad-liyaghi/monitoring
Monitoring
2 parents 1d29804 + 0c4b71b commit 40605cc

10 files changed

+324
-0
lines changed

Makefile

+5
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,15 @@ admin:
4646
local_confmap:
4747
kubectl create configmap food-anywhere-env --from-env-file=envs/.env.local \
4848
&& kubectl create configmap food-anywhere-env-file --from-file=.env=envs/.env.local
49+
&& kubectl create configmap prometheus-config --from-file=prometheus.yml=./prometheus/config.yaml
50+
&& kubectl create configmap promtail-config --from-file=promtail.yaml=./promtail/config.yaml
4951

5052
prod_confmap:
5153
kubectl create configmap food-anywhere-env --from-env-file=.envs/.env.prod \
5254
&& kubectl create configmap food-anywhere-env-file --from-file=.env=envs/.env.prod
55+
&& kubectl create configmap prometheus-config --from-file=prometheus.yml=./prometheus/config.yaml
56+
&& kubectl create configmap promtail-config --from-file=promtail.yaml=./promtail/config.yaml
57+
5358

5459
k8s:
5560
kubectl apply -f kubernetes/

docker-compose.base.yaml

+69
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ services:
2626
dockerfile: ./docker/Dockerfile
2727
volumes:
2828
- .:/src
29+
- ./logs/celery.log:/var/log/celery.log
2930
networks:
3031
- main
3132
depends_on:
@@ -40,6 +41,7 @@ services:
4041
dockerfile: ./docker/Dockerfile
4142
volumes:
4243
- .:/src
44+
- ./logs/celery.log:/var/log/celery-beat.log
4345
networks:
4446
- main
4547
depends_on:
@@ -83,6 +85,73 @@ services:
8385
- "25"
8486
networks:
8587
- main
88+
promtail:
89+
image: grafana/promtail
90+
container_name: food-anywhere-promtail
91+
volumes:
92+
- ./promtail/config.yaml:/etc/promtail/promtail.yaml
93+
- ./logs/:/var/log/
94+
command: --config.file=/etc/promtail/promtail.yaml
95+
depends_on:
96+
- backend
97+
networks:
98+
- main
99+
loki:
100+
image: grafana/loki
101+
container_name: food-anywhere-loki
102+
ports:
103+
- "3100:3100"
104+
depends_on:
105+
- promtail
106+
networks:
107+
- main
108+
node_exporter:
109+
image: quay.io/prometheus/node-exporter:latest
110+
container_name: food-anywhere-node-exporter
111+
restart: unless-stopped
112+
volumes:
113+
- /proc:/host/proc:ro
114+
- /sys:/host/sys:ro
115+
- /:/rootfs:ro
116+
- food_anywhere_node_exporter_data:/host
117+
command:
118+
- '--path.procfs=/host/proc'
119+
- '--path.rootfs=/rootfs'
120+
- '--path.sysfs=/host/sys'
121+
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
122+
expose:
123+
- 9100
124+
networks:
125+
- main
126+
prometheus:
127+
image: prom/prometheus
128+
container_name: food-anywhere-prometheus
129+
volumes:
130+
- ./prometheus/config.yaml:/etc/prometheus/prometheus.yml
131+
- food_anywhere_prometheus_data:/prometheus
132+
command:
133+
- '--config.file=/etc/prometheus/prometheus.yml'
134+
- '--storage.tsdb.path=/prometheus'
135+
- '--web.console.libraries=/etc/prometheus/console_libraries'
136+
- '--web.console.templates=/etc/prometheus/consoles'
137+
- '--web.enable-lifecycle'
138+
ports:
139+
- 9090:9090
140+
depends_on:
141+
- backend
142+
networks:
143+
- main
144+
grafana:
145+
image: grafana/grafana
146+
container_name: food-anywhere-grafana
147+
ports:
148+
- 3000:3000
149+
depends_on:
150+
- loki
151+
networks:
152+
- main
153+
volumes:
154+
- food_anywhere_grafana_data:/var/lib/grafana
86155

87156

88157
networks:

docker-compose.prod.yaml

+23
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,32 @@ services:
3737
extends:
3838
service: redis
3939
file: docker-compose.base.yaml
40+
promtail:
41+
extends:
42+
service: promtail
43+
file: docker-compose.base.yaml
44+
loki:
45+
extends:
46+
service: loki
47+
file: docker-compose.base.yaml
48+
grafana:
49+
extends:
50+
service: grafana
51+
file: docker-compose.base.yaml
52+
node_exporter:
53+
extends:
54+
service: node_exporter
55+
file: docker-compose.base.yaml
56+
prometheus:
57+
extends:
58+
service: prometheus
59+
file: docker-compose.base.yaml
4060

4161
networks:
4262
main:
4363

4464
volumes:
4565
food_anywhere_postgres_data:
66+
food_anywhere_grafana_data:
67+
food_anywhere_node_exporter_data:
68+
food_anywhere_prometheus_data:

docker-compose.yaml

+23
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,32 @@ services:
4141
extends:
4242
service: smtp4dev
4343
file: docker-compose.base.yaml
44+
promtail:
45+
extends:
46+
service: promtail
47+
file: docker-compose.base.yaml
48+
loki:
49+
extends:
50+
service: loki
51+
file: docker-compose.base.yaml
52+
node_exporter:
53+
extends:
54+
service: node_exporter
55+
file: docker-compose.base.yaml
56+
grafana:
57+
extends:
58+
service: grafana
59+
file: docker-compose.base.yaml
60+
prometheus:
61+
extends:
62+
service: prometheus
63+
file: docker-compose.base.yaml
4464

4565
networks:
4666
main:
4767

4868
volumes:
4969
food_anywhere_postgres_data:
70+
food_anywhere_grafana_data:
71+
food_anywhere_node_exporter_data:
72+
food_anywhere_prometheus_data:

kubernetes/loki.yaml

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: food-anywhere-loki-dp
5+
labels:
6+
app: food-anywhere-loki
7+
spec:
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
app: food-anywhere-loki
12+
template:
13+
metadata:
14+
labels:
15+
app: food-anywhere-loki
16+
spec:
17+
containers:
18+
- name: loki
19+
image: grafana/loki
20+
ports:
21+
- containerPort: 3100
22+
---
23+
apiVersion: v1
24+
kind: Service
25+
metadata:
26+
name: loki
27+
spec:
28+
selector:
29+
app: food-anywhere-loki
30+
ports:
31+
- protocol: TCP
32+
port: 3100
33+
targetPort: 3100

kubernetes/node_exporter.yaml

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: food-anywhere-node-exporter-dp
5+
labels:
6+
app: food-anywhere-node-exporter
7+
spec:
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
app: food-anywhere-node-exporter
12+
template:
13+
metadata:
14+
labels:
15+
app: food-anywhere-node-exporter
16+
spec:
17+
containers:
18+
- name: node-exporter
19+
image: quay.io/prometheus/node-exporter:latest
20+
ports:
21+
- containerPort: 9100
22+
23+
---
24+
apiVersion: v1
25+
kind: Service
26+
metadata:
27+
name: node-exporter
28+
spec:
29+
selector:
30+
app: food-anywhere-node-exporter
31+
ports:
32+
- protocol: TCP
33+
port: 9100
34+
targetPort: 9100

kubernetes/prometheus.yaml

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: food-anywhere-prometheus-dp
5+
labels:
6+
app: food-anywhere-prometheus
7+
spec:
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
app: food-anywhere-prometheus
12+
template:
13+
metadata:
14+
labels:
15+
app: food-anywhere-prometheus
16+
spec:
17+
containers:
18+
- name: prometheus
19+
image: prom/prometheus
20+
ports:
21+
- containerPort: 9090
22+
volumeMounts:
23+
- name: prometheus-config
24+
mountPath: /etc/prometheus/prometheus.yml
25+
subPath: prometheus.yml
26+
volumes:
27+
- name: prometheus-config
28+
configMap:
29+
name: prometheus-config
30+
31+
---
32+
apiVersion: v1
33+
kind: Service
34+
metadata:
35+
name: prometheus
36+
spec:
37+
selector:
38+
app: food-anywhere-prometheus
39+
ports:
40+
- protocol: TCP
41+
port: 9090
42+
targetPort: 9090

kubernetes/promtail.yaml

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: food-anywhere-promtail-dp
5+
labels:
6+
app: food-anywhere-promtail
7+
spec:
8+
replicas: 1
9+
selector:
10+
matchLabels:
11+
app: food-anywhere-promtail
12+
template:
13+
metadata:
14+
labels:
15+
app: food-anywhere-promtail
16+
spec:
17+
containers:
18+
- name: promtail
19+
image: grafana/promtail
20+
args:
21+
- --config.file=/etc/promtail/promtail.yaml
22+
volumeMounts:
23+
- name: promtail-config
24+
mountPath: /etc/promtail/promtail.yaml
25+
subPath: promtail.yaml
26+
volumes:
27+
- name: promtail-config
28+
configMap:
29+
name: promtail-config
30+
---
31+
apiVersion: v1
32+
kind: Service
33+
metadata:
34+
name: promtail
35+
spec:
36+
selector:
37+
app: food-anywhere-promtail
38+
ports:
39+
- protocol: TCP
40+
port: 3100
41+
targetPort: 3100

prometheus/config.yaml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
global:
2+
scrape_interval: 1m
3+
4+
scrape_configs:
5+
- job_name: 'prometheus'
6+
scrape_interval: 1m
7+
static_configs:
8+
- targets: ['prometheus:9090']
9+
10+
- job_name: 'node'
11+
static_configs:
12+
- targets: [ 'node_exporter:9100' ]

promtail/config.yaml

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
server:
2+
http_listen_port: 9080
3+
grpc_listen_port: 0
4+
5+
positions:
6+
filename: /tmp/positions.yaml
7+
8+
clients:
9+
- url: http://loki:3100/loki/api/v1/push
10+
11+
scrape_configs:
12+
- job_name: info-log-scraper
13+
static_configs:
14+
- targets:
15+
- backend
16+
labels:
17+
__path__: "/var/log/info.log"
18+
app: backend
19+
20+
- job_name: critical-log-scraper
21+
static_configs:
22+
- targets:
23+
- backend
24+
labels:
25+
__path__: "/var/log/critical.log"
26+
app: backend
27+
28+
- job_name: celery-log-scraper
29+
static_configs:
30+
- targets:
31+
- celery
32+
labels:
33+
__path__: "/var/log/celery.log"
34+
app: celery
35+
36+
- job_name: celery-beat-log-scraper
37+
static_configs:
38+
- targets:
39+
- celery-beat
40+
labels:
41+
__path__: "/var/log/celery-beat.log"
42+
app: celery-beat

0 commit comments

Comments
 (0)