更新API接口
This commit is contained in:
parent
ad9cf38f12
commit
bed55db16f
2624
agent/bench.py
2624
agent/bench.py
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,8 @@
|
||||
import requests
|
||||
|
||||
|
||||
def callback(job, connection, result, *args, **kwargs):
|
||||
from agent.server import Server
|
||||
|
||||
jcloud_url = Server().jcloud_url
|
||||
requests.post(url=f"{jcloud_url}/api/method/jcloud.api.callbacks.callback", data={"job_id": job.id})
|
||||
import requests
|
||||
|
||||
|
||||
def callback(job, connection, result, *args, **kwargs):
|
||||
from agent.server import Server
|
||||
|
||||
jcloud_url = Server().jcloud_url
|
||||
requests.post(url=f"{jcloud_url}/api/action/jcloud.api.callbacks.callback", data={"job_id": job.id})
|
||||
|
||||
228
agent/monitor.py
228
agent/monitor.py
@ -1,114 +1,114 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
import requests
|
||||
|
||||
from agent.server import Server
|
||||
|
||||
|
||||
class Monitor(Server):
|
||||
def __init__(self, directory=None):
|
||||
super().__init__(directory=directory)
|
||||
self.prometheus_directory = "/home/jingrow/prometheus"
|
||||
self.alertmanager_directory = "/home/jingrow/alertmanager"
|
||||
|
||||
def update_rules(self, rules):
|
||||
rules_file = os.path.join(self.prometheus_directory, "rules", "agent.yml")
|
||||
self._render_template(
|
||||
"prometheus/rules.yml",
|
||||
{"rules": rules},
|
||||
rules_file,
|
||||
{
|
||||
"variable_start_string": "###",
|
||||
"variable_end_string": "###",
|
||||
},
|
||||
)
|
||||
|
||||
promtool = os.path.join(self.prometheus_directory, "promtool")
|
||||
self.execute(f"{promtool} check rules {rules_file}")
|
||||
|
||||
self.execute("sudo systemctl reload prometheus")
|
||||
|
||||
def update_routes(self, routes):
|
||||
config_file = os.path.join(self.alertmanager_directory, "alertmanager.yml")
|
||||
self._render_template(
|
||||
"alertmanager/routes.yml",
|
||||
{"routes": routes},
|
||||
config_file,
|
||||
{
|
||||
"variable_start_string": "###",
|
||||
"variable_end_string": "###",
|
||||
},
|
||||
)
|
||||
amtool = os.path.join(self.alertmanager_directory, "amtool")
|
||||
self.execute(f"{amtool} check-config {config_file}")
|
||||
|
||||
self.execute("sudo systemctl reload alertmanager")
|
||||
|
||||
def discover_targets(self):
|
||||
targets = self.fetch_targets()
|
||||
for cluster in targets["clusters"]:
|
||||
self.generate_prometheus_cluster_config(cluster)
|
||||
|
||||
self.generate_prometheus_tls_config(targets["tls"])
|
||||
self.generate_prometheus_sites_config(targets["benches"])
|
||||
self.generate_prometheus_domains_config(targets["domains"])
|
||||
|
||||
def fetch_targets(self):
|
||||
jcloud_url = self.config.get("jcloud_url")
|
||||
jcloud_token = self.config.get("jcloud_token")
|
||||
return requests.post(
|
||||
f"{jcloud_url}/api/method/jcloud.api.monitoring.targets",
|
||||
data={"token": jcloud_token},
|
||||
).json()["message"]
|
||||
|
||||
def generate_prometheus_sites_config(self, benches):
|
||||
prometheus_sites_config = os.path.join(self.prometheus_directory, "file_sd", "sites.yml")
|
||||
temp_sites_config = tempfile.mkstemp(prefix="agent-prometheus-sites-", suffix=".yml")[1]
|
||||
self._render_template(
|
||||
"prometheus/sites.yml",
|
||||
{"benches": benches},
|
||||
temp_sites_config,
|
||||
{"block_start_string": "##", "block_end_string": "##"},
|
||||
)
|
||||
os.rename(temp_sites_config, prometheus_sites_config)
|
||||
|
||||
def generate_prometheus_tls_config(self, servers):
|
||||
prometheus_tls_config = os.path.join(self.prometheus_directory, "file_sd", "tls.yml")
|
||||
temp_tls_config = tempfile.mkstemp(prefix="agent-prometheus-tls-", suffix=".yml")[1]
|
||||
self._render_template(
|
||||
"prometheus/tls.yml",
|
||||
{"servers": servers},
|
||||
temp_tls_config,
|
||||
{"block_start_string": "##", "block_end_string": "##"},
|
||||
)
|
||||
os.rename(temp_tls_config, prometheus_tls_config)
|
||||
|
||||
def generate_prometheus_domains_config(self, domains):
|
||||
prometheus_domains_config = os.path.join(self.prometheus_directory, "file_sd", "domains.yml")
|
||||
temp_domains_config = tempfile.mkstemp(prefix="agent-prometheus-domains-", suffix=".yml")[1]
|
||||
self._render_template(
|
||||
"prometheus/domains.yml",
|
||||
{"domains": domains},
|
||||
temp_domains_config,
|
||||
{"block_start_string": "##", "block_end_string": "##"},
|
||||
)
|
||||
os.rename(temp_domains_config, prometheus_domains_config)
|
||||
|
||||
def generate_prometheus_cluster_config(self, cluster):
|
||||
prometheus_cluster_config = os.path.join(
|
||||
self.prometheus_directory,
|
||||
"file_sd",
|
||||
f"cluster.{cluster['name']}.yml",
|
||||
)
|
||||
|
||||
temp_cluster_config = tempfile.mkstemp(prefix="agent-prometheus-cluster-", suffix=".yml")[1]
|
||||
self._render_template(
|
||||
"prometheus/servers.yml",
|
||||
{"cluster": cluster},
|
||||
temp_cluster_config,
|
||||
{"block_start_string": "##", "block_end_string": "##"},
|
||||
)
|
||||
os.rename(temp_cluster_config, prometheus_cluster_config)
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
import requests
|
||||
|
||||
from agent.server import Server
|
||||
|
||||
|
||||
class Monitor(Server):
|
||||
def __init__(self, directory=None):
|
||||
super().__init__(directory=directory)
|
||||
self.prometheus_directory = "/home/jingrow/prometheus"
|
||||
self.alertmanager_directory = "/home/jingrow/alertmanager"
|
||||
|
||||
def update_rules(self, rules):
|
||||
rules_file = os.path.join(self.prometheus_directory, "rules", "agent.yml")
|
||||
self._render_template(
|
||||
"prometheus/rules.yml",
|
||||
{"rules": rules},
|
||||
rules_file,
|
||||
{
|
||||
"variable_start_string": "###",
|
||||
"variable_end_string": "###",
|
||||
},
|
||||
)
|
||||
|
||||
promtool = os.path.join(self.prometheus_directory, "promtool")
|
||||
self.execute(f"{promtool} check rules {rules_file}")
|
||||
|
||||
self.execute("sudo systemctl reload prometheus")
|
||||
|
||||
def update_routes(self, routes):
|
||||
config_file = os.path.join(self.alertmanager_directory, "alertmanager.yml")
|
||||
self._render_template(
|
||||
"alertmanager/routes.yml",
|
||||
{"routes": routes},
|
||||
config_file,
|
||||
{
|
||||
"variable_start_string": "###",
|
||||
"variable_end_string": "###",
|
||||
},
|
||||
)
|
||||
amtool = os.path.join(self.alertmanager_directory, "amtool")
|
||||
self.execute(f"{amtool} check-config {config_file}")
|
||||
|
||||
self.execute("sudo systemctl reload alertmanager")
|
||||
|
||||
def discover_targets(self):
|
||||
targets = self.fetch_targets()
|
||||
for cluster in targets["clusters"]:
|
||||
self.generate_prometheus_cluster_config(cluster)
|
||||
|
||||
self.generate_prometheus_tls_config(targets["tls"])
|
||||
self.generate_prometheus_sites_config(targets["benches"])
|
||||
self.generate_prometheus_domains_config(targets["domains"])
|
||||
|
||||
def fetch_targets(self):
|
||||
jcloud_url = self.config.get("jcloud_url")
|
||||
jcloud_token = self.config.get("jcloud_token")
|
||||
return requests.post(
|
||||
f"{jcloud_url}/api/action/jcloud.api.monitoring.targets",
|
||||
data={"token": jcloud_token},
|
||||
).json()["message"]
|
||||
|
||||
def generate_prometheus_sites_config(self, benches):
|
||||
prometheus_sites_config = os.path.join(self.prometheus_directory, "file_sd", "sites.yml")
|
||||
temp_sites_config = tempfile.mkstemp(prefix="agent-prometheus-sites-", suffix=".yml")[1]
|
||||
self._render_template(
|
||||
"prometheus/sites.yml",
|
||||
{"benches": benches},
|
||||
temp_sites_config,
|
||||
{"block_start_string": "##", "block_end_string": "##"},
|
||||
)
|
||||
os.rename(temp_sites_config, prometheus_sites_config)
|
||||
|
||||
def generate_prometheus_tls_config(self, servers):
|
||||
prometheus_tls_config = os.path.join(self.prometheus_directory, "file_sd", "tls.yml")
|
||||
temp_tls_config = tempfile.mkstemp(prefix="agent-prometheus-tls-", suffix=".yml")[1]
|
||||
self._render_template(
|
||||
"prometheus/tls.yml",
|
||||
{"servers": servers},
|
||||
temp_tls_config,
|
||||
{"block_start_string": "##", "block_end_string": "##"},
|
||||
)
|
||||
os.rename(temp_tls_config, prometheus_tls_config)
|
||||
|
||||
def generate_prometheus_domains_config(self, domains):
|
||||
prometheus_domains_config = os.path.join(self.prometheus_directory, "file_sd", "domains.yml")
|
||||
temp_domains_config = tempfile.mkstemp(prefix="agent-prometheus-domains-", suffix=".yml")[1]
|
||||
self._render_template(
|
||||
"prometheus/domains.yml",
|
||||
{"domains": domains},
|
||||
temp_domains_config,
|
||||
{"block_start_string": "##", "block_end_string": "##"},
|
||||
)
|
||||
os.rename(temp_domains_config, prometheus_domains_config)
|
||||
|
||||
def generate_prometheus_cluster_config(self, cluster):
|
||||
prometheus_cluster_config = os.path.join(
|
||||
self.prometheus_directory,
|
||||
"file_sd",
|
||||
f"cluster.{cluster['name']}.yml",
|
||||
)
|
||||
|
||||
temp_cluster_config = tempfile.mkstemp(prefix="agent-prometheus-cluster-", suffix=".yml")[1]
|
||||
self._render_template(
|
||||
"prometheus/servers.yml",
|
||||
{"cluster": cluster},
|
||||
temp_cluster_config,
|
||||
{"block_start_string": "##", "block_end_string": "##"},
|
||||
)
|
||||
os.rename(temp_cluster_config, prometheus_cluster_config)
|
||||
|
||||
1964
agent/site.py
1964
agent/site.py
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,8 @@
|
||||
- targets:
|
||||
|
||||
##- for domain in domains ##
|
||||
- targets:
|
||||
- https://{{ domain.name }}/api/method/ping
|
||||
labels:
|
||||
site: "{{ domain.site }}"
|
||||
##- endfor ##
|
||||
- targets:
|
||||
|
||||
##- for domain in domains ##
|
||||
- targets:
|
||||
- https://{{ domain.name }}/api/action/ping
|
||||
labels:
|
||||
site: "{{ domain.site }}"
|
||||
##- endfor ##
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
- targets:
|
||||
|
||||
## for bench in benches ##
|
||||
- targets:
|
||||
##- for site in bench.sites ##
|
||||
- https://{{ site }}/api/method/ping
|
||||
##- endfor ##
|
||||
labels:
|
||||
cluster: "{{ bench.cluster }}"
|
||||
server: "{{ bench.server }}"
|
||||
group: "{{ bench.group }}"
|
||||
bench: "{{ bench.name }}"
|
||||
## endfor ##
|
||||
- targets:
|
||||
|
||||
## for bench in benches ##
|
||||
- targets:
|
||||
##- for site in bench.sites ##
|
||||
- https://{{ site }}/api/action/ping
|
||||
##- endfor ##
|
||||
labels:
|
||||
cluster: "{{ bench.cluster }}"
|
||||
server: "{{ bench.server }}"
|
||||
group: "{{ bench.group }}"
|
||||
bench: "{{ bench.name }}"
|
||||
## endfor ##
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user