treefmt / nix fmt (pull_request) Successful in 5s
pytest / pytest (pull_request) Successful in 30s
test ebook search / test-ebook-search (pull_request) Successful in 34s
build_systems / build-brain (pull_request) Successful in 49s
build_systems / build-bob (pull_request) Successful in 50s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m2s
build_systems / build-jeeves (pull_request) Successful in 2m14s
- scrape Portal-1 node metrics over Tailscale - add a hardened Vultr billing and bandwidth exporter - provision host health and infrastructure cost dashboards
97 lines
2.8 KiB
Nix
97 lines
2.8 KiB
Nix
{
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
vars = import ../vars.nix;
|
|
|
|
vultrExporter = pkgs.buildGoModule rec {
|
|
pname = "vultr-exporter";
|
|
version = "0-unstable-2025-10-14";
|
|
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "DazWilkin";
|
|
repo = "vultr-exporter";
|
|
rev = "d8b5d7107c2eda31566e6e895c8a67db32fdaf68";
|
|
hash = "sha256-3LpXh+mFMBRJfiY2ftELpM3AIE0LiZ9c6NFok0OeH5I=";
|
|
};
|
|
|
|
vendorHash = "sha256-qCHWmg6GxLIjqlf5UqRcuDRd1xqRFI3sl4ZduLajx+Y=";
|
|
subPackages = [ "cmd/server" ];
|
|
|
|
postPatch = ''
|
|
substituteInPlace cmd/server/main.go \
|
|
--replace-fail 'registry.MustRegister(collector.NewBlockStorageCollector(s, client, log))' "" \
|
|
--replace-fail 'registry.MustRegister(collector.NewKubernetesCollector(s, client, log))' "" \
|
|
--replace-fail 'registry.MustRegister(collector.NewLoadBalancerCollector(s, client, log))' "" \
|
|
--replace-fail 'registry.MustRegister(collector.NewReservedIPsCollector(s, client, log))' ""
|
|
'';
|
|
|
|
ldflags = [
|
|
"-s"
|
|
"-w"
|
|
"-X main.GitCommit=${src.rev}"
|
|
"-X main.OSVersion=NixOS"
|
|
];
|
|
|
|
postInstall = ''
|
|
mv $out/bin/server $out/bin/vultr-exporter
|
|
'';
|
|
|
|
meta = {
|
|
description = "Prometheus exporter for Vultr account, billing, and bandwidth metrics";
|
|
homepage = "https://github.com/DazWilkin/vultr-exporter";
|
|
license = lib.licenses.asl20;
|
|
mainProgram = "vultr-exporter";
|
|
};
|
|
};
|
|
in
|
|
{
|
|
systemd.services.vultr-exporter = {
|
|
description = "Vultr Prometheus exporter";
|
|
documentation = [ "https://github.com/DazWilkin/vultr-exporter" ];
|
|
wants = [ "network-online.target" ];
|
|
after = [ "network-online.target" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
|
|
serviceConfig = {
|
|
ExecStart = "${lib.getExe vultrExporter} --endpoint=127.0.0.1:9188 --path=/metrics";
|
|
EnvironmentFile = "${vars.secrets}/services/vultr-exporter";
|
|
Restart = "on-failure";
|
|
RestartSec = "30s";
|
|
|
|
CapabilityBoundingSet = [ "" ];
|
|
DeviceAllow = [ "" ];
|
|
DynamicUser = true;
|
|
LockPersonality = true;
|
|
MemoryDenyWriteExecute = true;
|
|
NoNewPrivileges = true;
|
|
PrivateDevices = true;
|
|
PrivateTmp = true;
|
|
ProtectClock = true;
|
|
ProtectControlGroups = true;
|
|
ProtectHome = true;
|
|
ProtectHostname = true;
|
|
ProtectKernelLogs = true;
|
|
ProtectKernelModules = true;
|
|
ProtectKernelTunables = true;
|
|
ProtectSystem = "strict";
|
|
RemoveIPC = true;
|
|
RestrictAddressFamilies = [
|
|
"AF_INET"
|
|
"AF_INET6"
|
|
];
|
|
RestrictNamespaces = true;
|
|
RestrictRealtime = true;
|
|
RestrictSUIDSGID = true;
|
|
SystemCallArchitectures = "native";
|
|
SystemCallFilter = [
|
|
"@system-service"
|
|
"~@privileged"
|
|
];
|
|
UMask = "0077";
|
|
};
|
|
};
|
|
}
|