RCA: the exabgp container was OOM-killed — its 512m mem_limit was far too small for the full-table feature (900K route objects in memory). Raises the limit to a parameterized 6g default (EXABGP_MEM_LIMIT). Adds Docker healthchecks to 14 services (port/HTTP probes) so unhealthy containers are visible. Adds a Telegraf docker input that collects per- container CPU/memory/IO into InfluxDB, plus a "Stack Resources" dashboard — so resource pressure is caught before it causes an OOM crash. telegraf runs with an overridden entrypoint so it keeps root and can read the docker socket. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
72 lines
2.9 KiB
Plaintext
72 lines
2.9 KiB
Plaintext
# OpenBMP stack configuration — copy to .env and fill in.
|
|
# cp .env.example .env && $EDITOR .env && ./setup.sh
|
|
# The real .env is git-ignored and never committed.
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Core deployment
|
|
# ---------------------------------------------------------------------------
|
|
# Host path for all persistent data (postgres, kafka, grafana, authelia, ...).
|
|
OBMP_DATA_ROOT=/var/openbmp
|
|
|
|
# IP of this host that routers and external clients connect to
|
|
# (Kafka external listener, BMP source, ExaBGP peering).
|
|
HOST_IP=changeme
|
|
|
|
# Public domain fronting Grafana / Authelia / portal (TLS terminates upstream).
|
|
OBMP_DOMAIN=changeme.example.com
|
|
|
|
# Authelia session-cookie domain — the parent domain of OBMP_DOMAIN so the
|
|
# cookie is valid across subpaths/subdomains.
|
|
OBMP_COOKIE_DOMAIN=example.com
|
|
|
|
# Container memory limits. Lab defaults shown; raise for production
|
|
# (see docs/production-sizing.md). psql-app's limit must exceed its MEM heap.
|
|
PSQL_MEM_LIMIT=6g
|
|
PSQL_APP_MEM_LIMIT=4g
|
|
KAFKA_MEM_LIMIT=4g
|
|
# ExaBGP — the full-table feature holds up to 900K route objects in memory.
|
|
EXABGP_MEM_LIMIT=6g
|
|
|
|
# gNMI streaming telemetry (telegraf, test profile). GNMI_ADDRESSES is a
|
|
# quoted, comma-separated host:port list — add a router here once gNMI/grpc
|
|
# is enabled on it and the management path is reachable.
|
|
GNMI_ADDRESSES="10.100.0.100:57400", "10.100.0.200:57400"
|
|
GNMI_USERNAME=changeme
|
|
GNMI_PASSWORD=changeme
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# ExaBGP route injector (test profile)
|
|
# ---------------------------------------------------------------------------
|
|
EXABGP_LOCAL_IP=changeme
|
|
EXABGP_LOCAL_AS=65100
|
|
EXABGP_API_PORT=5050
|
|
# Semicolon-separated peer list, each entry "ip:peer_as:description".
|
|
EXABGP_PEERS=10.100.0.100:65020:CML-R9K-CORE-01;10.100.0.200:65020:CML-R9K-CORE-02
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# CML lab API + IOS-XR NETCONF (used by cml/ automation scripts)
|
|
# ---------------------------------------------------------------------------
|
|
PROX-CML_URL=http://changeme
|
|
PROX-CML_USERNAME=changeme
|
|
PROX-CML_PASSWORD=changeme
|
|
|
|
# Default IOS-XR NETCONF credentials, plus the admin-tier override for routers
|
|
# that use a separate account.
|
|
IOSXR_NETCONF_USER=changeme
|
|
IOSXR_NETCONF_PASS=changeme
|
|
IOSXR_NETCONF_ADMIN_USER=changeme
|
|
IOSXR_NETCONF_ADMIN_PASS=changeme
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Integrations
|
|
# ---------------------------------------------------------------------------
|
|
GITEA_API_KEY=changeme
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Authelia secrets — leave BLANK; setup.sh generates them with openssl on a
|
|
# fresh host and appends them here. Existing values are never overwritten.
|
|
# ---------------------------------------------------------------------------
|
|
AUTHELIA_SESSION_SECRET=
|
|
AUTHELIA_JWT_SECRET=
|
|
AUTHELIA_STORAGE_ENCRYPTION_KEY=
|