metrics: phase 1 follow-up (review, no switch)

Honcho workspace_name keep, node_exporter restart metrics,
drop min_over_time on rule 1, Watchdog heartbeat, pin tether
to b267e2f so labelled series exist and rule 2 can fire.
This commit is contained in:
2026-09-23 23:43:11 -07:00
parent 4958493485
commit ec74e0b69c
4 changed files with 36 additions and 15 deletions
+4
View File
@@ -6,6 +6,10 @@
port = 9100; port = 9100;
listenAddress = "0.0.0.0"; listenAddress = "0.0.0.0";
enabledCollectors = [ "systemd" ]; enabledCollectors = [ "systemd" ];
extraFlags = [
"--collector.systemd.enable-restarts-metrics"
''--collector.systemd.unit-include=(llama-server|llama-vision)\.service''
];
openFirewall = false; openFirewall = false;
}; };
Generated
+5 -5
View File
@@ -497,16 +497,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1790149025, "lastModified": 1790231260,
"narHash": "sha256-3EUf6ke80hm8o+YyS3wsEfEl5P4a6z6XCNwgYRIhxos=", "narHash": "sha256-q/W1fOY/+LRL1NzIPEY0lQ/hIoSFu7lxnQlxJQVDaFQ=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "c89894b8dcac89aaea9ad72529524c1204884bc0", "rev": "b267e2fde780f6bd26fd4747a7a2df655788b7fc",
"revCount": 3, "revCount": 6,
"type": "git", "type": "git",
"url": "ssh://git@git.wntrmute.dev/kyle/tether" "url": "ssh://git@git.wntrmute.dev/kyle/tether"
}, },
"original": { "original": {
"rev": "c89894b8dcac89aaea9ad72529524c1204884bc0", "rev": "b267e2fde780f6bd26fd4747a7a2df655788b7fc",
"type": "git", "type": "git",
"url": "ssh://git@git.wntrmute.dev/kyle/tether" "url": "ssh://git@git.wntrmute.dev/kyle/tether"
} }
+1 -1
View File
@@ -26,7 +26,7 @@
sift.url = "git+ssh://git@git.wntrmute.dev/kyle/sift?rev=4372673184f2e353c9b3e12d964951556c0ec2ff"; sift.url = "git+ssh://git@git.wntrmute.dev/kyle/sift?rev=4372673184f2e353c9b3e12d964951556c0ec2ff";
sift.inputs.nixpkgs.follows = "nixpkgs"; sift.inputs.nixpkgs.follows = "nixpkgs";
tether.url = "git+ssh://git@git.wntrmute.dev/kyle/tether?rev=c89894b8dcac89aaea9ad72529524c1204884bc0"; tether.url = "git+ssh://git@git.wntrmute.dev/kyle/tether?rev=b267e2fde780f6bd26fd4747a7a2df655788b7fc";
tether.inputs.nixpkgs.follows = "nixpkgs"; tether.inputs.nixpkgs.follows = "nixpkgs";
lector.url = "github:kisom/lector"; lector.url = "github:kisom/lector";
+26 -9
View File
@@ -3,6 +3,11 @@
{ ... }: { ... }:
let let
honchoKeep = "up|deriver_queue_items_pending|deriver_queue_oldest_pending_age_seconds|deriver_queue_work_units_claimed|deriver_queue_work_units_eligible|dialectic_calls.*|db_connections_open|db_queries_in_flight"; honchoKeep = "up|deriver_queue_items_pending|deriver_queue_oldest_pending_age_seconds|deriver_queue_work_units_claimed|deriver_queue_work_units_eligible|dialectic_calls.*|db_connections_open|db_queries_in_flight";
honchoRelabel = [
{ source_labels = [ "__name__" ]; regex = honchoKeep; action = "keep"; }
# dialectic_calls is workspace-labelled; empty or hermes-fleet only.
{ source_labels = [ "workspace_name" ]; regex = "|hermes-fleet"; action = "keep"; }
];
in in
{ {
imports = [ ../../configs/metrics/exporters.nix ]; imports = [ ../../configs/metrics/exporters.nix ];
@@ -62,17 +67,13 @@ in
job_name = "honcho-api"; job_name = "honcho-api";
metrics_path = "/metrics"; metrics_path = "/metrics";
static_configs = [{ targets = [ "rift:8000" ]; }]; static_configs = [{ targets = [ "rift:8000" ]; }];
metric_relabel_configs = [ metric_relabel_configs = honchoRelabel;
{ source_labels = [ "__name__" ]; regex = honchoKeep; action = "keep"; }
];
} }
{ {
job_name = "honcho-deriver"; job_name = "honcho-deriver";
metrics_path = "/metrics"; metrics_path = "/metrics";
static_configs = [{ targets = [ "rift:9090" ]; }]; static_configs = [{ targets = [ "rift:9090" ]; }];
metric_relabel_configs = [ metric_relabel_configs = honchoRelabel;
{ source_labels = [ "__name__" ]; regex = honchoKeep; action = "keep"; }
];
} }
]; ];
}; };
@@ -94,6 +95,15 @@ in
group_wait = "30s"; group_wait = "30s";
group_interval = "5m"; group_interval = "5m";
repeat_interval = "4h"; repeat_interval = "4h";
routes = [
{
matchers = [ ''alertname="Watchdog"'' ];
receiver = "mattermost";
repeat_interval = "24h";
group_interval = "24h";
group_wait = "0s";
}
];
}; };
receivers = [ receivers = [
{ {
@@ -101,6 +111,7 @@ in
slack_configs = [ slack_configs = [
{ {
api_url_file = "/run/credentials/alertmanager.service/mattermost-webhook"; api_url_file = "/run/credentials/alertmanager.service/mattermost-webhook";
channel = "~alerts";
send_resolved = true; send_resolved = true;
title = "{{ .Status | toUpper }} {{ .CommonLabels.alertname }}"; title = "{{ .Status | toUpper }} {{ .CommonLabels.alertname }}";
text = "{{ range .Alerts }}{{ .Annotations.summary }}{{ end }}"; text = "{{ range .Alerts }}{{ .Annotations.summary }}{{ end }}";
@@ -130,15 +141,15 @@ in
rules = [ rules = [
{ {
alert = "Dixie9BSlotsSaturated"; alert = "Dixie9BSlotsSaturated";
expr = ''min_over_time(llamacpp:requests_processing{job="llama-dixie-helper"}[10m]) >= 8''; expr = ''llamacpp:requests_processing{job="llama-dixie-helper"} >= 8'';
for = "10m"; for = "10m";
labels.severity = "page"; labels.severity = "page";
annotations.summary = "dixie 9B slots busy for 10m"; annotations.summary = "dixie 9B slots busy for 10m";
} }
{ {
alert = "TetherCancelStorm"; alert = "TetherCancelStorm";
# Needs titan's labelled tether series. Unlabelled sum is a # Tether b267e2f: labelled series exist. Never sum() without a selector
# double-count — never sum() a tether series without a selector. # (unlabelled totals sit next to them).
expr = '' expr = ''
sum(rate(tether_cancelled_total{reason="client_disconnect"}[15m])) sum(rate(tether_cancelled_total{reason="client_disconnect"}[15m]))
/ /
@@ -183,6 +194,12 @@ in
{ {
name = "fleet-meta"; name = "fleet-meta";
rules = [ rules = [
{
alert = "Watchdog";
expr = "vector(1)";
labels.severity = "heartbeat";
annotations.summary = "alerting pipeline is alive";
}
{ {
alert = "FleetTargetDown"; alert = "FleetTargetDown";
expr = ''up{job=~"vm|node|nvidia-dixie|llama-dixie-helper|llama-dixie-vision|tether|sift"} == 0''; expr = ''up{job=~"vm|node|nvidia-dixie|llama-dixie-helper|llama-dixie-vision|tether|sift"} == 0'';