DumbMonit

Surveillances

Serveurs et matériel

Machines Linux, Windows, macOS et FreeBSD via l'agent, matériel serveur via son contrôleur de gestion, onduleurs et Active Directory.

Les descriptions des surveillances et les textes des règles d'alerte sont en anglais, comme dans le produit. Les libellés de la page suivent votre langue.

Server with agent

agent

Linux, Windows, macOS or FreeBSD: CPU, memory, disks, network, Docker, services, backups.

Exemples

  • Linux server
  • Windows server
  • Raspberry Pi

Ce qu'il faut

Aucun compte nécessaire.

Règles d'alerte livrées 13

  • AlerteMonitor unreachableNo measurement received for more than three minutes. bottomk by (target) (1, time() - tlast_over_time(dumbmonit_up[7d]))
  • AvisHigh CPUCPU load sustained above 90%, averaged per monitor across SNMP, Proxmox and agent sources; clears below 85 %.
  • InfoUnusual CPUCPU load noticeably different from the usual at this time and day of the week (seasonal baseline).
  • AvisDisk almost fullFilesystem 90% full or more, per mount point (SNMP, Proxmox storages and root filesystems); clears below 88 %.
  • AvisFilesystem almost fullAt this rate, the filesystem will be full within four days.
  • AlerteDisk SMART failingThe disk's own SMART self-assessment reports it as failing. Replace it and check the backups.
Afficher 7 de plus
  • AlerteZFS pool degradedA ZFS pool is no longer healthy: a device is missing, faulted or removed.
  • AlerteZFS scrub found errorsThe last ZFS scrub found errors on this pool, or files are permanently lost. The pool can stay ONLINE.
  • AlerteTemperature above criticalA sensor is above the critical temperature its own hardware declares; no fixed value.
  • AvisContainer stoppedThe container has been stopped for two minutes. A container Docker would not restart is left out: a one-shot docker run that finished, a container never started, or one stopped by hand without a restart policy. A crash (any other exit code), an out-of-memory kill, or an always / unless-stopped container still counts.
  • AvisContainer unhealthyThe container's health check has been failing for three minutes. A stopped container is left out: Docker keeps its last verdict, which no longer means anything.
  • AvisContainer restartingThe container restarted three times or more in fifteen minutes (increase(dumbmonit_container_restart_count[15m])): it is rarely stopped long enough for the previous rule.
  • InfoContainer update availableA newer image is available in the registry for this container.
Étapes de mise en place: Install the agent on the machine
  1. In DumbMonit, add a monitor and pick Server with the agent, then choose how the machine reaches the server: directly, or through the relay of a remote site behind a firewall.

  2. An enrollment token (its secret starts with dmon_; the token is listed as tok_… afterwards) is shown once, with the install command ready to copy for Linux/macOS, Windows and Docker.

  3. Run that install command on the machine, with elevated rights (sudo on Linux and macOS, an elevated PowerShell on Windows).

  4. The page waits for the first report (a few seconds), then lets you name the machine, file it in a folder and place it at a site, on the spot.

  5. Optional, for Docker: if the agent runs under a dedicated user, add that user to the "docker" group and restart the agent.

    usermod -aG docker dumbmonit
  6. For a fleet (a playbook, a machine image), tick Several machines with this command; a whole Windows domain goes through the Active Directory kit, offered on the same page.

À savoir. The agent contacts the server, never the other way round: no port needs to be opened on the monitored machine.

Documentation

Windows (WinRM, no agent)

winrm

A Windows server or PC without installing anything, through WinRM and WMI queries: CPU, memory, disks, services (the chosen ones and every automatic service that is stopped), uptime and recent event log errors.

Exemples

  • Windows Server 2019
  • Windows Server 2022
  • Windows 11 workstation

Ce qu'il faut

  • Windows accountA local or domain account in the Remote Management Users group, as dumbmonit, DOMAIN\dumbmonit or dumbmonit@domain.

Port par défaut: 5986

Règles d'alerte livrées 1

  • AlerteMonitor unreachableNo measurement received for more than three minutes. bottomk by (target) (1, time() - tlast_over_time(dumbmonit_up[7d]))
Étapes de mise en place: Give DumbMonit a WinRM account on the Windows server
  1. On the server, in an elevated PowerShell, enable WinRM.

    Enable-PSRemoting -SkipNetworkProfileCheck -Force
  2. Create the HTTPS listener with a certificate named after the server (use your own certificate instead of this self-signed one if you have one), then open its port.

    $cert = New-SelfSignedCertificate -DnsName "srv01.corp.example.com" -CertStoreLocation Cert:\LocalMachine\My
    New-Item -Path WSMan:\LocalHost\Listener -Transport HTTPS -Address * -CertificateThumbPrint $cert.Thumbprint -Force
    New-NetFirewallRule -DisplayName "WinRM HTTPS" -Direction Inbound -Protocol TCP -LocalPort 5986 -Action Allow
  3. Create the account with a long random password, then add it to the groups listed below.

    net user dumbmonit * /add
    net localgroup "Remote Management Users" dumbmonit /add
    net localgroup "Performance Monitor Users" dumbmonit /add
    net localgroup "Event Log Readers" dumbmonit /add
  4. Give the account access to the WMI namespace: wmimgmt.msc → right-click WMI Control → Properties → Security → Root → CIMV2 → Security, add it and tick Enable Account and Remote Enable.

  5. In DumbMonit, enter the server name as its certificate names it (srv01.corp.example.com) and log in as dumbmonit, or DOMAIN\dumbmonit for a domain account.

À savoir. The account runs no command on the server, it only reads WMI. NTLM and Basic (HTTPS only) are supported, Kerberos is not. Pending Windows updates cannot be read this way. A self-signed certificate needs the option Accept an unverifiable certificate.

Documentation

Server hardware (Redfish)

redfish

Fans, temperatures, power supplies, drives and memory, read from the BMC (iDRAC, iLO…).

Exemples

  • Supermicro BMC
  • Dell iDRAC
  • HPE iLO
  • Lenovo XClarity Controller
  • ASRock Rack BMC

Ce qu'il faut

  • Management controller account

Port par défaut: 443

Règles d'alerte livrées 7

  • AlerteServer fan failedThe management controller reports a fan as failed.
  • AlerteServer temperature above criticalA temperature sensor is above the critical threshold the controller itself declares.
  • AvisPower supply redundancy lostThe power supplies are no longer redundant: one more failure and the server goes down.
  • AlertePower supply failedThe controller reports a power supply as failed.
  • AvisDrive failure predictedA drive reports a predicted failure: replace it while it still works.
  • AlerteServer health criticalThe controller reports the system's own health as Critical.
Afficher 1 de plus
  • AlerteMonitor unreachableNo measurement received for more than three minutes. bottomk by (target) (1, time() - tlast_over_time(dumbmonit_up[7d]))
Étapes de mise en place: Create a read-only account on the management controller
  1. Open the web interface of the management controller (BMC), not the operating system of the server.

  2. Create a local user named as follows, with a long password used nowhere else.

    dumbmonit
  3. Give it the read-only right of your vendor, listed below.

  4. In DumbMonit, enter the controller address (bmc.lan or 10.0.0.50) with that user name and password.

À savoir. Do not reuse the controller's factory account, which can power the server off and reflash the firmware; a self-signed certificate needs "Accept an unverifiable certificate" ticked.

Documentation

UPS with NUT

nut

UPS served by Network UPS Tools: on battery, low or worn-out battery, charge, runtime left, load and input voltage, for every UPS the server publishes.

Exemples

  • Synology or QNAP NAS with a USB UPS
  • Raspberry Pi running NUT
  • TrueNAS UPS service

Ce qu'il faut

  • upsd user name / passwordSent with USERNAME and PASSWORD before reading. upsd does not check them to read; set them only if your setup asks for them.

Aucun compte nécessaire.

Port par défaut: 3493

Règles d'alerte livrées 3

  • AlerteUPS on batteryThe UPS is powering the load from battery.
  • AlerteUPS battery lowThe UPS battery is low or depleted.
  • AlerteMonitor unreachableNo measurement received for more than three minutes. bottomk by (target) (1, time() - tlast_over_time(dumbmonit_up[7d]))
Étapes de mise en place: Let DumbMonit read the NUT server
  1. On a plain NUT install, add this line to upsd.conf and restart upsd.

    LISTEN 0.0.0.0 3493
  2. Open TCP port 3493 in the firewall for the DumbMonit host.

  3. On a NAS, enable its network UPS server instead: Synology DSM → Control Panel → Hardware & Power → UPS, then add the DumbMonit host under Permitted DiskStation Devices.

  4. Optional, to name this client: add a user without actions or instcmds to upsd.users, with a long random password, and restart upsd.

    [dumbmonit]
    password = a-long-random-password
  5. In DumbMonit, enter the NUT server's address (nas.lan): every UPS it publishes is watched.

À savoir. DumbMonit watches the UPS; it shuts nothing down: the machines it powers still need their own NUT client (upsmon) to shut down cleanly.

Documentation

Active Directory

activedirectory

A Windows domain over LDAP, read-only: domain controllers and FSMO roles, privileged group members, password policy, and security findings such as Kerberos-roastable accounts, unconstrained delegation or an old krbtgt password.

Exemples

  • Windows Server domain controller
  • Samba AD domain controller

Ce qu'il faut

  • Service accountA plain domain user created for DumbMonit, member of no group.

Port par défaut: 636

Règles d'alerte livrées 6

  • AlerteDomain controller unreachableA domain controller of the domain no longer answers on its LDAP port. A name that does not resolve from DumbMonit produces no series and never fires.
  • AvisActive Directory bind failedThe domain controller answers but refuses the service account: expired password, disabled or locked-out account.
  • AvisPrivileged group membership changedA member joined or left Domain Admins, Enterprise Admins, Schema Admins, Administrators or an operators group, nesting included (changes_prometheus(dumbmonit_ad_privileged_group_fingerprint[1h]), label group). Resolves by itself an hour later.
  • AvisActive Directory replication failingThe queried domain controller cannot replicate from a partner. Only when the account may read replication status.
  • Infokrbtgt password older than 180 daysThe krbtgt password was last changed more than 180 days ago.
  • AlerteMonitor unreachableNo measurement received for more than three minutes. bottomk by (target) (1, time() - tlast_over_time(dumbmonit_up[7d]))
Étapes de mise en place: Create a read-only service account for DumbMonit
  1. Active Directory Users and Computers → your domain → Users → New → User: name it as follows, set a long random password and add it to no group.

    svc-dumbmonit
  2. On its Account tab, tick Password never expires, or the bind fails the day the password does.

  3. Optional, to see inbound replication status: grant the account the right listed below on the domain object.

    dsacls "DC=corp,DC=example,DC=com" /G "CORP\svc-dumbmonit:CA;Monitor active directory replication"
  4. For LDAPS, export your certification authority's certificate as Base-64 encoded X.509 and paste it as CA certificate below.

  5. In DumbMonit, enter a domain controller's name as its certificate names it (dc1.corp.example.com) and log in as [email protected].

À savoir. Plain LDAP on port 389 sends the password in clear and is refused by default: use LDAPS, or StartTLS on port 389.

Documentation

Prometheus exporter

prometheus

Any exporter that serves Prometheus metrics (node_exporter, windows_exporter, cAdvisor, blackbox_exporter…): every series is stored and can be graphed and used in threshold alerts.

Exemples

  • node_exporter
  • windows_exporter
  • cAdvisor
  • blackbox_exporter

Ce qu'il faut

  • Basic authFor an exporter behind basic authentication (web.config.file, or a reverse proxy).
  • Bearer tokenSent as "Authorization: Bearer …" on every read.

Aucun compte nécessaire.

Port par défaut: 9100

Règles d'alerte livrées 1

  • AlerteMonitor unreachableNo measurement received for more than three minutes. bottomk by (target) (1, time() - tlast_over_time(dumbmonit_up[7d]))
Étapes de mise en place: Point DumbMonit at the exporter
  1. Check that the exporter answers from the DumbMonit host.

    curl http://server.lan:9100/metrics
  2. In DumbMonit, enter the host and pick the exporter, or leave custom and give the port.

  3. Optional: restrict what is stored with Keep only or Ignore, to keep a large exporter within the series limit.

  4. Optional: if the exporter is on another site, choose a relay agent to read it from there.

À savoir. Metrics pages are usually unauthenticated: filter the port so that only the DumbMonit host reaches it.

Documentation

OpenTelemetry source

otlp

Receives OpenTelemetry metrics (OTLP over HTTP) from a collector or an instrumented application: gauges, counters and histograms are stored and can be graphed and alerted on.

Exemples

  • OpenTelemetry Collector
  • Instrumented application
  • Docker host with an OTel agent

Ce qu'il faut

Aucun compte nécessaire.

Règles d'alerte livrées 1

  • AlerteMonitor unreachableNo measurement received for more than three minutes. bottomk by (target) (1, time() - tlast_over_time(dumbmonit_up[7d]))
Étapes de mise en place: Send OTLP/HTTP to DumbMonit
  1. In Settings, API & assistants, create a token with the write scope. Restrict it to the network of your collector.

  2. Save this source, then note its number: it ends the address of its page, /devices/<number>.

  3. In the otlphttp exporter of your collector, set the endpoint to this server followed by /api/otlp, then add two headers: Authorization with the token, and X-DumbMonit-Target with the number of this source.

    https://monit.example.com/api/otlp
  4. Make sure counters and histograms use cumulative temporality (the default); for delta, add the deltatocumulative processor.

  5. Optional: logs sent to /api/otlp/v1/logs are stored in VictoriaLogs when it is enabled in Settings, Storage.

À savoir. OTLP over gRPC is not supported: configure the otlphttp exporter, not otlp. The token can write to the whole API: keep it in the collector's secrets.

Documentation