diff config/create_scrape_configs.py @ 60:e3151ab43579

moving scrape target configs in py, and into separate retention classes
author drewp@bigasterisk.com
date Sat, 27 Apr 2024 01:31:07 -0700
parents
children fb0519859645
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config/create_scrape_configs.py	Sat Apr 27 01:31:07 2024 -0700
@@ -0,0 +1,82 @@
+import json
+from pathlib import Path
+
+forever_jobs = [
+    'maildir-count',
+    'mongodb',
+    'net-traffic',
+    'ping',
+    'power-eagle',
+    'smartctl',
+    'wifi',
+    'zfs-exporter',
+    'zigbee2mqtt-exporter',
+    'zpool-exporter',
+]
+
+job_targets = {
+    'maildir-count': ['prime:2500'],
+    'mongodb': ['mongodb:9216'],
+    'net-traffic': ['pipe:8080'],
+    #   - job_name: "ping"
+    #     scrape_interval: 2m
+    #     metrics_path: /probe
+    #     params:
+    #       module: [icmp]
+    #     static_configs:
+    #       - targets:
+    #           # 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
+    #     relabel_configs:
+    #       - {source_labels: [__address__],    target_label: __param_target}
+    #       - {source_labels: [__param_target], target_label: instance}
+    #       - target_label: __address__
+    #         replacement: prober
+    'ping': [':80'], # multi target with tricks
+    'power-eagle': ['power-eagle:80'],
+    'smartctl': [':80'], # per-node!
+    'wifi': ['wifi:80'],
+    'zfs-exporter': ['ditto:9634'],
+    'zigbee2mqtt-exporter': ['zigbee2mqtt-exporter:80'],
+    'zpool-exporter': ['ditto:9986'],
+}
+
+for job in forever_jobs:
+    d = [{
+        "job_name": job,
+        "static_configs": [{
+            "targets": job_targets[job],
+        }],
+        "relabel_configs": [
+            {
+                "target_label": "namespace",
+                "replacement": "default"
+            },
+            {
+                "source_labels": ["__meta_kubernetes_pod_node_name"],
+                "target_label": "node"
+            },
+        ]
+    }]
+
+    if job == 'power-eagle':
+        # from powerEagle/private_config.periodSec
+        d[0]['relabel_configs'].append({
+            "action": "replace",
+            "target_label": "__scrape_interval__",
+            "replacement": "8s",
+        })
+
+    Path(f'{job}.yaml').write_text(json.dumps(d, indent=2, sort_keys=True))
+
+Path('scrape_forever.yaml').write_text(json.dumps({
+    "global": {
+        "scrape_interval": "1m",
+        "scrape_timeout": "10s"
+    },
+    "scrape_config_files": [f'{job}.yaml' for job in forever_jobs],
+}, indent=2))