No description
- Jinja 54.9%
- JavaScript 45.1%
|
All checks were successful
Ansible Lint / ansible-lint (push) Successful in 1m27s
Reviewed-on: #4 Reviewed-by: Jesus Alejandro Sanchez Davila <jsanchezd@noreply.git.silvarion.org> |
||
|---|---|---|
| .forgejo/workflows | ||
| changelogs | ||
| playbooks | ||
| roles | ||
| .ansible-lint.yml | ||
| AGENTS.md | ||
| galaxy.yml | ||
| README.md | ||
silvarion.monitoring
Ansible collection providing standardized monitoring roles, built around Beszel (host-level resource stats) and Uptime Kuma (service uptime checks) — complementary, not overlapping: Beszel answers "is this host healthy," Uptime Kuma answers "is this specific service actually responding."
Roles
| Role | Description |
|---|---|
| beszel | Beszel hub — the web dashboard, installed as a native systemd service |
| beszel_agent | Beszel agent — per-host stats collector, installed as a native systemd service on any monitored host |
| uptime_kuma | Uptime Kuma — service uptime monitor (HTTP/TCP/ping/DNS checks, alerting, public status pages), installed as a native systemd service. Needs a Node.js runtime — pair with silvarion.devtools.nodejs |
| prometheus | Prometheus monitoring server — native systemd service, checksum-verified binary release |
| grafana | Grafana OSS — dashboards, installed via the official APT/YUM repository; provisions a Prometheus datasource by default |
| node_exporter | Prometheus node_exporter — host-level CPU/memory/disk/network metrics, native systemd service. Deliberate redundancy with Beszel — see role README before deploying fleet-wide |
| prometheus_pve_sd | thegeeklab/prometheus-pve-sd — Proxmox VE service discovery for Prometheus (there's no native support), installed via pip/virtualenv. Writes a file_sd_configs JSON file; wiring it into Prometheus's scrape config is a separate step — see role README |
Requirements
- Ansible >= 2.14
- Supported platforms: Ubuntu 22.04/24.04, Debian 12, RHEL/Rocky/Alma 9
Usage
- name: Install the Beszel hub
hosts: monitoring_servers
vars:
beszel_config_app_url: "https://monitoring.example.com"
roles:
- role: silvarion.monitoring.beszel
- name: Install a Beszel agent
hosts: all
vars:
beszel_agent_config_hub_url: "http://monitoring.internal:8090"
beszel_agent_config_token: "{{ lookup('silvarion.provision.openbao', ...) }}"
beszel_agent_config_key: "{{ lookup('silvarion.provision.openbao', ...) }}"
roles:
- role: silvarion.monitoring.beszel_agent
beszel_agent_config_token/beszel_agent_config_key are minted by the hub itself (Settings > Tokens) — see
roles/beszel_agent/README.md for why these can't be pre-generated the way most secrets in this repo are.
- name: Install Uptime Kuma
hosts: monitoring_servers
vars:
nodejs_nvm_node_version: "24.20.0"
uptime_kuma_node_bin_dir: "{{ nodejs_nvm_dir }}/versions/node/v{{ nodejs_nvm_node_version }}/bin"
tasks:
- ansible.builtin.include_role:
name: silvarion.devtools.nodejs
- ansible.builtin.include_role:
name: silvarion.monitoring.uptime_kuma
Unlike Beszel, Uptime Kuma needs a Node.js runtime already present — see roles/uptime_kuma/README.md.
Installation
ansible-galaxy collection install silvarion.monitoring