annotate scrape_job.py @ 74:177c0a2eab1e

prom annotations are ignored
author drewp@bigasterisk.com
date Fri, 03 May 2024 15:00:40 -0700
parents adde35eb4773
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
61
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
1 import json
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
2 from pathlib import Path
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
3 import subprocess
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
4
64
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
5 class FromName:
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
6 pass
61
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
7
64
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
8 def jobConfig(name, targets, scrape_interval=None, ping_job=False, metrics_path=None, params=None, https=False):
61
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
9 """one scrape job config"""
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
10 ret = {
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
11 "job_name": name,
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
12 "relabel_configs": [
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
13 {
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
14 "target_label": "namespace",
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
15 "replacement": "default"
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
16 },
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
17 {
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
18 "source_labels": ["__meta_kubernetes_pod_node_name"],
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
19 "target_label": "node"
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
20 },
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
21 ]
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
22 }
64
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
23
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
24 if targets is FromName:
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
25 targets = [name]
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
26
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
27 if targets:
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
28 ret["static_configs"] = [{
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
29 "targets": targets,
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
30 }]
61
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
31
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
32 if metrics_path:
64
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
33 ret.setdefault('relabel_configs', []).append({
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
34 "action": "replace",
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
35 "target_label": "__metrics_path__",
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
36 "replacement": metrics_path,
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
37 })
61
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
38
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
39 if scrape_interval:
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
40 ret['scrape_interval'] = scrape_interval
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
41
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
42 if params:
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
43 ret['params'] = params
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
44
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
45 if ping_job:
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
46 ret['metrics_path'] = '/probe'
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
47 ret['params'] = {'module': ['icmp']}
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
48 ret["relabel_configs"] = [
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
49 {
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
50 "source_labels": ["__address__"],
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
51 "target_label": "__param_target"
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
52 },
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
53 {
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
54 "source_labels": ["__param_target"],
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
55 "target_label": "instance"
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
56 },
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
57 {
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
58 "target_label": "__address__",
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
59 "replacement": "prober"
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
60 },
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
61 ]
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
62
64
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
63 if https:
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
64 ret['scheme'] = 'https'
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
65 ret["tls_config"] = {"ca_file": "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"}
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
66 ret["bearer_token_file"] = "/var/run/secrets/kubernetes.io/serviceaccount/token"
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
67
61
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
68 return ret
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
69
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
70
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
71 def current_deployments():
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
72 deploys = json.loads(subprocess.check_output(['kubectl', 'get', 'deploy', '-o=json']))
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
73 for deploy in deploys['items']:
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
74 name = deploy['metadata']['name']
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
75 yield name
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
76
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
77
64
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
78 def scrape_deployments(skip_names):
61
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
79 ret = []
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
80 for name in current_deployments():
64
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
81 if name in skip_names:
61
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
82 continue
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
83 targets = [name]
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
84 ret.append(jobConfig(name=name, targets=targets))
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
85 return ret
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
86
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
87
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
88 def writeJobConfigs(outDir: Path, jobConfs: list, retention: str):
62
8134cd480817 make next/ a complete standalone setup dir- no deps on ./
drewp@bigasterisk.com
parents: 61
diff changeset
89 outDir.mkdir(exist_ok=True, parents=True)
61
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
90 filenames_written = []
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
91 for job in jobConfs:
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
92 filename = f'job_{job["job_name"]}.yaml'
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
93 (outDir / filename).write_text(json.dumps([job], indent=2, sort_keys=True))
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
94 filenames_written.append(filename)
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
95
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
96 (outDir / f'scrape_{retention}.yaml').write_text(json.dumps({
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
97 "global": {
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
98 "scrape_interval": "1m",
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
99 "scrape_timeout": "10s"
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
100 },
64
def1aa2bfa3f more targets polish. reorg code into next/
drewp@bigasterisk.com
parents: 62
diff changeset
101 "scrape_config_files": sorted(filenames_written),
61
fb0519859645 better py configs
drewp@bigasterisk.com
parents:
diff changeset
102 }, indent=2))