]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
kresctl: metrics command added
authorAleš Mrázek <ales.mrazek@nic.cz>
Mon, 12 Sep 2022 08:14:51 +0000 (10:14 +0200)
committerAleš Mrázek <ales.mrazek@nic.cz>
Tue, 10 Jan 2023 18:57:13 +0000 (19:57 +0100)
manager/knot_resolver_manager/cli/cmd/metrics.py [new file with mode: 0644]

diff --git a/manager/knot_resolver_manager/cli/cmd/metrics.py b/manager/knot_resolver_manager/cli/cmd/metrics.py
new file mode 100644 (file)
index 0000000..73f4cba
--- /dev/null
@@ -0,0 +1,34 @@
+import argparse
+from optparse import Option
+import sys
+from typing import Optional, Tuple, Type
+from knot_resolver_manager.utils.requests import request
+
+from knot_resolver_manager.cli.command import Command, CommandArgs, register_command
+
+
+@register_command
+class MetricsCommand(Command):
+
+    def __init__(self, namespace: argparse.Namespace) -> None:
+        self.file: Optional[str] = namespace.file
+
+        super().__init__(namespace)
+
+    @staticmethod
+    def register_args_subparser(
+        parser: "argparse._SubParsersAction[argparse.ArgumentParser]",
+    ) -> Tuple[argparse.ArgumentParser, "Type[Command]"]:
+        metrics = parser.add_parser("metrics", help="get prometheus metrics data")
+        metrics.add_argument('file', help="optional, file to export metrics to", nargs='?', default=None)
+        return metrics, MetricsCommand
+
+    def run(self, args: CommandArgs) -> None:
+        url = f"{args.socket}/metrics"
+        response = request("GET", url)
+
+        if self.file and response.status == 200:
+            with open(self.file, 'a') as f:
+                f.write(response.body)
+        else:
+            print(response)