Architecture


Service Topology

%%{init: {"flowchart": {"defaultRenderer": "elk", "nodeSpacing": 40, "rankSpacing": 50}}}%% flowchart TD classDef exposed fill:#2d3748,stroke:#4299e1,stroke-width:2px,color:#fff,rx:5px,ry:5px; classDef internal fill:#1a202c,stroke:#718096,stroke-width:1px,color:#e2e8f0,rx:5px,ry:5px; classDef datastore fill:#2b6cb0,stroke:#63b3ed,stroke-width:2px,color:#fff,rx:8px,ry:8px; db[("db
mariadb:10
💾 Datastore")]:::datastore redis[("redis
redis:7.2-alpine
💾 Datastore")]:::datastore librenms["librenms
librenms:latest"]:::internal dispatcher["dispatcher
librenms:latest"]:::internal syslogng(["syslogng
librenms:latest
🔌 514->514 | 514->514"]):::exposed snmptrapd(["snmptrapd
librenms:latest
🔌 162->162 | 162->162"]):::exposed librenms --> db librenms --> redis dispatcher --> librenms syslogng --> librenms snmptrapd --> librenms

Startup Sequence

sequenceDiagram autonumber participant db as db participant redis as redis participant librenms as librenms participant dispatcher as dispatcher participant syslogng as syslogng participant snmptrapd as snmptrapd librenms->>db: Connection / Init librenms->>redis: Connection / Init dispatcher->>librenms: Connection / Init syslogng->>librenms: Connection / Init snmptrapd->>librenms: Connection / Init

Services

db

Image: mariadb:10

Command: ['mysqld', '--innodb-file-per-table=1', '--lower-case-table-names=0', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']

Property Value
Networks librenms-internal
Depends on

Environment:

TZ=${TZ:-UTC}
MYSQL_DATABASE=librenms
MYSQL_USER=librenms
MYSQL_PASSWORD=${LIBRENMS_DB_PASSWORD}
MYSQL_ROOT_PASSWORD=${LIBRENMS_DB_PASSWORD}

Volumes:


redis

Image: redis:7.2-alpine

Command: --save 60 1 --loglevel warning

Property Value
Networks librenms-internal
Depends on

Volumes:


librenms

Image: librenms/librenms:latest

Property Value
Networks librenms-internal, traefik-public
Depends on db, redis

Environment:

TZ=${TZ:-UTC}
PUID=${PUID:-1000}
PGID=${PGID:-1000}
DB_HOST=db
DB_NAME=librenms
DB_USER=librenms
DB_PASSWORD=${LIBRENMS_DB_PASSWORD}
DB_TIMEOUT=60
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_DB=0
BASE_URL=https://librenms.${BASE_DOMAIN}
LIBRENMS_SNMP_COMMUNITY=${LIBRENMS_SNMP_COMMUNITY:-public}
LIBRENMS_ADMIN_USER=${LIBRENMS_ADMIN_USER:-admin}
LIBRENMS_ADMIN_PASS=${LIBRENMS_ADMIN_PASS}
LIBRENMS_ADMIN_EMAIL=${LIBRENMS_ADMIN_EMAIL}

Volumes:


dispatcher

Image: librenms/librenms:latest

Property Value
Networks librenms-internal
Depends on librenms

Environment:

TZ=${TZ:-UTC}
PUID=${PUID:-1000}
PGID=${PGID:-1000}
DB_HOST=db
DB_NAME=librenms
DB_USER=librenms
DB_PASSWORD=${LIBRENMS_DB_PASSWORD}
DB_TIMEOUT=60
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_DB=0
BASE_URL=https://librenms.${BASE_DOMAIN}
LIBRENMS_SNMP_COMMUNITY=${LIBRENMS_SNMP_COMMUNITY:-public}
SIDECAR_DISPATCHER=1
DISPATCHER_NODE_ID=dispatcher1

Volumes:


syslogng

Image: librenms/librenms:latest

Property Value
Networks librenms-internal
Depends on librenms
Ports External: 514->514 External: 514->514

Environment:

TZ=${TZ:-UTC}
PUID=${PUID:-1000}
PGID=${PGID:-1000}
DB_HOST=db
DB_NAME=librenms
DB_USER=librenms
DB_PASSWORD=${LIBRENMS_DB_PASSWORD}
DB_TIMEOUT=60
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_DB=0
BASE_URL=https://librenms.${BASE_DOMAIN}
SIDECAR_SYSLOGNG=1

Volumes:


snmptrapd

Image: librenms/librenms:latest

Property Value
Networks librenms-internal
Depends on librenms
Ports External: 162->162 External: 162->162

Environment:

TZ=${TZ:-UTC}
PUID=${PUID:-1000}
PGID=${PGID:-1000}
DB_HOST=db
DB_NAME=librenms
DB_USER=librenms
DB_PASSWORD=${LIBRENMS_DB_PASSWORD}
DB_TIMEOUT=60
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_DB=0
BASE_URL=https://librenms.${BASE_DOMAIN}
SIDECAR_SNMPTRAPD=1

Volumes:


Network Flow

sankey-beta External Scope, snmptrapd, 1 External Scope, syslogng, 1 Net: librenms-internal, db, 1 Net: librenms-internal, dispatcher, 1 Net: librenms-internal, librenms, 1 Net: librenms-internal, redis, 1 Net: traefik-public, librenms, 1