Monitoringยถ
Monitoring architectureยถ
Our monitoring architecture looks like this:
flowchart TB
admin(["`๐ค **System admin**`"])
subgraph alerts [Alerts]
direction TB
mattermost["`๐ฌ **Mattermost**
Team chat`"]
pushover["`๐ฑ **Pushover**
Push notifications`"]
end
uptime["`๐ฆ **Uptime Kuma**
*dockerised, central*
Service monitoring`"]
grafana["`๐ **Grafana**
*dockerised, central*
Dashboard & alert manager`"]
prometheus["`๐งฎ **Prometheus**
*dockerised, central*
Metrics collector`"]
loki["`๐ **Loki**
*dockerised, central*
Log aggregator`"]
alloy["`๐งฒ **Alloy**
*dockerised, per-host*
Log & metrics collector`"]
node_exporter["`๐ฅ **Node Exporter**
*native, per-host*
Machine metrics exporter`"]
admin -. runs queries .-> grafana
uptime -- sends alerts --> alerts
grafana -- sends alerts --> alerts
grafana -. PromQL ..-> prometheus
grafana -. LogQL ..-> loki
prometheus -- scrapes metrics --> node_exporter
prometheus <-- sends metrics --> alloy
loki <-- sends logs --> alloy
classDef notification fill:#62f69b,stroke:#2e9e5b,color:#000
classDef docker fill:#acd2e0,stroke:#4f8aa3,color:#000
classDef native fill:#f4b4b9,stroke:#b5666d,color:#000
class mattermost,pushover notification
class uptime,grafana,prometheus,loki,alloy docker
class node_exporter native
%% Alloy sends to Prometheus & Loki, but sits on the per-host level, so only show the start arrows.
linkStyle 6,7 marker-end:none
Monitoring alertsยถ
Monitoring alerts of the Service monitoring & Infrastructure monitoring will be sent to the Monitoring channel in Mattermost, and via Pushover.
Hint
Alerts are deactivated / silenced during the ๐ Maintenance windows.
Links for the Pushover subscriptions can be found in the Uptime monitoring alerts & Grafana monitoring alerts chapters.
Service monitoringยถ
Uptime Kumaยถ
Weโre using Uptime Kuma to monitor all of our services.
Important
Please note weโve a dedicated public status site based on Uptime Kuma.
Infrastructure monitoringยถ
Grafanaยถ
Weโre using Grafana OSS as dashboard & alert manager to:
Access Prometheus metrics via
PromQLAccess Loki logs via
LogQLVisualise metrics & logs
Use it as alert manager to send notifications to Mattermost
Prometheusยถ
Weโre using Prometheus as metrics collector to:
Scrape OS, and ๐ณ Docker metrics
Scrape application metrics
Persist those metrics
Query, aggregate, and correlate metrics via Grafana
Lokiยถ
Weโre using Grafana Loki as log receiver to:
Retrieve OS, and ๐ณ Docker logs
Retrieve application logs
Persist those logs
Query, aggregate, and correlate logs via Grafana
Alloyยถ
Weโre using Grafana Alloy collectors to:
Collect OS, and ๐ณ Docker logs
Retrieve ๐ณ Docker metrics
Forward them to Loki, and Prometheus
Node Exporterยถ
Weโre using Node Exporters to:
Expose OS metrics to Prometheus
Note
The deployment, and all documentation for the Node Exporter can be found in the Ansible node_exporter role.