Merge pull request 'jupiter: add VictoriaMetrics monitoring' (#1) from feat/mars-victoriametrics into master
Reviewed-on: #1 Reviewed-by: darman <mail@erik-s.dev>
This commit was merged in pull request #1.
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
../../services/network/caddy.nix
|
||||
../../services/vpn/tailscale.nix
|
||||
../../services/monitoring/node-exporter.nix
|
||||
../../services/monitoring/victoriametrics.nix
|
||||
../../services/media/jellyfin.nix
|
||||
../../services/media/sabnzbd.nix
|
||||
../../services/media/prowlarr.nix
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
{ ... }:
|
||||
|
||||
# VictoriaMetrics single-node store for the homelab dashboard on Jupiter. It
|
||||
# listens on all interfaces, but tailscale.nix makes tailscale0 the only trusted ingress;
|
||||
# the host firewall therefore keeps :8428 off the LAN and public interfaces.
|
||||
#
|
||||
# The scrape targets are the node_exporter instances enabled by
|
||||
# services/monitoring/node-exporter.nix on every real host. MagicDNS names use
|
||||
# the tailnet's orbit.sol suffix (see services/vpn/headscale.nix).
|
||||
{
|
||||
services.victoriametrics = {
|
||||
enable = true;
|
||||
retentionPeriod = "15d";
|
||||
listenAddress = ":8428";
|
||||
|
||||
prometheusConfig = {
|
||||
global.scrape_interval = "5s";
|
||||
|
||||
scrape_configs = [
|
||||
{
|
||||
job_name = "node-exporter";
|
||||
static_configs = [
|
||||
{
|
||||
targets = [ "127.0.0.1:9100" ];
|
||||
labels.host = "jupiter";
|
||||
}
|
||||
{
|
||||
targets = [ "mars.orbit.sol:9100" ];
|
||||
labels.host = "mars";
|
||||
}
|
||||
{
|
||||
targets = [ "neptun.orbit.sol:9100" ];
|
||||
labels.host = "neptun";
|
||||
}
|
||||
{
|
||||
targets = [ "terra.orbit.sol:9100" ];
|
||||
labels.host = "terra";
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
job_name = "node-exporter-mercury";
|
||||
scrape_interval = "15s";
|
||||
scrape_timeout = "10s";
|
||||
static_configs = [
|
||||
{
|
||||
targets = [ "mercury.orbit.sol:9100" ];
|
||||
labels.host = "mercury";
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
job_name = "victoriametrics";
|
||||
static_configs = [
|
||||
{
|
||||
targets = [ "127.0.0.1:8428" ];
|
||||
labels.host = "jupiter";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# Start after Tailscale has had a chance to establish MagicDNS. This is only
|
||||
# ordering, not a hard dependency: VictoriaMetrics still starts locally if
|
||||
# another host or the tailnet is temporarily unavailable.
|
||||
systemd.services.victoriametrics.after = [ "tailscaled-autoconnect.service" ];
|
||||
|
||||
fileSystems."/var/lib/private/victoriametrics" = {
|
||||
device = "/mnt/data/AppData/victoriametrics";
|
||||
fsType = "none";
|
||||
options = [ "bind" "nofail" ];
|
||||
};
|
||||
|
||||
# The service path is under /var/lib/private, so systemd would otherwise
|
||||
# derive its mount dependency from the eMMC-backed path alone.
|
||||
systemd.services.victoriametrics.unitConfig.RequiresMountsFor = [ "/mnt/data" ];
|
||||
}
|
||||
Reference in New Issue
Block a user