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