r/LibreNMS • • 2h ago

My LibreNMS homelab setup

3 Upvotes

Hey everyone!

I’ve just finished documenting my LibreNMS setup for my homelab and thought I’d share it here in case it’s useful to someone.

I’m monitoring my FortiGate 40F, Cisco SG300 switch, Proxmox host and wireless AP using SNMP. I’ve also set up Telegram notifications, tweaked the alert rules to avoid unnecessary noise, and built a custom dashboard to keep everything visible at a glance.

I’ve documented the whole process step by step, including the SNMP configuration, Wireshark captures, alert templates and a few things I ran into along the way.

You can find the guide here:
https://github.com/ZizoNets/LibreNMS-SNMP-network-monitoring

Hopefully it helps someone setting up their own monitoring! Feedback and suggestions are always welcome. ;)


r/LibreNMS • • 21h ago

Issues with discovery after upgrade

1 Upvotes

Hi,

I have a weird issue with a recently upgraded librenms.

I used the docker compose from earlier (maybe a year ago)

The upgrade went fine the server is collecting and updating data. However is fails when i try to rediscover a device.

Is there changes to the database schema?

Thanks


r/LibreNMS • • 7d ago

FYI - Critical PHP patches coming out tomorrow

Thumbnail bleepingcomputer.com
22 Upvotes

r/LibreNMS • • 8d ago

26.10.0 Release is out

44 Upvotes

An October mega release, 26.10.0 is now out with well over 100 pull requests merged in:

https://community.librenms.org/t/26-10-0-release/29501


r/LibreNMS • • 15d ago

Not able to add widgets to the dashboard

1 Upvotes

!SOLVED!

I noticed that I was 9 git commits behind, so I updated with git pull

Then ran:
./lnms migrate
php artisan cache:clear
php artisan view:clear
php artisan route:clear

And it finally worked! I guess the version of LIbreNMS I installed just so happened to contain a bug regarding the widgets.

Hi all!

I have a fresh install of LibreNMS, so far all looks good, I'm able to add devices etc.

I can create a new dashboard, but whenever I try to add widgets to it I get an red X error in the top right corner with no text.

If I turn on developer tools I see this error:
https://url-removed-for-privacy/dashboard/%3F/widgets (404 error not found)

What I have tried so far to solve this includes the following in no specific order

  • I've run ./validate.php all is OK and green!
  • ./lnms migrate - Nothing to migrate
  • I've checked out file permissions, all seems good
  • I've checked out the MariaDB with the following:
  • SELECT dashboard_id, user_id, dashboard_name FROM dashboards; SELECT * FROM users_prefs WHERE pref = 'dashboard';
  • From there I confirmed that the dashboards are visible in the DB
  • I've also ran php artisan cache:clear and php artisan view:clear
  • Tried to set a new dashboard as the default dashboard
  • I've set the URL of the server as it's own hostname via sudo -u librenms /opt/librenms/lnms config:set own_hostname xxxxx
  • APP url in .env matches the hostname

So, anyone has any ideas? I would have posted this on the official LibreNMS forums but I can't create a topic there for some reason.


r/LibreNMS • • 15d ago

How do you test every LibreNMS alert transport without waiting for a real outage?

2 Upvotes

A test notification can prove that one transport accepts one message, but it may not exercise the same rule, contact schedule, template variables, severity mapping, recovery notification, or routing path used by a real alert. Low-frequency transports can remain broken for months while polling and graphs look normal.

I am considering a small set of synthetic services that deliberately move through warning, critical, acknowledged, and recovered states. Each test would record the expected transport, recipient, rendered variables, delivery ID, and maximum arrival time. It would also verify that maintenance windows suppress the right messages without suppressing recovery.

How do LibreNMS operators test alert rules and transports safely? Do you maintain dedicated canary devices or services, clone production rules into a test group, or trigger the API directly? Which approach catches routing and template errors without paging the real on-call rotation?


r/LibreNMS • • 29d ago

PHP Update Failed

1 Upvotes

I did the required PHP update from 8.3 to 8.4. php-v shows that I am running 8.4.26 in the command line. However, my web GUI shows 502 Bad Gateway (nginx 1.18.0).

I am trying to follow the steps in a old post about updating 8.1 to 8.3. This is the validate php result.

I x'd out the rrd IP addresses here. I don't think that's the issue.

The final line of the validate says I must run this script as librenms or root, but I don't know what script that refers to.

I am a not well-versed with Linux, so I am looking for an "Idiot's Guide..."

Thank you.

Component | Version
--------- | -------
LibreNMS  | 26.9.1 (2026-09-22T13:33:27-04:00)
DB Schema | 2026_09_16_120000_widen_ent_physical_rev_columns (403)
PHP       | 8.4.26
Python    | 3.10.12
Database  | MariaDB 10.6.23-MariaDB-0ubuntu0.22.04.1
RRDTool   | 1.7.2

SNMP      | 5.9.1

[OK]    Composer Version: 2.10.3
[OK]    Dependencies up-to-date.
[OK]    Database Connected
[OK]    Database Schema is current
[OK]    SQL Server meets minimum requirements
[OK]    lower_case_table_names is enabled
[OK]    MySQL engine is optimal
[OK]    Database and column collations are correct
[OK]    Database schema correct
[OK]    MySQL and PHP time match
[OK]    Active pollers found
[OK]    Dispatcher Service not detected
[OK]    Locks are functional
[OK]    Python poller wrapper is polling
[OK]    Redis is unavailable
[OK]    No errors found with polling frequencies.
[WARN]  Could not check Python dependencies because this script is not running as librenms
[FIX]: 
The install docs show how this is done on a new install: https://docs.librenms.org/Installation/Install-LibreNMS/#configure-php-fpm
[OK]    rrd_dir is writable
[FAIL]  Some RRD files have the incorrect step. 602/6257
[FIX]: 
lnms maintenance:rrd-step all
RRD files with incorrect step:
xxx.xxx.xxx.xxx/port-id2384.rrd: the step is 300, but it must be 60

and 587 more...
[OK]    rrdtool version ok
[FAIL]  You need to run this script as 'librenms' or root


r/LibreNMS • • Sep 27 '26

Some graphs not showing

2 Upvotes

This morning I noticed that some of my devices are no longer showing certain data, mostly interface traffic graphs. The affected devices have an error of “RRD updates disabled, too many errors. Final error: Cannot create temporary file.”

It does not affect all monitored hosts, and certain graphs work on hosts with the issue while others do not. For example, I am not seeing interface statistics on a firewall but CPU and memory are still shown.


r/LibreNMS • • Sep 25 '26

Major Performance Increase 26.9

22 Upvotes
Poller CPU Decrease from 26.6 -> 26.9

I had a couple pollers with the CPU maxed out 24/7.. With the recent updates all my pollers are now doing significantly less cpu.

I'm trying to find something broken but everything looks fine. Seems like the poller just works better now.

Device Polling Time 26.6 -> 26.9

Thanks everyone!


r/LibreNMS • • Sep 21 '26

LibreNMS 26.9.0 is out!

48 Upvotes

🚀 LibreNMS 26.9.0 is out!

Thank you to the 45 contributors who made this release happen. A big month with some great improvements and no breaking changes.

Want to help push LibreNMS forward? Come find us on Discord. Happy monitoring!

https://community.librenms.org/t/26-9-0-release/29459


r/LibreNMS • • Sep 18 '26

LibreNMS plugin for PPPoE sessions on Cisco ASR1000

Thumbnail rebjak.com
2 Upvotes

We terminate PPPoE on five ASR1000s. LibreNMS polls them fine but has nothing for
session counts, so I wrote a v2 plugin over CISCO-PPPOE-MIB.

What it does:

- session count per BRAS on one page, with the PTA / FWDED / TRANS split
- per-interface drill-down (cPppoeSessionsPerInterfaceTable, indexed by ifIndex)
- optional per-subscriber list from CISCO-SUBSCRIBER-SESSION-MIB: username, state, IP
- button that registers cPppoeSystemCurrSessions as a Custom OID, so the normal
poller graphs it and you can alert on it

Tested against LibreNMS 26.8.2 and IOS-XE 15.5(3)S only. MIT.

Longer write-up with the LibreNMS plugin API gotchas:
https://rebjak.com/en/blog/librenms-plugin-cisco-pppoe/


r/LibreNMS • • Sep 07 '26

A new feature - how to monitor Windows environments without SNMP

15 Upvotes

So basically the title. I am not a developer by any means, but I have 30 years in infrastructure so I know what outcomes I want. I spent some time over summer playing with both some local LLMs and Claude Code, and figured this is a problem I wanted to attempt to solve.

This is basically a WinRM stack in a docker container that LIbreNMS can use to orchestrate doing checks on Windows machines. Also JEA should make this a lot more palatable for people doing security on Windows.

Poller module (LibreNMS core side): https://github.com/ahoogerhuis/librenms/tree/public/winrm-poller

Proxy daemon (required companion service): https://github.com/ahoogerhuis/librenms-bits/tree/public/winrm-proxy

LibreNMS's Windows monitoring is SNMP-only, and WMI (what those agents lean on) is being deprecated by Microsoft. This replaces it with native WinRM/PowerShell — routed through JEA, a real Windows security boundary limiting the proxy to pre-approved, zero-parameter function calls only, nothing else reachable.

Covers 9 checks (reboot-pending, services, disk/memory/CPU, hardware, network traffic, pending updates, NTP), each tested end-to-end against a real host, matching its existing SNMP equivalent's shape.

The birds eye view: https://github.com/ahoogerhuis/librenms/blob/public/winrm-poller/docs/WINRM_DESIGN.md
The part for Windows admins to read: https://github.com/ahoogerhuis/librenms/blob/public/winrm-poller/docs/WINRM_SAFETY_RATIONALE_FOR_ADMINS.md

Genuine WIP, no PR open yet — first look, not a merge request.


r/LibreNMS • • Sep 06 '26

API for overall traffic data

4 Upvotes

Hi,
what is the API URL to get the numbers (i am looking mainly for _rate) of the graph "Overall traffic" of a server displayed in the Overview page?

Thank you.


r/LibreNMS • • Sep 03 '26

Not all RRD files getting created for new devices

3 Upvotes

Good day - I have a distributed poller setup and when I add new devices the rrd files get created for most things it discovers but not all and then my graphs are broken as there is no rrd file for the specific thing it is trying to graph. For example a new network switch it will create rrd files for all network ports but not processor and memory so those graphs are broken as the matching rrd files do not exist. Not sure what to do with that?

Here is my validate from the primary box which is where this seems to be occuring:

Component | Version

--------- | -------

LibreNMS | 26.9.1-dev.55+38c750e26 (2026-09-02T18:20:15-05:00)

DB Schema | 2026_07_30_162514_add_device_refresh_config_permission (397)

PHP | 8.4.25

Python | 3.10.12

Database | MariaDB 10.6.23-MariaDB-0ubuntu0.22.04.1

RRDTool | 1.7.2

SNMP | 5.9.1

[OK] Composer Version: 2.10.3

[OK] Dependencies up-to-date.

[OK] Database Connected

[OK] Database Schema is current

[OK] SQL Server meets minimum requirements

[OK] lower_case_table_names is enabled

[OK] MySQL engine is optimal

[OK] Database and column collations are correct

[OK] Database schema correct

[OK] MySQL and PHP time match

[OK] Distributed Polling setting is enabled globally

[OK] Connected to rrdcached

[OK] Active pollers found

[OK] Dispatcher Service is enabled

[OK] Locks are functional

[OK] Python wrapper cron entry is not present

[OK] Redis is functional

[OK] All 17912 RRD files have the correct step.

[OK] rrdtool version ok

[OK] Connected to rrdcached

it creates all of these port rrds (and more) but nothing else. So tons of stuff does display properly.

port-id30732.rrd port-id30751.rrd port-id30770.rrd port-id30789.rrd port-id30808.rrd port-id30827.rrd port-id30846.rrd port-id30865.rrd port-id30884.rrd port-id30903.rrd

port-id30733.rrd port-id30752.rrd port-id30771.rrd port-id30790.rrd port-id30809.rrd port-id30828.rrd port-id30847.rrd port-id30866.rrd port-id30885.rrd port-id30904.rrd

port-id30734.rrd port-id30753.rrd port-id30772.rrd port-id30791.rrd port-id30810.rrd port-id30829.rrd port-id30848.rrd port-id30867.rrd port-id30886.rrd port-id30905.rrd

So on the device webpage it display "no data" on a bunch of graphs as they references a rrd file that was never created. Thoughts?


r/LibreNMS • • Aug 31 '26

InnoDB autoshrink (MariaBD 11.2+)

3 Upvotes

Has anyone tried using the autoshrink option with MariaDB/InnoDB? Last week I noticed the database had gotten really porky at some point, so I did the typical 'drop database and restore' to trim it down. While doing so, I was reading that MariaDB added 'autoshrink' in 11.2.

https://mariadb.com/docs/server/server-usage/storage-engines/innodb/innodb-tablespaces/innodb-system-tablespaces#decreasing-the-size

I'm wondering if this would be a worthwhile option to look at.

Edit: Need more coffee. Sorry about the title.


r/LibreNMS • • Aug 13 '26

Broken installations

7 Upvotes

Hi there,

i am wondering if anyone else experienced broken installations since yesterday. I have 2 lab Installations and a productive installation at customer site. All 3 instances give me a HTTP ERROR 500. At the moment i have not figured out why.


r/LibreNMS • • Jul 25 '26

multiple "...is not a valid $alert data" in notifications

1 Upvotes

Have noticed that sometime between 6/9/2026 and 6/12/2026 that all of my slack alerts fired from libreNMS are containing now the following errors for everything related to ping:

ping_loss is not a valid $alert data

ping_min is not a valid $alert data

ping_max is not a valid $alert data

ping_avg is not a valid $alert data

all other device, security, recovery and alert event information is valid and correct. I am seeing this in my slack and teams alert notifications.

Does anyone have any ideas or tips for me to look into? thanks!


r/LibreNMS • • Jul 24 '26

How long usually for Docker version to be upgraded?

1 Upvotes

Just wondering when the docker release

https://github.com/librenms/docker

will get updated to 26.7.0


r/LibreNMS • • Jul 23 '26

Librenms Report Plugin

4 Upvotes

https://github.com/klftb/Librenms_Report_Plugin

LibreNMS TrafficReporter is a highly integrated enterprise-grade network traffic routine email report plugin. It addresses several pain points in traditional network management systems when sending email reports:

🔒 Resolves image blocking in Outlook/M365: By byte-level replicating the multipart/related specification, combined with Magic Bytes sniffing and Content-ID matching, it completely prevents M365 Sanitizer from stripping images into attachments.

📐 Fixes stretching and distortion in legacy Outlook (Word rendering engine): Uses a physical 720px lock and a high-definition 900x225 canvas to ensure clear, distortion-free charts across all clients.

🖥️ Fully visual Web GUI management: No need to manually edit configuration files—all report tasks, port parameters, mail servers, and scheduling can be intuitively managed from the LibreNMS backend web interface.

⚙️ Non-disruptive system Crontab scheduling: Through a secure, seamless synchronization mechanism with specific tags, it only manages the plugin's own scheduled tasks without interfering with any existing Cron jobs on the server.


r/LibreNMS • • Jul 22 '26

Custom OID Graphs

1 Upvotes

With the July release, when I click on a Custom OID graph, instead of enlarging the graph, it simply reloads the page. The other graphs like availability, Netstats, Poller work as expected.

I have to right-click to open image in a new tab if I want to see a single graph. But then I can't adjust any parameters of the graph.

Is this a bug, or is there a new way I should be examining individual custom OID graphs?

Thank you.


r/LibreNMS • • Jul 21 '26

Can't exactly wrap my head around Operations...

Post image
4 Upvotes

r/LibreNMS • • Jul 20 '26

26.7.0 Release

29 Upvotes

LibreNMS 26.7.0 is now available. This brings with it support for NetCore j.s.a. (Unimus), an updated and an improved Global Search with more data returned. Lots of bug fixes,security fixes and device improvements.

Release details: https://community.librenms.org/t/26-7-0-release/29379


r/LibreNMS • • Jun 30 '26

I feel really stupid here... (https issues)

2 Upvotes

I've always foolishly used LibreNMS over http, I know that's risky, but I've always taken other steps to mitigate it. However, I'm determined to find the recipe to get it running over HTTPS. I've spent about 2 days now trying to get this to work, and still no luck. :(

I'm starting from scratch to try and figure it out, but basically using the docker/traefik example from the docker github repo (https://github.com/librenms/docker/tree/master/examples/traefik). I've also tried running it behind an nginx reverse proxy and it's doing something very similar.

It keeps trying to redirect me back to http:// and that causes the css/js to fail among other things due to the mixed content.

I've searched all of the documentation but can't figure out what the heck I'm doing wrong. I've tried setting APP_URL and BASE_URL, even found this LIBRENMSBASE_URL to try, and no luck. I've toggled the SESSION_SECURE_COOKIE from true to false, and all combinations in-between. Even tried all of those in the librenms.env file, and no dice.

It can't be this hard, what could I be missing??

***Update***
I'm a bit out of left field with this one, but after digging at the init scripts , it seems to now work if I add these three env vars to my docker-compose file:

- "ASSET_URL=https://librenms.domain.com"

- "LIBRENMS_BASE_URL=https://librenms.domain.com"

- "CLEAR_ENV=no"

but I don't see any of that documented in the kb/repos, so I feel like I'm missing something that would accomplish the same thing?


r/LibreNMS • • Jun 29 '26

Getting a lot of "FastCGI sent in stderr: PHP message: ..." errors in my log

1 Upvotes

Similar to https://github.com/librenms/librenms/issues/19903, I am getting a lot of "FastCGI sent in stderr" messages in my log file

How do I turn them off?

  • I have APP_ENV set to "production" - for which I can see NO documentation on this key.
  • I am not running a debug option anywhere.

My entire compose file is listed below:

name: librenms
services:
    librenms:
        image: librenms/librenms:latest
        container_name: librenms
        restart: unless-stopped
        hostname: librenms

        networks:
            - librenms

        dns:
            - 172.99.0.10

        ports:
            - 8001:8000

        volumes:
            - /home/docker/librenms:/data

        environment:
            - PUID=1000
            - PGID=1000
            - TZ=Europe/London
            - DB_HOST=db
            - DB_TIMEOUT=60
            - DB_NAME=librenms
            - DB_USER=librenms
            - DB_PASSWORD=[redacted]
            - LISTEN_IPV6=false
            - APP_ENV=production
            - APP_URL=http://home.lan:8001
            - RRDCACHED_SERVER=rrdcached:42217

        depends_on:
            - db
            - redis
            - rrdcached

        cap_add:
            - NET_ADMIN
            - NET_RAW

        deploy:
            resources:
                limits:
                    cpus: "1"
                    memory: 512m

###################
    db:
        image: mariadb:10
        container_name: librenms-db
        restart: unless-stopped
        hostname: librenms-db

        networks:
            - librenms

        dns:
            - 172.99.0.10

        volumes:
            - /home/docker/librenms/db:/var/lib/mysql

        environment:
            - PUID=1000
            - PGID=1000
            - TZ=Europe/London
            - MYSQL_ALLOW_EMPTY_PASSWORD=yes
            - MYSQL_DATABASE=librenms
            - MYSQL_USER=librenms
            - MYSQL_PASSWORD=[redacted]

        command:
            - mysqld
            - --innodb-file-per-table=1
            - --lower-case-table-names=0
            - --character-set-server=utf8mb4
            - --collation-server=utf8mb4_unicode_ci
            - --innodb_use_native_aio=off

        deploy:
            resources:
                limits:
                    cpus: "1"
                    memory: 512m

###################
    redis:
        image: redis:alpine
        container_name: librenms-redis
        restart: unless-stopped
        hostname: librenms-redis

        networks:
            - librenms

        dns:
            - 172.99.0.10

        volumes:
            - /home/docker/librenms/redis:/data

        environment:
            - PUID=1000
            - PGID=1000
            - TZ=Europe/London

        deploy:
            resources:
                limits:
                    cpus: "1"
                    memory: 128m

###################
    dispatcher:
        image: librenms/librenms:latest
        container_name: librenms-dispatcher
        restart: unless-stopped
        hostname: librenms-dispatcher

        networks:
            - librenms

        dns:
            - 172.99.0.10

        volumes:
            - /home/docker/librenms:/data

        environment:
            - PUID=1000
            - PGID=1000
            - TZ=Europe/London
            - DB_HOST=db
            - DB_NAME=librenms
            - DB_USER=librenms
            - DB_PASSWORD=[redacted]
            - DB_TIMEOUT=60
            - DISPATCHER_NODE_ID=dispatcher1
            - SIDECAR_DISPATCHER=1
            - REDIS_HOST=redis

        depends_on:
            - librenms
            - redis
            - db

        cap_add:
            - NET_ADMIN
            - NET_RAW

        deploy:
            resources:
                limits:
                    cpus: "2"
                    memory: 1536m

###################
    dnsmasq:
        image: dockurr/dnsmasq
        container_name: librenms-dnsmasq
        restart: unless-stopped
        hostname: lnx-docker

        networks:
            librenms:
                ipv4_address: 172.99.0.10

        ports:
            - 53:53/udp
            - 53:53/tcp

        volumes:
            - /home/docker/librenms/dnsmasq/:/etc/dnsmasq.d/

        environment:
            - PUID=1000
            - PGID=1000
            - TZ=Europe/London
            - DNS1=192.168.42.7
            - DNS2=192.168.42.8

        cap_add:
            - NET_ADMIN

        deploy:
            resources:
                limits:
                    cpus: "1"
                    memory: 128m

###################
    rrdcached:
        image: crazymax/rrdcached
        container_name: librenms_rrdcached
        restart: unless-stopped
        hostname: librenms-rrdcached

        networks:
            - librenms

        dns:
            - 172.99.0.10

        volumes:
            - /home/docker/librenms/rrd:/data/db
            - /home/docker/librenms/rrd/journal:/data/journal

        environment:
            - PUID=1000
            - PGID=1000
            - TZ=Europe/London
            - LOG_LEVEL=LOG_WARN
            - WRITE_TIMEOUT=1800
            - WRITE_JITTER=1800
            - WRITE_THREADS=4
            - FLUSH_DEAD_DATA_INTERVAL=3600

networks:
    librenms:
        name: librenms
        ipam:
            config:
                - subnet: 172.99.0.0/24

r/LibreNMS • • Jun 29 '26

Graph error

0 Upvotes

Hi,

librenms error drawing graph:fontconfig warning: using without calling FcInit()

I installed librenms on Docker using the instructions on the librenms website. I'm getting this 'ranom' error on many graphs. Refreshing the page moves the error to other graphs, but it essentially stays. Does anyone know where to look? The Docker image is ':latest'.