Skip to content
Open
33 changes: 33 additions & 0 deletions containers/loki/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
auth_enabled: false

server:
http_listen_port: 3100
grpc_listen_port: 9096

common:
instance_addr: 127.0.0.1
path_prefix: /data/loki
storage:
filesystem:
chunks_directory: /data/loki/chunks
replication_factor: 1
ring:
kvstore:
store: inmemory

ruler:
storage:
type: local
local:
directory: /tmp/loki-rules

schema_config:
configs:
- from: 2020-10-24
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h

26 changes: 26 additions & 0 deletions containers/mimir/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
target: all

server:
http_listen_port: 9009
grpc_listen_port: 9095

ingester:
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory
replication_factor: 1

blocks_storage:
backend: filesystem
filesystem:
dir: /data/mimir/blocks
tsdb:
dir: /data/mimir/tsdb

compactor:
data_dir: /data/mimir/compactor

store_gateway:
sharding_ring:
replication_factor: 1
1 change: 1 addition & 0 deletions containers/nginx/auth/metrics.htpasswd
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
remote_writer:$apr1$baokJMMP$NH1P3Xbin2H9GqtJ8IZL2/
101 changes: 101 additions & 0 deletions containers/nginx/default.conf
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,107 @@ upstream backend {
server ${PROXY_PASS};
}

server {
listen 80;
server_name grafana.metrics.sctomega.com;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name grafana.metrics.sctomega.com;

ssl_certificate /etc/letsencrypt/live/grafana.metrics.sctomega.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/grafana.metrics.sctomega.com/privkey.pem;

ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5;

add_header Strict-Transport-Security "max-age=31536000" always;

location ^~ /.well-known/acme-challenge/ {
alias /var/www/certbot/.well-known/acme-challenge/;
}

location / {
proxy_pass http://grafana:3000/;
proxy_http_version 1.1;
proxy_set_header Connection 'upgrade';
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

server {
listen 80;
server_name mimir.metrics.sctomega.com;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name mimir.metrics.sctomega.com;

ssl_certificate /etc/letsencrypt/live/mimir.metrics.sctomega.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mimir.metrics.sctomega.com/privkey.pem;

ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5;

add_header Strict-Transport-Security "max-age=31536000" always;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/auth/metrics.htpasswd;

location ^~ /.well-known/acme-challenge/ {
alias /var/www/certbot/.well-known/acme-challenge/;
}

location / {
proxy_pass http://mimir:9009;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}

server {
listen 80;
server_name loki.metrics.sctomega.com;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name loki.metrics.sctomega.com;

ssl_certificate /etc/letsencrypt/live/loki.metrics.sctomega.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/loki.metrics.sctomega.com/privkey.pem;

ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5;

add_header Strict-Transport-Security "max-age=31536000" always;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/auth/metrics.htpasswd;

location ^~ /.well-known/acme-challenge/ {
alias /var/www/certbot/.well-known/acme-challenge/;
}

location / {
proxy_pass http://loki:3100;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}

server {
listen 80;
server_name ${DOMAIN};
Expand Down
39 changes: 35 additions & 4 deletions docker-compose.prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,11 @@ services:
- 443:443
environment:
DOMAIN: ${DOMAIN}
PROXY_PASS: 'projectnext:3000'
PROXY_PASS: "projectnext:3000"
volumes:
- ./containers/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./containers/nginx/default.conf:/etc/nginx/templates/default.conf.template:ro
- ./containers/nginx/auth:/etc/nginx/auth:ro
- store:/usr/store:ro
- ./certs/conf:/etc/letsencrypt:ro
- ./certs/www/:/var/www/certbot:ro
Expand All @@ -46,13 +47,37 @@ services:
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 14d & wait $${!}; done;'"
restart: always

grafana:
image: grafana/grafana:latest
volumes:
- grafana_data:/var/lib/grafana
- ./containers/grafana/provisioning:/etc/grafana/provisioning:ro
restart: unless-stopped

loki:
image: grafana/loki:latest
user: root
volumes:
- ./containers/loki/config.yml:/etc/loki/config.yml:ro
- loki_data:/data/loki
command: -config.file=/etc/loki/config.yml
restart: unless-stopped

mimir:
image: grafana/mimir:latest
volumes:
- ./containers/mimir/config.yml:/etc/mimir/config.yml:ro
- mimir_data:/data/mimir
command: -config.file=/etc/mimir/config.yml
restart: unless-stopped

postfix:
build: ${PROJECT_ROOT:-.}/containers/postfix/
ports:
- '587:587'
- '25:25'
- "587:587"
- "25:25"
environment:
POSTGRES_HOST: 'db'
POSTGRES_HOST: "db"
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
Expand All @@ -76,3 +101,9 @@ volumes:
driver: local
dobbelOmegaManifest:
driver: local
grafana_data:
driver: local
loki_data:
driver: local
mimir_data:
driver: local
Loading