New source in Settings > Sources, off by default: reads the kernel ring buffer of the host through /dev/kmsg, dates records from the boot time and resumes after the last sequence number of the same boot (no duplicates on restart). Missing device or denied access is shown in the UI, retried every 10 s. docker-compose.yml and .env.example document the device and the kernel.dmesg_restrict / CAP_SYSLOG options. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
98 lines
4.5 KiB
YAML
98 lines
4.5 KiB
YAML
services:
|
|
logstream:
|
|
build: .
|
|
container_name: logstream
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- victorialogs
|
|
- docker-proxy
|
|
ports:
|
|
- "${SYSLOG_PORT:-514}:5514/udp"
|
|
- "${SYSLOG_PORT:-514}:5514/tcp"
|
|
- "${HTTP_PORT:-8080}:8080"
|
|
environment:
|
|
VLOGS_URL: http://victorialogs:9428
|
|
SYSLOG_PUBLIC_PORT: ${SYSLOG_PORT:-514} # le port d'ecoute syslog par defaut (attention aux ports <1024)
|
|
TZ: ${TZ:-Europe/Paris}
|
|
AUTH_MODE: ${AUTH_MODE:-local} # local (page de connexion, compte ci-dessous) ou oidc
|
|
AUTH_USER: ${AUTH_USER:-} # vide = pas d'authentification, on delegue ca au reverse proxy traefik
|
|
AUTH_PASS: ${AUTH_PASS:-}
|
|
AUTH_VIEWER_USER: ${AUTH_VIEWER_USER:-} # compte en lecture seule (optionnel)
|
|
AUTH_VIEWER_PASS: ${AUTH_VIEWER_PASS:-}
|
|
LOGIN_LOGO: ${LOGIN_LOGO:-} # PNG affiche sur la page de connexion (chemin dans le conteneur, voir volumes)
|
|
PRESETS_FILE: ${PRESETS_FILE:-} # prereglages de tags (defaut /data/presets.json, voir docs/presets.fr.md)
|
|
OIDC_ISSUER: ${OIDC_ISSUER:-}
|
|
OIDC_CLIENT_ID: ${OIDC_CLIENT_ID:-}
|
|
OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET:-}
|
|
OIDC_REDIRECT_URL: ${OIDC_REDIRECT_URL:-}
|
|
OIDC_SCOPES: ${OIDC_SCOPES:-openid profile email}
|
|
OIDC_ADMIN_GROUP: ${OIDC_ADMIN_GROUP:-} # vide = tout le monde est admin, sinon les autres sont en lecture seule
|
|
OIDC_GROUPS_CLAIM: ${OIDC_GROUPS_CLAIM:-groups}
|
|
SESSION_TTL: ${SESSION_TTL:-${OIDC_SESSION_TTL:-12h}} # duree de la session (local et oidc)
|
|
RDNS: ${RDNS:-on} # resol dns
|
|
DNS_SERVER: ${DNS_SERVER:-} # si resolv directe
|
|
ALLOW_PURGE: ${ALLOW_PURGE:-false} # true pour autoriser « Supprimer tous les logs »
|
|
EXPORT_MAX: ${EXPORT_MAX:-100000}
|
|
DOCKER_LOGS: ${DOCKER_LOGS:-on} # collecte des logs des conteneurs Docker
|
|
DOCKER_HOST: tcp://docker-proxy:2375 # lecture seul de l'API Docker
|
|
DOCKER_BACKFILL: ${DOCKER_BACKFILL:-1h}
|
|
HOST_LOGS_BACKFILL: ${HOST_LOGS_BACKFILL:-1h} # historique lu a l'activation des logs systeme de l'hote
|
|
DMESG_BACKFILL: ${DMESG_BACKFILL:-1h} # historique lu a l'activation des messages du noyau (dmesg)
|
|
group_add:
|
|
- "${HOST_LOGS_GID:-4}" # groupe autorise a lire les logs de l'hote (4 = adm sur Debian/Ubuntu)
|
|
# messages du noyau de l'hote (dmesg), source a activer dans Reglages > Sources :
|
|
# decommenter devices pour donner /dev/kmsg (lecture seule) au conteneur
|
|
# devices:
|
|
# - /dev/kmsg:/dev/kmsg:r
|
|
# si l'hote a kernel.dmesg_restrict=1 (defaut Debian/Ubuntu), soit sur l'hote :
|
|
# sysctl -w kernel.dmesg_restrict=0 (et kernel.dmesg_restrict = 0 dans /etc/sysctl.d/ pour le garder)
|
|
# soit lancer le conteneur en root avec la capacite SYSLOG (decommenter les deux) :
|
|
# user: "0:0"
|
|
# cap_add:
|
|
# - SYSLOG
|
|
volumes:
|
|
- logstream-data:/data # tags.json, docker.json (les choix des conteneurs)
|
|
# logs systeme de l'hote, en lecture seule (source a activer dans Reglages > Sources)
|
|
- /var/log:/host/var/log:ro # journal systemd persistant et fichiers texte
|
|
- /run/log/journal:/host/run/log/journal:ro # journal systemd volatile
|
|
# logo de la page de connexion, avec LOGIN_LOGO=/config/logo.png dans .env
|
|
# - ./logo.png:/config/logo.png:ro
|
|
# prereglages de tags personnalises, avec PRESETS_FILE=/config/presets.json dans .env
|
|
# - ./presets.json:/config/presets.json:ro
|
|
labels:
|
|
logstream.exclude: "true" # pas de collect des logs logstream
|
|
|
|
victorialogs:
|
|
image: victoriametrics/victoria-logs:v1.52.0
|
|
container_name: logstream-victorialogs
|
|
restart: unless-stopped
|
|
command:
|
|
- -storageDataPath=/vlogs
|
|
- -retentionPeriod=${RETENTION:-30d}
|
|
- -httpListenAddr=:9428
|
|
- -delete.enable # obliger pour autoriser la purge de la base via l'interface
|
|
volumes:
|
|
- vlogs-data:/vlogs
|
|
ports:
|
|
# VictoriaLogs debug UI (http://localhost:9428/select/vmui), localhost only
|
|
- "127.0.0.1:9428:9428"
|
|
|
|
docker-proxy:
|
|
# Docker proxy pour eviter de solliciter directement l'API docker
|
|
image: tecnativa/docker-socket-proxy:v0.5.0
|
|
container_name: logstream-docker-proxy
|
|
restart: unless-stopped
|
|
environment:
|
|
CONTAINERS: 1
|
|
EVENTS: 1
|
|
INFO: 1
|
|
POST: 0
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
labels:
|
|
logstream.exclude: "true" # pour exclure les logs propres de logstream
|
|
|
|
volumes:
|
|
logstream-data:
|
|
vlogs-data:
|