Skip to content

Commit d39b914

Browse files
committed
unify monitoring and telemetry with prometheus (mysql / elastic / fluentbit)
1 parent 8688f2a commit d39b914

File tree

10 files changed

+93
-20
lines changed

10 files changed

+93
-20
lines changed

.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ SENTINELKIT_GRAFANA_HOSTNAME=grafana.sentinel-kit.local
88
SENTINELKIT_DATAMONITOR_SERVER_TOKEN=9561ffd1b6de615286b9e52a9d5bc3226970449700c9461bdbe4225730b47b20
99
BACKEND_JWT_PASSPHRASE=f164cfc913d2faf65a1b7bc8ccd4aa8b11b5958bce7c20c8cf159a576f8a75f7
1010
MYSQL_ROOT_PASSWORD=sentinel-kit_r00tp4ssw0rd
11+
MYSQL_EXPORTER_PASSWORD=sentinel-kit_3xp0rt3rp4ssw0rd
1112
MYSQL_USER=sentinel-kit_user
1213
MYSQL_PASSWORD=sentinel-kit_passwd
1314
MYSQL_DATABASE=sentinel-kit_db

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ Persistent data are located in the `data/` folder:
118118
* `data/grafana`: Contains a persistence of your grafana profile if you want to make your own dashboard and customizations.
119119
* `data/kibana`: Kibana user customizations (dashboard, config...).
120120
* `data/log_ingest_data`: Is designed to forward logs if you don't want to use fluentbit HTTP forwarder.
121-
* `data/mysql_data`: Constains a persistence of the web backend database.
122121
* `data/yara_triage_data`: is used to automatically scan any file placed in this folder.
123122
124123
---

clean-user-data.ps1

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,5 @@ Remove-Item ./data/log_ingest_data/auditd/* -Recurse -Force
66
Remove-Item ./data/log_ingest_data/evtx/* -Recurse -Force
77
Remove-Item ./data/log_ingest_data/json/* -Recurse -Force
88
Remove-Item ./data/fluentbit_db/* -Recurse -Force
9-
Remove-Item ./data/mysql_data/* -Recurse -Force
109
Remove-Item ./data/yara_triage_data/* -Recurse -Force
1110
docker compose down -v

clean-user-data.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,5 @@ rm -rf ./data/log_ingest_data/evtx/*
66
rm -rf ./data/log_ingest_data/auditd/*
77
rm -rf ./data/log_ingest_data/json/*
88
rm -rf ./data/fluentbit_db/*
9-
rm -rf ./data/mysql_data/*
109
rm -rf ./data/yara_triage_data/*
1110
docker compose down -v

config/caddy_server/Caddyfile

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
{
2+
servers {
3+
metrics
4+
}
5+
admin :2020
6+
}
7+
8+
9+
110
# TLS reverse proxy configuration
211
{$SENTINELKIT_BACKEND_HOSTNAME}:443 {
312
tls internal
@@ -78,4 +87,4 @@
7887

7988
{$SENTINELKIT_GRAFANA_HOSTNAME}:80 {
8089
redir https://{$SENTINELKIT_GRAFANA_HOSTNAME}{uri}
81-
}
90+
}

config/grafana/datasources/prometheus.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: 1
22

33
datasources:
4-
- name: Prometheus-Fluentbit
4+
- name: Prometheus
55
type: prometheus
66
url: http://sentinel-kit-utils-prometheus:9090
77
access: proxy
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
SQL_COMMANDS="
2+
CREATE USER IF NOT EXISTS 'exporter'@'%' IDENTIFIED BY '$MYSQL_EXPORTER_PASSWORD';
3+
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';
4+
FLUSH PRIVILEGES;
5+
"
6+
7+
echo "$SQL_COMMANDS" | mysql -u root -p"$MYSQL_ROOT_PASSWORD"

config/mysql/my.cnf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[client]
2+
user=exporter
3+
host=sentinel-kit-db-mysql
4+
port=3306

config/prometheus/prometheus.yml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,16 @@ global:
44
scrape_configs:
55
- job_name: 'fluentbit'
66
static_configs:
7-
- targets: ['sentinel-kit-fluentbit-server:2020']
8-
metrics_path: /api/v1/metrics/prometheus
7+
- targets: ['sentinel-kit-server-fluentbit:2020']
8+
metrics_path: /api/v1/metrics/prometheus
9+
- job_name: 'caddy hosts'
10+
static_configs:
11+
- targets: ['sentinel-kit-server-caddy:2020']
12+
metrics_path: /metrics
13+
- job_name: 'elasticsearch'
14+
static_configs:
15+
- targets: ['sentinel-kit-utils-elastic-exporter:9114']
16+
metrics_path: /metrics
17+
- job_name: 'mysql'
18+
static_configs:
19+
- targets: ['sentinel-kit-utils-mysql-exporter:9104']

docker-compose.yml

Lines changed: 57 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ services:
5454

5555
sentinel-kit-server-fluentbit:
5656
container_name: sentinel-kit-server-fluentbit
57+
hostname: sentinel-kit-server-fluentbit
5758
build:
5859
context: .
5960
dockerfile: config/docker-config/Dockerfile.fluentbit
@@ -75,6 +76,7 @@ services:
7576

7677
sentinel-kit-server-sftp:
7778
container_name: sentinel-kit-server-sftp
79+
hostname: sentinel-kit-server-sftp
7880
image: atmoz/sftp
7981
restart: on-failure
8082
command: ${SFTP_USER}:${SFTP_PASSWORD}:1001
@@ -89,18 +91,35 @@ services:
8991

9092
sentinel-kit-db-mysql:
9193
container_name: sentinel-kit-db-mysql
94+
hostname: sentinel-kit-db-mysql
9295
image: mysql:9.4.0
9396
restart: on-failure
9497
environment:
9598
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
9699
MYSQL_DATABASE: ${MYSQL_DATABASE}
97100
MYSQL_USER: ${MYSQL_USER}
98101
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
102+
MYSQL_EXPORTER_PASSWORD: ${MYSQL_EXPORTER_PASSWORD}
99103
volumes:
100-
- ./data/mysql_data:/var/lib/mysql
104+
- sentinel-kit_db_mysql_data:/var/lib/mysql
105+
- ./config/mysql/init_mysqld_exporter.sh:/docker-entrypoint-initdb.d/init_mysqld_exporter.sh:ro
101106
networks:
102107
- sentinel-kit-network
103108

109+
sentinel-kit-utils-phpmyadmin:
110+
container_name: sentinel-kit-utils-phpmyadmin
111+
hostname: ${SENTINELKIT_PMA_HOSTNAME}
112+
image: phpmyadmin/phpmyadmin
113+
restart: on-failure
114+
environment:
115+
PMA_HOST: sentinel-kit-db-mysql
116+
PMA_PORT: 3306
117+
networks:
118+
- sentinel-kit-network
119+
depends_on:
120+
- sentinel-kit-db-mysql
121+
profiles: ["phpmyadmin"]
122+
104123
sentinel-kit-server-caddy:
105124
image: caddy:2.10.2-alpine
106125
container_name: sentinel-kit-server-caddy
@@ -278,8 +297,6 @@ services:
278297
- ./config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
279298
networks:
280299
- sentinel-kit-network
281-
depends_on:
282-
- sentinel-kit-server-fluentbit
283300
profiles: ["internal-monitoring"]
284301

285302
sentinel-kit-utils-grafana:
@@ -298,11 +315,11 @@ services:
298315
- GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD}
299316
- GF_SERVER_HTTP_PORT=3000
300317
- ES_PASSWORD=${ELASTICSEARCH_PASSWORD}
318+
- MYSQL_DATABASE=${MYSQL_DATABASE}
319+
- MYSQL_USER=${MYSQL_USER}
320+
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
301321
networks:
302322
- sentinel-kit-network
303-
depends_on:
304-
- sentinel-kit-utils-prometheus
305-
- sentinel-kit-db-elasticsearch-es01
306323
entrypoint:
307324
- /bin/sh
308325
- -c
@@ -312,19 +329,45 @@ services:
312329
/run.sh
313330
profiles: ["internal-monitoring"]
314331

315-
sentinel-kit-utils-phpmyadmin:
316-
container_name: sentinel-kit-utils-phpmyadmin
317-
hostname: ${SENTINELKIT_PMA_HOSTNAME}
318-
image: phpmyadmin/phpmyadmin
332+
sentinel-kit-utils-elastic-exporter:
333+
hostname: sentinel-kit-utils-elastic-exporter
334+
container_name: sentinel-kit-utils-elastic-exporter
335+
image: justwatch/elasticsearch_exporter:latest
319336
restart: on-failure
320337
environment:
321-
PMA_HOST: sentinel-kit-db-mysql
322-
PMA_PORT: 3306
338+
- ES_URI=https://sentinel-kit-db-elasticsearch-es01:9200
339+
- ES_ALL=true
340+
- ES_TIMEOUT=10s
341+
- ES_SKIP_TLS_VERIFY=false
342+
- ES_CA_PATH=/usr/share/exporter/ca/ca.crt
343+
- ES_USERNAME=elastic
344+
- ES_PASSWORD=${ELASTICSEARCH_PASSWORD}
345+
volumes:
346+
- sentinel-kit_certificates_elasticsearch:/usr/share/exporter/ca
347+
networks:
348+
- sentinel-kit-network
349+
depends_on:
350+
sentinel-kit-db-elasticsearch-es01:
351+
condition: service_healthy
352+
profiles: ["internal-monitoring"]
353+
354+
sentinel-kit-utils-mysql-exporter:
355+
hostname: sentinel-kit-utils-mysql-exporter
356+
container_name: sentinel-kit-utils-mysql-exporter
357+
image: prom/mysqld-exporter:latest
358+
restart: on-failure
359+
environment:
360+
- MYSQLD_EXPORTER_PASSWORD=${MYSQL_EXPORTER_PASSWORD}
361+
volumes:
362+
- ./config/mysql/my.cnf:/etc/mysql/my.cnf:ro
363+
command:
364+
[ "--config.my-cnf=/etc/mysql/my.cnf" ]
323365
networks:
324366
- sentinel-kit-network
325367
depends_on:
326368
- sentinel-kit-db-mysql
327-
profiles: ["phpmyadmin"]
369+
profiles: ["internal-monitoring"]
370+
328371
networks:
329372
sentinel-kit-network:
330373
driver: bridge
@@ -334,6 +377,7 @@ volumes:
334377
sentinel-kit_server_caddy_config:
335378
sentinel-kit_db_elasticsearch_es01_data:
336379
sentinel-kit_db_elasticsearch_es02_data:
380+
sentinel-kit_db_mysql_data:
337381
sentinel-kit_server_backend_vendor_cache:
338382
sentinel-kit_server_backend_var_cache:
339383
sentinel-kit_server_backend_public:

0 commit comments

Comments
 (0)