GUIDES › MeshWatch Central

Other languages English · 日本語 · 한국어 · 简体中文

MeshWatch Central — installation and integration

Central is a server you run yourself. It takes alerts from the desktop products, puts them in one inbox, and correlates them by device. Current version 1.3.8.

In this version

Full release notes

Before you start

Central is meant to sit on a server that stays on, not on a laptop. It listens on port 8443, over plain HTTP — 8443 usually means HTTPS, but Central does not speak it until you put a reverse proxy in front. Typing https:// will simply fail to connect.

Two ways to install it. Read this before choosing:

Install — Docker

Docker has to be installed and running first. Then one command:

docker run -d --name meshwatch-central -p 8443:8443 -v central-data:/data ethan99199/meshwatch-central:1.3.8

Kept on one line on purpose: a backslash-continued version breaks when it is pasted into PowerShell, which does not use backslash to continue a line.

Check it started — you should see Up … (healthy):

docker ps --filter name=meshwatch-central

If the shell answers docker: The term 'docker' is not recognized or command not found, Docker itself is missing — or you opened the terminal before installing it, in which case a new terminal window will find it.

Install — Node bundle (including Windows Server)

Node.js 18 or newer, nothing else. Central has no npm dependencies, so nothing is downloaded at install time.

Unpack it somewhere permanent, then — in PowerShell — change into that folder first. Missing that step is the usual mistake; Node then looks for src\server.js in whatever folder you happen to be in and says Cannot find module.

cd C:\MeshWatchCentral\mwc-1.3.8
$env:MWC_DATA_DIR = "C:\ProgramData\meshwatch-central"; node src\server.js

On Linux or macOS:

MWC_DATA_DIR=/var/lib/meshwatch-central node src/server.js

MWC_DATA_DIR is where the database and settings are written. Pick a path that is backed up and that the account running Node can write to.

Started from a terminal, Central stops when that window closes. For a real deployment register it as a service — NSSM or a scheduled task set to run at startup on Windows, a systemd unit on Linux.

The bundle is licensed software, not open source. You may run it on your own servers; redistributing it is not permitted. The terms are in LICENCE.txt inside the archive.

First run

  1. Open http://<your-server>:8443 — or http://localhost:8443 if you are on the machine itself.
  2. Create the first administrator account. That screen only ever appears once.
  3. Open port 8443 so the products can reach the server. On Windows Server:
New-NetFirewallRule -DisplayName "MeshWatch Central 8443" -Direction Inbound -LocalPort 8443 -Protocol TCP -Action Allow

Find the address the products should use:

ipconfig | Select-String IPv4

Connecting a product

Nothing appears in Central until you connect something. Central does not discover products by itself; each one is pointed at it with a token.

  1. In Central, open Agents. Choose the product, type a label — this is not looked up anywhere, it is a name you invent to tell installations apart, such as Head office or Seoul DC — and press Issue token.
  2. The token is shown once. Copy it before closing the box. If it is lost, issue a new one and revoke the old.
  3. Pick the right product in that dropdown. A token belongs to the product it was issued for, and Central files every report under that product — never under whichever application sent it. That rule is deliberate: an application cannot claim to be a different product. The cost is that the wrong token fails silently. A DeviceWatch installation given a SyslogWatch token connects, reports successfully, and everything it sends appears under SyslogWatch while the DeviceWatch view stays empty, with no error at either end. The badge in each Agents row shows which product a token belongs to.
  4. In the product, open its MeshWatch Central settings and paste in the address and token. Where to find that setting: SyslogWatch, DeviceWatch and TrapWatch — Settings → MeshWatch Central. TrafficWatch — the Alerts button, which opens Alerts & delivery. CertWatch and ConfigWatch — the MeshWatch Central panel in the left sidebar.
  5. Use http://<central-server>:8443. Not localhost — the product is on a different machine. Not https://.
  6. Tick the box that sends alerts, save, then press Test connection. DeviceWatch 1.2.8 and newer, and SyslogWatch 1.3.8 and newer, skip the tick and the save: a successful test saves the address and token, switches the connection on, and the button becomes Done.

These versions have the connection. Older builds do not, and there will be nowhere to paste the token:

Connect MeshServerWatch

MeshServerWatch is the exception to the steps above: the setting lives in the MeshServerWatch Manager, the server that its agents report to, not on each monitored server. It needs Central 1.3.9 or newer, which adds MeshServerWatch to the product list in Agents. Issue a token for MeshServerWatch, then in the Manager's console open Settings → MeshWatch Central, enter Central's address and the token, and press Test: a successful test saves the settings and turns forwarding on; a token issued for another product is refused with the product's name. The Manager forwards every alert — thresholds, silence and the agents' error-log lines — and one device row per server (host name, IP and aliases, status up or silent, and a line such as “CPU 12% · Mem 56% · Disk C: 96%”), at most once per five minutes per server. Raw metric series are never forwarded; the charts stay on the Manager. Details: MeshServerWatch guide, section 7.

What actually crosses the network

Alert summaries, and a device name to correlate on. That is all.

Central never receives a raw log line, a configuration file, a certificate, a private key, or a packet capture. The products send severity, a device name and a one-line summary. This is not only a privacy position — it is why Central stays small and why a product keeps working normally when Central is unreachable.

Reading it

The console has seven tabs: Overview, Incidents, Alerts, Devices, Agents, Users and Settings. Agents and Users appear only for administrators. Times are shown in your browser’s local time; incident reports and CSV exports use UTC.

Overview

The front page, meant to be left open on a wall screen. Everything on it is counted from what Central already holds — nothing is estimated — and an empty panel says so, for example none in the last 24 hours, instead of showing a blank.

  • Status strip — agents by state (reporting, connected, waiting; revoked tokens counted apart), devices down, unacknowledged critical alerts (all time), incidents and alerts in the last 24 hours with the change against the previous 24 hours, and unacknowledged alerts for the last 24 hours and for all time.
  • Severity tiles — critical, error, warning and info in the last 24 hours, each with its change against the previous 24 hours.
  • Alerts per hour — the last 24 hours as hourly bars stacked by severity, labelled in your local time zone. Hover a bar for its counts.
  • Noisiest devices and Most frequent kinds — the top five of each over the last 24 hours.
  • Devices down — only devices whose status a product reported directly. A device known only from alerts has no status, so it never appears here.
  • Latest alerts — the ten most recent, each with an Acknowledge button.
  • Last 24 hours by product — alerts per product against the previous 24 hours. Every product with a live token is listed, including one that has sent nothing.
  • Latest correlated incidents — the five most recent.

Overview, Incidents, Alerts and Devices refresh every 30 seconds, but skip a refresh while you are typing or choosing in a field, so nothing you entered is wiped. Agents, Users and Settings never refresh by themselves — press Refresh at the top.

Alerts and incidents

An alert is one report a product sent — one row in Alerts. An incident is two or more different products reporting the same device within 30 minutes. Incidents are computed live from the alerts every time you look: they are never stored, have no open or closed state, and disappear when their alerts age out of retention. A single product repeating itself is not an incident — that is already visible in that product.

“The same device” is where it goes wrong. Each product names a device its own way: DeviceWatch sends the label you gave the device, SyslogWatch the host name from the syslog header, TrapWatch the IP address the trap came from. Central treats two names as one device only when they differ just by letter case or a domain suffix — core-sw-01.example.com and Core-SW-01 are both core-sw-01 — or when a product sends a matching host, IP or alias with its report. IP addresses are compared as written. Central does not guess beyond that: a label such as Core Switch stays a separate device from core-sw-01, because a wrong merge is worse than none.

If Incidents stays empty while two products watch the same device, open Devices. If the device appears on two rows, the products are naming it differently. Make the DeviceWatch label match the host name the other product uses — label the switch core-sw-01, not Core Switch. TrapWatch names a device by its IP address, so it correlates with a product that uses the same address.

Technical note: the report format accepts optional host, ip and aliases fields, and a product may send them. When one does, any name that matches links the rows as one device.

Alerts

Every alert from every connected product, newest first by the time the product put on it rather than when it arrived. Filter by Severity, Product and State (open or acknowledged). The Agent column shows which token sent each row and Kind the type of alert; if a product’s alerts appear under the wrong product, that token was issued for a different one. The tab shows the latest 200 matching alerts, and its title the real total.

Acknowledge works per alert and records who acknowledged it and when; the row then shows that name and time instead of the button. Operators and administrators can acknowledge; viewers see open.

Export CSV downloads the alerts that match the current filters, up to 500, with the columns When, Product, Agent, Device, Severity, Kind, Summary, Acknowledged At and Acknowledged By. Times in the file are UTC.

Incidents

One card per incident: the device, the worst severity among its alerts, the products involved, when it started and how many alerts over how many minutes. When the products used different names for the device, the others are listed after also reported as. The timeline below lists each alert in order, in your local time.

Download report saves a Markdown draft built only from that incident’s alerts; every time in it is UTC. Acknowledge all acknowledges every open alert in the incident in one go (operators and administrators). If the download says the incident is no longer available, its alerts have aged out.

Devices

One row per device, however many products report on it, with the columns Device, Label, Vendor, Reported by, Status and Last report. Other names the row was matched under are shown beneath the device name. Devices a product reports down sort to the top. The Product filter narrows the list to one product.

  • Status — one pill per product. DeviceWatch: up or DeviceWatch: down is a status that product reported. from alerts means the product named the device in an alert but has never sent its status, so up or down is unknown.
  • Last report — the time the product put on its latest report or alert. Hover the cell for when Central received it; a backlog delivered at once keeps its own times.
  • Click a row for the device’s full alert history across every product; click again to close it.

Agents

Administrators only. One row per token, with Product, Label, Created, Last contact, Last report and State.

  • waiting — the token has never contacted Central.
  • connected — the product’s Test connection succeeded, but it has not sent anything yet. That is normal until something happens: ConfigWatch reports after a backup run, TrapWatch on the first trap.
  • reporting — it has sent alerts or devices.

Products send no heartbeat, so Central never shows one as down. Last contact — the last time the token reached Central, whether a test or data — and Last report say when it was last heard from.

To issue a token, choose the product, type a label and press Issue token. The token is shown once, with a Copy button; press Done when it is pasted into the product, after which it cannot be shown again. Revoke makes Central reject everything sent with that token from then on; what it already sent stays. A revoked row can then be removed with Delete.

Users and roles

Administrators only. Three roles:

  • viewer — read only.
  • operator — can also acknowledge alerts.
  • admin — everything: accounts, tokens, retention, update checks and the licence.

Passwords need at least 12 characters; user names 3–64 characters of letters, digits and . _ - @. The only administrator cannot be demoted or removed — promote someone else first. Every write is checked on the server, not merely hidden in the interface. The Audit log below the user list shows the latest 50 entries: sign-ins and failed sign-ins, acknowledgements, tokens issued and revoked, and user, settings and licence changes, each with who and when. A forgotten password is reset on the server with node src/server.js --reset-password <username> (in Docker, prefix it with docker exec -it meshwatch-central).

Settings

  • Licence — state, organisation, expiry and days left. An administrator pastes a key and presses Activate (or Replace key, Remove key). When the trial or licence ends, Central stops accepting agent data; the console, existing data and the products themselves keep working.
  • Data retention — Keep alerts for (days), 1 to 730. Older alerts are deleted, and incidents built from them go with them.
  • Updates — off by default: Central makes no outbound connection until an administrator ticks Check once a day. When on, it requests one static file from meshwatch.app a day and sends nothing about your deployment. It can be locked off by policy. Central does not update itself; pull the new image and recreate the container.

Everyone can open Settings; only administrators can change it.

Running it properly

HTTPS

Put a reverse proxy in front for anything reachable outside a trusted network, then set MWC_SECURE_COOKIES=1. Setting that flag before HTTPS is in place will break login — session cookies get marked Secure and the browser will not send them over plain HTTP.

Backup

Everything lives in the data directory — /data in the container (mapped to the central-data volume) or whatever you set MWC_DATA_DIR to. Back that up and you have backed up Central: accounts, tokens, alerts and the audit log.

Retention

Configurable up to 730 days. The resource to plan for is disk space for retained alerts, which scales with how many devices you connect and how long you keep them.

If Central goes down

Nothing is queued to a server Central does not control, and no product depends on Central to do its own job. Each product keeps monitoring exactly as it did before Central existed; you lose the shared inbox and the correlation, nothing else. Products hold recent alerts in a small queue and send them when Central comes back.

Troubleshooting

The dashboard is all zeros

Nothing has been connected yet, or the connected product has not raised an alert since it was connected. Past alerts are not backfilled.

A product reports, but its rows are empty — and another product has them

That product is using a token issued for the other one. Central files reports under the product named on the token, so they land in the wrong place and nothing reports an error. Check the badge in each Agents row, then issue a token for the right product and revoke the wrong one. Current product releases refuse a mismatched token when you press Test connection and name the product it belongs to.

An agent shows “connected” but nothing arrives

That is not a failure. connected means the product’s Test connection succeeded and it has not sent anything yet; the row switches to reporting on its first real report, because a product sends only when something happens. ConfigWatch reports after one backup run, even when nothing changed; TrapWatch when the first trap arrives. waiting means the token has never contacted Central. There is no heartbeat, so Central never shows a product as down — the Last contact and Last report columns in Agents say when it was last heard from.

Incidents stays empty

Connect a second product. An incident needs two different products reporting the same device within 30 minutes. If two are connected, open Devices: a device on two rows is being named differently by each product — see Alerts and incidents.

The browser will not connect

Check http://, not https://. Then check that port 8443 is open on the server, and that you used the server’s address rather than localhost from another machine.

Test connection says bad-token

The token was mistyped, or revoked. Issue a new one from Agents. Tokens are shown once and cannot be read back.

Alerts are refused with “at is N minutes in the future”

Central answers with 400 when an alert is dated more than five minutes ahead of its own clock. The clock on the machine running the product is ahead: correct it, ideally with NTP. The message includes Central’s time for comparison. A refused alert does not count as a report, so the agent does not switch to reporting.