This commit is contained in:
msnie
2024-02-03 11:58:42 +01:00
parent 17ca1c805f
commit 5b0b5f548c
706 changed files with 135245 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
DOMAIN_NAME=knast.cc
DEFAULT_NETWORK=traefik
+36
View File
@@ -0,0 +1,36 @@
# Grafana logging
in order to feed docker logs, which is kind of a big deal in this use case, we need to go through a few steps.
By default, setting up grafana, loki and promtail, we will be able to see the `/var/log/` files on the host machine.
Very nice & convienient, but we really want the docker logs as well.
## Install the plugin
First installing the docker plugin for the loki driver.
```bash
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
```
After which you may need to restart the docker service.
```bash
sudo systemctl restart docker.service
```
Check if the plugin is installed.
```bash
docker plugin ls
```
We can then add the log pushing on a per container basis, by adding the follwing to each docker-compose.yml file.
```yaml
logging:
driver: loki
options:
loki-url: "http://localhost:3100/loki/api/v1/push"
```
+57
View File
@@ -0,0 +1,57 @@
version: "3"
services:
loki:
image: grafana/loki:2.4.2
ports:
- "3100:3100"
volumes:
- ./loki-config.yaml:/etc/loki/loki-config.yaml
- loki-data:/loki
command: -config.file=/etc/loki/loki-config.yaml
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.grafana_loki.entrypoints=websecure"
promtail:
image: grafana/promtail:2.4.2
volumes:
- /var/log:/var/log
- ./promtail-config.yaml:/etc/promtail/config.yml
command: -config.file=/etc/promtail/config.yml
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.grafana_promtail.entrypoints=websecure"
grafana:
image: grafana/grafana:latest
ports:
- "3333:3000"
volumes:
- grafana-data:/var/lib/grafana
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.grafana.entrypoints=websecure"
- "traefik.http.routers.grafana.rule=Host(`logs.$DOMAIN_NAME`)"
- "traefik.http.routers.grafana.tls.certresolver=letsencr"
- "traefik.http.services.grafana.loadbalancer.server.port=3100"
- traefik.docker.network=traefik
volumes:
grafana-data:
driver_opts:
type: none
o: bind
device: /srv/grafana/grafana-data
loki-data:
driver_opts:
type: none
o: bind
device: /srv/grafana/loki-data
networks:
traefik:
external: true
+68
View File
@@ -0,0 +1,68 @@
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
ingester:
wal:
enabled: true
dir: /tmp/wal
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 1h # Any chunk not receiving new logs in this time will be flushed
max_chunk_age: 1h # All chunks will be flushed when they hit this age, default is 1h
chunk_target_size: 1048576 # Loki will attempt to build chunks up to 1.5MB, flushing first if chunk_idle_period or max_chunk_age is reached first
chunk_retain_period: 30s # Must be greater than index read cache TTL if using an index cache (Default index read cache TTL is 5m)
max_transfer_retries: 0 # Chunk transfers disabled
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper:
active_index_directory: /tmp/loki/boltdb-shipper-active
cache_location: /tmp/loki/boltdb-shipper-cache
cache_ttl: 24h # Can be increased for faster performance over longer query periods, uses more disk space
shared_store: filesystem
filesystem:
directory: /tmp/loki/chunks
compactor:
working_directory: /tmp/loki/boltdb-shipper-compactor
shared_store: filesystem
limits_config:
reject_old_samples: true
reject_old_samples_max_age: 168h
chunk_store_config:
max_look_back_period: 0s
table_manager:
retention_deletes_enabled: false
retention_period: 0s
ruler:
storage:
type: local
local:
directory: /tmp/loki/rules
rule_path: /tmp/loki/rules-temp
alertmanager_url: http://localhost:9093
ring:
kvstore:
store: inmemory
enable_api: true
+18
View File
@@ -0,0 +1,18 @@
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/**/*