114 lines
5.5 KiB
YAML
114 lines
5.5 KiB
YAML
services:
|
|
logstream:
|
|
build: .
|
|
container_name: logstream
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- victorialogs
|
|
- docker-proxy
|
|
# ports:
|
|
# - "${SYSLOG_PORT:-5514}:5514/udp"
|
|
# - "${SYSLOG_PORT:-5514}:5514/tcp"
|
|
# - "${HTTP_PORT:-8989}: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)
|
|
AUDIT_BACKFILL: ${AUDIT_BACKFILL:-1h} # historique lu a l'activation de l'audit Linux (auditd)
|
|
FILES_BACKFILL: ${FILES_BACKFILL:-1h} # historique lu a l'activation d'un fichier de logs (Reglages > Sources)
|
|
AUDIT_HOST: ${AUDIT_HOST:-} # nom d'hote des evenements d'audit (vide : node= des enregistrements, sinon /host/etc/hostname)
|
|
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
|
|
# audit Linux (auditd), source a activer dans Reglages > Sources ; le fichier doit etre
|
|
# lisible par l'UID 10001 : log_group = adm dans /etc/audit/auditd.conf (voir le README)
|
|
- /var/log/audit:/var/log/audit:ro
|
|
# noms des utilisateurs et de l'hote pour les evenements d'audit (optionnel)
|
|
- /etc/passwd:/host/etc/passwd:ro
|
|
- /etc/hostname:/host/etc/hostname:ro
|
|
# fichiers de logs d'autres programmes (Traefik, nginx...), a declarer dans Reglages > Sources > Fichiers de logs
|
|
- /home/traefik/log:/home/logs/traefik:ro
|
|
# 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
|
|
networks:
|
|
- traefik-net
|
|
|
|
networks:
|
|
traefik-net:
|
|
external: true
|
|
volumes:
|
|
logstream-data:
|
|
vlogs-data:
|