diff create_scrape_configs.py @ 67:adde35eb4773

collapse ./next to ./
author drewp@bigasterisk.com
date Fri, 03 May 2024 11:21:08 -0700
parents next/create_scrape_configs.py@fada8d64c4d3
children c5e98d891638
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/create_scrape_configs.py	Fri May 03 11:21:08 2024 -0700
@@ -0,0 +1,170 @@
+from pathlib import Path
+
+from scrape_job import jobConfig, scrape_deployments, writeJobConfigs, FromName
+import private
+
+# previously this used `kubernetes_sd_configs: [{ role: node }]`
+all_hosts = [
+    'dash',
+    'ditto',
+    # 'ws-printer',
+    #todo:
+]
+
+smartctl_hosts = [
+    # ideally, all nodes with disks, but many turn off and on
+    'dash',
+    'ditto',
+]
+
+ping_hosts = [
+    # printer, since it falls out of ntop with no traffic at all. Or, we could poll ink status at http://printer/general/status.html?pageid=1
+    'printer',
+    # wireguard connection test
+    'prime5',
+    # after pyinfra or reboot, seems to lose wg0 address
+    'garage5',
+]
+
+
+forever_jobs = [
+    jobConfig(name='maildir-count',        targets=['prime:2500']),
+    jobConfig(name='mongodb',              targets=['mongodb:9216']),
+    jobConfig(name='net-traffic',          targets=['pipe:8080']),
+    jobConfig(name='ping',                 targets=ping_hosts,              scrape_interval='2m', ping_job=True),
+    jobConfig(name='power-eagle',          targets=['power-eagle:80'],      scrape_interval='8s'),  # from powerEagle/private_config.periodSec
+    jobConfig(name='powermeter-exporter',  targets=['powermeter-exporter'], scrape_interval='10s'),
+    jobConfig(name='smartctl',             targets=[f'{h}:9633' for h in smartctl_hosts]),
+    jobConfig(name='wifi',                 targets=['wifi:80']),
+    jobConfig(name='zfs-exporter',         targets=['ditto:9634']),
+    jobConfig(name='zigbee2mqtt-exporter', targets=['zigbee2mqtt-exporter:80']),
+    jobConfig(name='zpool-exporter',       targets=['ditto:9986']),
+    jobConfig(name='octoprint',            targets=['octoprint'],
+              metrics_path='/plugin/prometheus_exporter/metrics',
+              params={'apikey' : [private.octoprint_apikey]},
+              ),
+]  # yapf: disable
+
+recent_jobs = [
+    jobConfig(name="dnsmasq-log", targets=['pipe:9991']),
+    jobConfig(name="filebeat",    targets=[f'{h}:5067' for h in all_hosts]),
+    jobConfig(name="net-routes",  targets=['pipe:9999']),
+    jobConfig(name="net-traffic", targets=['pipe:8080']),
+    jobConfig(name="pomerium",    targets=['pomerium-metrics.pomerium:9090']),
+    jobConfig(name="telegraf",    targets=[f'{h}:9273' for h in all_hosts]),
+    jobConfig(name="victorialogs",targets=['victorialogs'], metrics_path='/logs/metrics'),
+
+    jobConfig(name="next-victoriametrics-forever-vmagent",   metrics_path='/m/next/forever/vmagent/metrics',  targets=FromName),
+    jobConfig(name="next-victoriametrics-forever-vminsert",  metrics_path='/m/next/forever/vminsert/metrics', targets=FromName),
+    jobConfig(name="next-victoriametrics-forever-vmstorage", metrics_path='/m/next/forever/vmstorage/metrics',targets=FromName),
+    jobConfig(name="next-victoriametrics-recent-vmagent",    metrics_path='/m/next/recent/vmagent/metrics',   targets=FromName),
+    jobConfig(name="next-victoriametrics-recent-vminsert",   metrics_path='/m/next/recent/vminsert/metrics',  targets=FromName),
+    jobConfig(name="next-victoriametrics-recent-vmstorage",  metrics_path='/m/next/recent/vmstorage/metrics', targets=FromName),
+    jobConfig(name="next-victoriametrics-vmselect",          metrics_path='/m/next/vmselect/metrics',         targets=FromName),
+    jobConfig(name="next-victoriametrics-index",                                                              targets=FromName),
+
+    # todo:
+    #  - video-files
+    #  - cert-manager
+    #  - syncthing(s)
+    #  - nvidia runner
+    #  - longhorn
+    #  - kube-system.metrics-server
+    jobConfig(
+        name="racc",
+        scrape_interval='30s',
+        targets=[
+            # - dash:5150
+            # - dot:5150
+            # - squib:5150
+            # - ashermac:5150
+        ],
+    ),
+]  # yapf: disable
+
+
+deploy_doesnt_serve_metrics = [
+    'apprise',
+    'bitwarden',
+    'digi-files',
+    'digi-pose-predict',
+    'digi-tts-mimic',
+    'digi-web',
+    'dovecot',
+    'ectoscope',
+    'front-door-display',
+    'hass',
+    'homepage',
+    'itch150',
+    'jsregistry',
+    'kallithea',
+    'kube-web-view',
+    'magma',
+    'megasecond',
+    'minecraft-build-world',
+    'minecraft-lake-world',
+    'minecraft-smp-world',
+    'mongodb',
+    'mqtt1',
+    'mqtt2',
+    'nodered',
+    'photoprism',
+    'plik',
+    'projects',
+    'registry-ui',
+    'registry',
+    'speakerphone',
+    'victorialogs-ui',
+    'video-files',
+    'video',
+    'zigbee2mqtt',
+    'zwave2mqtt',
+]
+
+existing_jobs = [j['job_name'] for j in forever_jobs + recent_jobs]
+recent_jobs.extend(scrape_deployments(deploy_doesnt_serve_metrics + existing_jobs))
+
+recent_jobs.append(jobConfig(name='kubernetes-apiservers', https=True, targets=[]) | {
+    'kubernetes_sd_configs': [{
+        'role': 'endpoints'
+    }],
+    'relabel_configs': [{
+        'source_labels': ['__meta_kubernetes_namespace', '__meta_kubernetes_service_name', '__meta_kubernetes_endpoint_port_name'],
+        'action': 'keep',
+        'regex': 'default;kubernetes;https'
+    }],
+})
+
+recent_jobs.append(
+    jobConfig(name="kubernetes-nodes", https=True, targets=[]) | {
+        "kubernetes_sd_configs": [{
+            "role": "node"
+        }],
+        "relabel_configs": [{
+            "action": "labeldrop",
+            "regex": "__meta_kubernetes_node_label_(feature_node|nvidia_com_|beta_kubernetes_io_arch|beta_kubernetes_io_instance_type|beta_kubernetes_io_os|node_kubernetes_io_instance_type|kubernetes_io_os).*"
+        }, {
+            "action": "labelmap",
+            "regex": "__meta_kubernetes_node_label_(.+)"
+        }, {
+            "action": "labeldrop",
+            "regex": "kubernetes_io_hostname"
+        }],
+    })
+
+# see https://github.com/google/cadvisor/blob/master/docs/storage/prometheus.md
+# for metric definitions
+
+recent_jobs.append(jobConfig(name="kubernetes-cadvisor", https=True, metrics_path="/metrics/cadvisor", targets=[]) | {
+    "kubernetes_sd_configs": [{
+        "role": "node"
+    }],
+    "relabel_configs": [{
+        "action": "labeldrop",
+        "regex": "(feature_node|nvidia_com_gpu|beta_kubernetes_io_arch|beta_kubernetes_io_instance_type|beta_kubernetes_io_os|node_kubernetes_io_instance_type|kubernetes_io_os).*"
+    }],
+})
+
+outDir = Path('build/scrape_config')
+writeJobConfigs(outDir, forever_jobs, 'forever')
+writeJobConfigs(outDir, recent_jobs, 'recent')