Skip to content

Commit 02acbb0

Browse files
committed
feat: centralize monitoring in one node.
1 parent 6f7ebcd commit 02acbb0

34 files changed

Lines changed: 414 additions & 213 deletions

.github/workflows/cd-keycloak.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
host: ${{ secrets.HOST }}
2222
username: deploy
2323
key: ${{ secrets.SSH_PRIVATE_KEY }}
24-
source: "infra/compose/docker-compose.keycloak.yml,infra/keycloak/,infra/scripts/,Makefile"
24+
source: "infra/keycloak/,infra/scripts/,Makefile,makefiles/keycloak.mk"
2525
target: "/home/deploy/survey-app"
2626
strip_components: 0
2727
rm: false
@@ -34,7 +34,7 @@ jobs:
3434
username: deploy
3535
key: ${{ secrets.SSH_PRIVATE_KEY }}
3636
script: |
37-
cat << 'EOF' > /home/deploy/survey-app/infra/compose/.env
37+
cat << 'EOF' > /home/deploy/survey-app/infra/keycloak/.env
3838
${{ secrets.ENV_FILE }}
3939
EOF
4040
@@ -56,7 +56,7 @@ jobs:
5656
username: deploy
5757
key: ${{ secrets.SSH_PRIVATE_KEY }}
5858
script: |
59-
cat << 'EOF' > /home/deploy/survey-app/infra/compose/CaddyfileKeycloak
59+
cat << 'EOF' > /home/deploy/survey-app/infra/keycloak/Caddyfile
6060
${{ secrets.CADDYFILE_KEYCLOAK }}
6161
EOF
6262
@@ -68,5 +68,5 @@ jobs:
6868
key: ${{ secrets.SSH_PRIVATE_KEY }}
6969
script: |
7070
cd /home/deploy/survey-app
71-
docker compose -f infra/compose/docker-compose.keycloak.yml down
72-
docker compose -f infra/compose/docker-compose.keycloak.yml --env-file infra/compose/.env up -d --build
71+
docker compose -f infra/keycloak/docker-compose.yml down --remove-orphans
72+
docker compose -f infra/keycloak/docker-compose.yml --env-file infra/keycloak/.env up -d --build
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: Deploy to monitoring
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
workflow_dispatch:
8+
9+
jobs:
10+
deploy:
11+
runs-on: ubuntu-latest
12+
environment: monitoring
13+
concurrency:
14+
group: deploy-monitoring-${{ github.ref }}
15+
cancel-in-progress: true
16+
17+
steps:
18+
- name: Checkout code
19+
uses: actions/checkout@v3
20+
21+
- name: Copy project files to production server
22+
uses: appleboy/scp-action@v1
23+
with:
24+
host: ${{ secrets.HOST }}
25+
username: deploy
26+
key: ${{ secrets.SSH_PRIVATE_KEY }}
27+
source: "infra/monitoring/,infra/scripts/,Makefile,makefiles/monitoring.mk"
28+
target: "/home/deploy/survey-app"
29+
strip_components: 0
30+
rm: false
31+
overwrite: true
32+
33+
- name: Upload .env file
34+
uses: appleboy/ssh-action@v1
35+
with:
36+
host: ${{ secrets.HOST }}
37+
username: deploy
38+
key: ${{ secrets.SSH_PRIVATE_KEY }}
39+
script: |
40+
cat << 'EOF' > /home/deploy/survey-app/infra/monitoring/.env
41+
${{ secrets.ENV_FILE }}
42+
EOF
43+
44+
- name: Upload Caddyfile
45+
uses: appleboy/ssh-action@v1
46+
with:
47+
host: ${{ secrets.HOST }}
48+
username: deploy
49+
key: ${{ secrets.SSH_PRIVATE_KEY }}
50+
script: |
51+
cat << 'EOF' > /home/deploy/survey-app/infra/monitoring/Caddyfile
52+
${{ secrets.CADDY_FILE }}
53+
EOF
54+
55+
- name: Upload Prometheus config
56+
uses: appleboy/ssh-action@v1
57+
with:
58+
host: ${{ secrets.HOST }}
59+
username: deploy
60+
key: ${{ secrets.SSH_PRIVATE_KEY }}
61+
script: |
62+
cat << 'EOF' > /home/deploy/survey-app/infra/monitoring/prometheus.yml
63+
${{ secrets.PROMETHEUS_FILE }}
64+
EOF
65+
66+
- name: Deploy with Docker Compose
67+
uses: appleboy/ssh-action@v1
68+
with:
69+
host: ${{ secrets.HOST }}
70+
username: deploy
71+
key: ${{ secrets.SSH_PRIVATE_KEY }}
72+
script: |
73+
cd /home/deploy/survey-app
74+
docker compose -f infra/monitoring/docker-compose.yml down --remove-orphans
75+
docker compose -f infra/monitoring/docker-compose.yml --env-file infra/monitoring/.env up -d --build

.github/workflows/cd-prod.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,5 @@ jobs:
6868
key: ${{ secrets.SSH_PRIVATE_KEY }}
6969
script: |
7070
cd /home/deploy/survey-app
71-
docker compose -f infra/compose/docker-compose.yml down
71+
docker compose -f infra/compose/docker-compose.yml down --remove-orphans
7272
docker compose -f infra/compose/docker-compose.yml --env-file infra/compose/.env up -d --build

.github/workflows/cd-staging.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ on:
55
push:
66
branches:
77
- master
8+
workflow_dispatch:
89

910
jobs:
1011
deploy:
@@ -87,5 +88,5 @@ jobs:
8788
key: ${{ secrets.SSH_PRIVATE_KEY }}
8889
script: |
8990
cd /home/deploy/survey-app
90-
docker compose -f infra/compose/docker-compose.yml down
91+
docker compose -f infra/compose/docker-compose.yml down --remove-orphans
9192
docker compose -f infra/compose/docker-compose.yml --env-file infra/compose/.env up -d --build

Makefile

Lines changed: 8 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,10 @@
1-
.PHONY: prod-restore-db prod-list-backups prod-backup dev-up dev-down dev-logs prod-up prod-down prod-logs caddy-reload container-exec prod-ps prod-restart prod-log-service dev-ps keycloak-up keycloak-down keycloak-logs keycloak-log-service keycloak-ps keycloak-restart ollama-pull
1+
.PHONY: help
22

3-
# Usage: make restore FILE=backups/your_backup.dump
4-
prod-restore-db:
5-
@echo "📦 Restoring from: $(FILE)"
6-
@./infra/compose/scripts/restore_db.sh --file $(FILE)
3+
-include makefiles/compose.mk
4+
-include makefiles/dev.mk
5+
-include makefiles/keycloak.mk
6+
-include makefiles/monitoring.mk
77

8-
prod-list-backups:
9-
docker compose -f infra/compose/docker-compose.yml run --rm --entrypoint patronx patronx-worker list
10-
11-
prod-backup:
12-
docker compose -f infra/compose/docker-compose.yml run --rm --entrypoint patronx patronx-worker backup
13-
14-
prod-up:
15-
docker compose -f infra/compose/docker-compose.yml --env-file infra/compose/.env up -d
16-
17-
prod-down:
18-
docker compose -f infra/compose/docker-compose.yml down
19-
20-
prod-logs:
21-
docker compose -f infra/compose/docker-compose.yml logs -f
22-
23-
prod-log-service:
24-
docker compose -f infra/compose/docker-compose.yml logs -f $(SERVICE)
25-
26-
prod-ps:
27-
docker compose -f infra/compose/docker-compose.yml ps
28-
29-
prod-restart:
30-
docker compose -f infra/compose/docker-compose.yml restart $(SERVICE)
31-
32-
caddy-reload: ## Usage: make caddy-reload CONTAINER=<container-name>
33-
docker exec $(CONTAINER) caddy reload --config /etc/caddy/Caddyfile --adapter caddyfile
34-
35-
container-logs:
36-
docker logs -f $(CONTAINER)
37-
38-
container-exec:
39-
docker exec -it $(CONTAINER) $(CMD)
40-
41-
dev-up:
42-
docker compose -f infra/compose/docker-compose.dev.yml --env-file infra/compose/.env up --build --force-recreate -d
43-
44-
dev-down:
45-
docker compose -f infra/compose/docker-compose.dev.yml down
46-
47-
dev-logs:
48-
docker compose -f infra/compose/docker-compose.dev.yml logs -f
49-
50-
dev-ps:
51-
docker compose -f infra/compose/docker-compose.dev.yml ps
52-
53-
keycloak-up:
54-
docker compose -f infra/compose/docker-compose.keycloak.yml --env-file infra/compose/.env up -d
55-
56-
keycloak-down:
57-
docker compose -f infra/compose/docker-compose.keycloak.yml down
58-
59-
keycloak-logs:
60-
docker compose -f infra/compose/docker-compose.keycloak.yml logs -f
61-
62-
keycloak-log-service:
63-
docker compose -f infra/compose/docker-compose.keycloak.yml logs -f $(SERVICE)
64-
65-
keycloak-ps:
66-
docker compose -f infra/compose/docker-compose.keycloak.yml ps
67-
68-
keycloak-restart:
69-
docker compose -f infra/compose/docker-compose.keycloak.yml restart $(SERVICE)
70-
71-
ollama-pull:
72-
docker exec -it ollama ollama pull tinyllama
8+
help: ## Show this help message
9+
@grep -h -E '^[a-zA-Z_-]+:.*?##' Makefile makefiles/*.mk | \
10+
awk -F':|##' '{printf " %-20s %s\n", $$1, $$3}' | sort

README.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ _Cloud‑native survey engine with end‑to‑end observability._
3939

4040
## Docs
4141
- **See** [Database Recovery Guide](docs/data-recovery.md) for how to restore the database in case of an incident
42-
- **See** [Secure Docker Deploy Guide](docs/secure-docker-deploy.md) for deploying in a safe way with docker compsoe with a dedicated non root user
42+
- **See** [Secure Docker Deploy Guide](docs/secure-deploy.md) for deploying in a safe way with docker compsoe with a dedicated non root user
4343
- **See** [Deploy Keycloak](docs/deploy-keycloak.md) for deploying keycloak
44+
- **See** [Monitoring Configuration](docs/monitoring-config.md) for customizing Prometheus targets
4445
## Project Structure
4546

4647
```
@@ -50,14 +51,18 @@ services/
5051
backoffice/ (angular v20)
5152
analytics/ (fastapi python3.12)
5253
infra/
53-
monitoring/
54-
elk/
5554
scripts/
5655
keycloak/
56+
docker-compose.yml
57+
Caddyfile
58+
monitoring/
59+
elk/
60+
grafana/
61+
docker-compose.yml
62+
Caddyfile
5763
compose/
5864
docker-compose.yml
5965
docker-compose.dev.yml
60-
docker-compose.keycloak.yml
6166
Caddyfile
6267
docs/
6368
data-recovery.md
File renamed without changes.

docs/monitoring-config.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Monitoring Configuration
2+
3+
For deployments, the Prometheus configuration file is generated by the monitoring workflow using a GitHub secret. This keeps domain names out of the repository.
4+
5+
1. Create a secret named `PROMETHEUS_FILE` containing the full contents of `infra/monitoring/prometheus.yml`.
6+
2. The monitoring workflow writes this file on the server before running Docker Compose.
File renamed without changes.

infra/compose/.env.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,7 @@ AWS_DEFAULT_REGION=
4444
COMPANY_NAME=
4545
COMPANY_WEBSITE=
4646
COMPANY_LOGO_URL=
47+
LOGSTASH_HOST=
48+
LOGSTASH_PORT=
49+
50+

0 commit comments

Comments
 (0)