41 lines
1,018 B
PHP
41 lines
1,018 B
PHP
<?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]);
|