Add docker and compose config
Signed-off-by: gearnode <bryan@frimin.fr>
This commit is contained in:
15
GNUmakefile
15
GNUmakefile
@@ -1,6 +1,9 @@
|
|||||||
NPX?= npx
|
NPX?= npx
|
||||||
PRETTIER?= $(NPX) prettier
|
PRETTIER?= $(NPX) prettier
|
||||||
GO?= go
|
GO?= go
|
||||||
|
DOCKER?= docker
|
||||||
|
|
||||||
|
DOCKER_COMPOSE= $(DOCKER) compose -f compose.yaml $(DOCKER_COMPOSE_FLAGS)
|
||||||
|
|
||||||
VERSION= unknown
|
VERSION= unknown
|
||||||
LDFLAGS= -ldflags "-X 'main.version=$(VERSION)' -X 'main.env=prod'"
|
LDFLAGS= -ldflags "-X 'main.version=$(VERSION)' -X 'main.env=prod'"
|
||||||
@@ -41,3 +44,15 @@ fmt-check:
|
|||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(RM) -rf bin/*
|
$(RM) -rf bin/*
|
||||||
|
|
||||||
|
.PHONY: stack-up
|
||||||
|
stack-up:
|
||||||
|
$(DOCKER_COMPOSE) up -d
|
||||||
|
|
||||||
|
.PHONY: stack-down
|
||||||
|
stack-down:
|
||||||
|
$(DOCKER_COMPOSE) down
|
||||||
|
|
||||||
|
.PHONY: stack-ps
|
||||||
|
stack-ps:
|
||||||
|
$(DOCKER_COMPOSE) ps
|
||||||
|
|||||||
70
compose.yaml
Normal file
70
compose.yaml
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: "postgres:16"
|
||||||
|
shm_size: "1g"
|
||||||
|
command: >
|
||||||
|
postgres -c "shared_buffers=4GB"
|
||||||
|
-c "max_connections=200"
|
||||||
|
-c "log_statement=all"
|
||||||
|
ports:
|
||||||
|
- "5432:5432"
|
||||||
|
volumes:
|
||||||
|
- "./compose/postgres:/docker-entrypoint-initdb.d:ro"
|
||||||
|
- "postgres-data:/var/lib/postgresql/data:rw"
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: "postgres"
|
||||||
|
POSTGRES_PASSWORD: "postgres"
|
||||||
|
|
||||||
|
grafana:
|
||||||
|
image: "grafana/grafana:latest"
|
||||||
|
ports:
|
||||||
|
- "3001:3000"
|
||||||
|
volumes:
|
||||||
|
- "./compose/grafana/provisioning:/etc/grafana/provisioning:ro"
|
||||||
|
- "grafana-data:/var/lib/grafana:rw"
|
||||||
|
environment:
|
||||||
|
GF_AUTH_ANONYMOUS_ENABLED: "true"
|
||||||
|
GF_AUTH_ANONYMOUS_ORG_ROLE: "Admin"
|
||||||
|
GF_AUTH_DISABLE_LOGIN_FORM: "true"
|
||||||
|
GF_USERS_DEFAULT_THEME: "light"
|
||||||
|
|
||||||
|
prometheus:
|
||||||
|
image: "prom/prometheus:latest"
|
||||||
|
volumes:
|
||||||
|
- "./compose/prometheus/prometheus.yaml:/etc/prometheus/prometheus.yml"
|
||||||
|
- "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"
|
||||||
|
- "--web.enable-lifecycle"
|
||||||
|
- "--web.enable-remote-write-receiver"
|
||||||
|
- "--web.listen-address=:9191"
|
||||||
|
ports:
|
||||||
|
- "9191:9191"
|
||||||
|
|
||||||
|
loki:
|
||||||
|
image: "grafana/loki:latest"
|
||||||
|
ports:
|
||||||
|
- "3100:3100"
|
||||||
|
command:
|
||||||
|
- "-config.file=/etc/loki/local-config.yaml"
|
||||||
|
|
||||||
|
tempo:
|
||||||
|
image: "grafana/tempo:latest"
|
||||||
|
command:
|
||||||
|
- "-config.file=/etc/tempo.yaml"
|
||||||
|
ports:
|
||||||
|
- "4317:4317"
|
||||||
|
volumes:
|
||||||
|
- "./compose/tempo/tempo.yaml:/etc/tempo.yaml:ro"
|
||||||
|
- "tempo-data:/var/db/tempo:rw"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
postgres-data:
|
||||||
|
grafana-data:
|
||||||
|
prometheus-data:
|
||||||
|
tempo-data:
|
||||||
|
|
||||||
42
compose/grafana/provisioning/datasources/datasources.yaml
Normal file
42
compose/grafana/provisioning/datasources/datasources.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
apiVersion: 1
|
||||||
|
deleteDatasources:
|
||||||
|
- name: "Prometheus"
|
||||||
|
- name: "Loki"
|
||||||
|
- name: "Tempo"
|
||||||
|
datasources:
|
||||||
|
- name: "Prometheus"
|
||||||
|
type: "prometheus"
|
||||||
|
access: "proxy"
|
||||||
|
url: "http://prometheus:9191"
|
||||||
|
basicAuth: false
|
||||||
|
jsonData:
|
||||||
|
httpMethod: "POST"
|
||||||
|
manageAlerts: true
|
||||||
|
prometheusType: "Prometheus"
|
||||||
|
cacheLevel: 'High'
|
||||||
|
disableRecordingRules: false
|
||||||
|
incrementalQueryOverlapWindow: 10m
|
||||||
|
isDefault: false
|
||||||
|
version: 1
|
||||||
|
editable: false
|
||||||
|
- name: "Loki"
|
||||||
|
type: "loki"
|
||||||
|
access: "proxy"
|
||||||
|
url: "http://loki:3100"
|
||||||
|
basicAuth: false
|
||||||
|
version: 1
|
||||||
|
editable: false
|
||||||
|
jsonData:
|
||||||
|
derivedFields:
|
||||||
|
- datasourceUid: "tempo"
|
||||||
|
matcherRegex: traceID=(\w+)
|
||||||
|
name: "TraceID"
|
||||||
|
url: $${__value.raw}
|
||||||
|
- name: "Tempo"
|
||||||
|
type: tempo
|
||||||
|
access: proxy
|
||||||
|
url: "http://tempo:3200"
|
||||||
|
basicAuth: false
|
||||||
|
isDefault: true
|
||||||
|
version: 1
|
||||||
|
editable: false
|
||||||
23
compose/postgres/01_probod.sh
Executable file
23
compose/postgres/01_probod.sh
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
psql -v ON_ERROR_STOP=1 -U $POSTGRES_USER <<-EOF
|
||||||
|
CREATE USER probod;
|
||||||
|
ALTER USER probod WITH SUPERUSER;
|
||||||
|
ALTER USER probod PASSWORD 'probod';
|
||||||
|
CREATE DATABASE probod;
|
||||||
|
GRANT ALL PRIVILEGES ON DATABASE probod TO probod;
|
||||||
|
CREATE DATABASE probod_test;
|
||||||
|
GRANT ALL PRIVILEGES ON DATABASE probod_test TO probod;
|
||||||
|
EOF
|
||||||
|
|
||||||
|
psql -v ON_ERROR_STOP=1 -U $POSTGRES_USER -d probod <<-EOF
|
||||||
|
ALTER SCHEMA public OWNER TO probod;
|
||||||
|
GRANT ALL ON SCHEMA public TO probod;
|
||||||
|
EOF
|
||||||
|
|
||||||
|
psql -v ON_ERROR_STOP=1 -U $POSTGRES_USER -d probod_test <<-EOF
|
||||||
|
ALTER SCHEMA public OWNER TO probod;
|
||||||
|
GRANT ALL ON SCHEMA public TO probod;
|
||||||
|
EOF
|
||||||
12
compose/prometheus/prometheus.yaml
Normal file
12
compose/prometheus/prometheus.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
global:
|
||||||
|
scrape_interval: "15s"
|
||||||
|
evaluation_interval: "15s"
|
||||||
|
|
||||||
|
scrape_configs:
|
||||||
|
- job_name: "prometheus"
|
||||||
|
static_configs:
|
||||||
|
- targets: ["host.docker.internal:9090"]
|
||||||
|
- job_name: "tempo"
|
||||||
|
static_configs:
|
||||||
|
- targets: ["tempo:3200"]
|
||||||
|
|
||||||
41
compose/tempo/tempo.yaml
Normal file
41
compose/tempo/tempo.yaml
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
server:
|
||||||
|
http_listen_port: 3200
|
||||||
|
|
||||||
|
distributor:
|
||||||
|
receivers:
|
||||||
|
otlp:
|
||||||
|
protocols:
|
||||||
|
grpc:
|
||||||
|
endpoint: "0.0.0.0:4317"
|
||||||
|
|
||||||
|
ingester:
|
||||||
|
trace_idle_period: "10s"
|
||||||
|
max_block_bytes: 1_000_000
|
||||||
|
max_block_duration: "5m"
|
||||||
|
|
||||||
|
compactor:
|
||||||
|
compaction:
|
||||||
|
compaction_window: "1h"
|
||||||
|
max_block_bytes: 100_000_000
|
||||||
|
block_retention: "1h"
|
||||||
|
compacted_block_retention: "10m"
|
||||||
|
|
||||||
|
storage:
|
||||||
|
trace:
|
||||||
|
backend: "local"
|
||||||
|
local:
|
||||||
|
path: "/var/db/tempo"
|
||||||
|
block:
|
||||||
|
bloom_filter_false_positive: .05
|
||||||
|
v2_index_downsample_bytes: 1000
|
||||||
|
v2_encoding: "zstd"
|
||||||
|
wal:
|
||||||
|
path: "/var/db/tempo/wal"
|
||||||
|
v2_encoding: "snappy"
|
||||||
|
pool:
|
||||||
|
max_workers: 100
|
||||||
|
queue_depth: 10000
|
||||||
|
|
||||||
|
usage_report:
|
||||||
|
reporting_enabled: false
|
||||||
|
|
||||||
Reference in New Issue
Block a user