summaryrefslogtreecommitdiff
path: root/metrics.php
diff options
context:
space:
mode:
Diffstat (limited to 'metrics.php')
-rw-r--r--metrics.php41
1 files changed, 41 insertions, 0 deletions
diff --git a/metrics.php b/metrics.php
new file mode 100644
index 0000000..f4f7b50
--- /dev/null
+++ b/metrics.php
@@ -0,0 +1,41 @@
+<?php
+
+header('Content-Type: application/json; charset=utf-8');
+
+if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
+ http_response_code(405);
+ header('Allow: GET');
+ echo json_encode(['error' => 'method not allowed']);
+ exit;
+}
+
+function get_snowflake_connections()
+{
+ $metric = 'tor_snowflake_proxy_connections_total';
+ $body = file_get_contents(
+ 'http://127.0.0.1:9999/internal/metrics',
+ false
+ );
+ if (!$body) {
+ return 0;
+ }
+ $conns = 0;
+ foreach (preg_split('/\r\n|\n|\r/', $body) as $line) {
+ $line = trim($line);
+ if (!$line || $line[0] === '#')
+ continue;
+ if (preg_match(
+ '/^'
+ . preg_quote($metric, '/')
+ . '(?:\{[^}]*\})?\s+([0-9]+(?:\.[0-9]+)?)$/', $line, $m
+ )) {
+ $conns = $m[1];
+ break;
+ }
+ }
+ return $conns;
+}
+
+$snowflake_connections = get_snowflake_connections();
+
+echo json_encode(['snowflake_connections' => $snowflake_connections]);