No description
  • Jinja 54.9%
  • JavaScript 45.1%
Find a file
Jesus Alejandro Sanchez Davila 4a584bd1a7
All checks were successful
Ansible Lint / ansible-lint (push) Successful in 1m27s
Merge pull request 'Trim comments to short reasons instead of full explanations' (#4) from chore/trim-comments into main
Reviewed-on: #4
Reviewed-by: Jesus Alejandro Sanchez Davila <jsanchezd@noreply.git.silvarion.org>
2026-10-08 06:57:52 +00:00
.forgejo/workflows Trim comments to short reasons instead of full explanations 2026-10-07 10:50:04 +02:00
changelogs Add antsibull-changelog config 2026-10-01 16:18:29 +02:00
playbooks Updates and improvements to follow ansible guidelines 2026-08-29 22:02:31 +02:00
roles Trim comments to short reasons instead of full explanations 2026-10-07 10:50:04 +02:00
.ansible-lint.yml Trim comments to short reasons instead of full explanations 2026-10-07 10:50:04 +02:00
AGENTS.md docs: rename CLAUDE.md/AGENT.md to AGENTS.md 2026-09-24 09:32:45 +02:00
galaxy.yml Fixed linting 2026-10-01 15:14:52 +02:00
README.md Add Prometheus, Grafana, node_exporter, and prometheus-pve-sd roles 2026-08-31 23:22:34 +02:00

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