Files
nixos/manifests/monitoring/config.yaml
T
root ab6e1d24fe feat: comprehensive observability stack
- Add restic_backups and mattermost scrape jobs to Prometheus config
- Add UnPoller deployment+service+secret for UniFi metrics (unpoller.yaml)
- Add unifi scrape job targeting unpoller in-cluster
- Add 4 Grafana dashboards as NixOS-managed etc files on hosea:
  - system-health: CPU, memory, disk, network per host
  - backup-health: restic backup freshness and duration
  - kubernetes: pod counts, restart rates, node resources
  - network: DNS queries, DHCP leases, UniFi ports, ping latency
- Add grafana-api-token agenix secret placeholder on hosea
- Open firewall ports 9100/9427/9558 for prometheus exporters in baseline.nix
2026-03-25 09:23:31 -05:00

129 lines
4.4 KiB
YAML

apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-config
data:
prometheus.yml: |
global:
scrape_interval: 10s
evaluation_interval: 10s
alerting:
alertmanagers: []
rule_files:
- /etc/prometheus/alerts.yml
scrape_configs:
# This scrapes endpoints on my servers
- job_name: node
static_configs:
- targets:
- "genesis.shire-zebra.ts.net:9100"
- "isaiah.shire-zebra.ts.net:9100"
- "jeremiah.shire-zebra.ts.net:9100"
- "zeke.shire-zebra.ts.net:9100"
- "hosea.shire-zebra.ts.net:9100"
- "exodus.shire-zebra.ts.net:9100"
- "linode.shire-zebra.ts.net:9100"
- job_name: systemd
static_configs:
- targets:
- "genesis.shire-zebra.ts.net:9558"
- "isaiah.shire-zebra.ts.net:9558"
- "jeremiah.shire-zebra.ts.net:9558"
- "zeke.shire-zebra.ts.net:9558"
- "hosea.shire-zebra.ts.net:9558"
- "exodus.shire-zebra.ts.net:9558"
- "linode.shire-zebra.ts.net:9558"
- job_name: ping
static_configs:
- targets:
- "genesis.shire-zebra.ts.net:9427"
- "isaiah.shire-zebra.ts.net:9427"
- "jeremiah.shire-zebra.ts.net:9427"
- "zeke.shire-zebra.ts.net:9427"
- "hosea.shire-zebra.ts.net:9427"
- "exodus.shire-zebra.ts.net:9427"
- "linode.shire-zebra.ts.net:9427"
- job_name: kea
static_configs:
- targets:
- "genesis.shire-zebra.ts.net:9547"
- job_name: dnsmasq
static_configs:
- targets:
- "genesis.shire-zebra.ts.net:9153"
# Converter from TrueNAS
- job_name: graphite
static_configs:
- targets:
- "hosea.shire-zebra.ts.net:9108"
# Restic rest-server backup metrics
- job_name: restic_backups
static_configs:
- targets:
- "nas1.shire-zebra.ts.net:30248"
# Mattermost metrics
- job_name: mattermost
metrics_path: /metrics
static_configs:
- targets:
- "mattermost.thehellings.lan:8065"
# UniFi metrics via unpoller
- job_name: unifi
static_configs:
- targets:
- "unpoller.monitoring.svc.cluster.local:9130"
# This scrapes metrics from the Kubernetes kubelets
- job_name: kubelet
kubernetes_sd_configs:
- role: node
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
authorization:
credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
# This scrapes metrics about the containers themselves
- job_name: cadvisor
kubernetes_sd_configs:
- role: node
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
metrics_path: /metrics/cadvisor
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
#authorization:
# credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
# This scrapes Service endpoints in Kubernetes
- job_name: 'k8sservices'
kubernetes_sd_configs:
- role: endpointslice
relabel_configs:
- source_labels:
- __meta_kubernetes_namespace
- __meta_kubernetes_service_name
action: drop
regex: "default;kubernetes"
- source_labels:
- __meta_kubernetes_namespace
regex: default
action: keep
- source_labels:
- __meta_kubernetes_service_name
target_label: job
authorization:
credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
# This scrapes any exposed pod port named "metrics", assuming that it is
# a prometheus source
- job_name: k8spods
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels:
- __meta_kubernetes_pod_container_port_name
regex: metrics
action: keep
- source_labels:
- __meta_kubernetes_pod_container_name
target_label: job
authorization:
credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token