diff --git a/web/html/index.php b/web/html/index.php index 99046930345edd6cddaf6003f3e18bef7bed2fcc..82a44c55b8fe42a24f3962496fdfc427b2356bd7 100644 --- a/web/html/index.php +++ b/web/html/index.php @@ -13,8 +13,28 @@ $query_string = $_SERVER['QUERY_STRING']; // If no options.cache is configured, we no-op metric storage operations. $is_cached = defined('EXTENSION_LOADED_APC') || defined('EXTENSION_LOADED_MEMCACHE'); -if ($is_cached) - register_shutdown_function('update_metrics'); +if ($is_cached) { + $method = $_SERVER['REQUEST_METHOD']; + // We'll always add +1 to our total request count to this $path, + // unless this path == /metrics. + if ($path !== "/metrics") + add_metric("http_requests_count", $method, $path); + + // Extract $type out of $query_string, if we can. + $type = null; + $query = array(); + if ($query_string) + parse_str($query_string, $query); + $type = $query['type']; + + // Only store RPC metrics for valid types. + $good_types = [ + "info", "multiinfo", "search", "msearch", + "suggest", "suggest-pkgbase", "get-comment-form" + ]; + if ($path === "/rpc" && in_array($type, $good_types)) + add_metric("api_requests_count", $method, $path, $type); +} if (config_get_bool('options', 'enable-maintenance') && (empty($tokens[1]) || ($tokens[1] != "css" && $tokens[1] != "images"))) { if (!in_array($_SERVER['REMOTE_ADDR'], explode(" ", config_get('options', 'maintenance-exceptions')))) { diff --git a/web/lib/metricfuncs.inc.php b/web/lib/metricfuncs.inc.php index 7ebb59be83a4cf9699bf0a22672e917812c38030..acfc30d7dec1f98fbd3a8f8d0808f472ee28a300 100644 --- a/web/lib/metricfuncs.inc.php +++ b/web/lib/metricfuncs.inc.php @@ -13,44 +13,6 @@ use \Prometheus\RenderTextFormat; // and will start again at 0 if it's restarted. $registry = new CollectorRegistry(new InMemory()); -function update_metrics() { - // With no code given to http_response_code, it gets the current - // response code set (via http_response_code or header). - if(http_response_code() == 404) - return; - - $path = $_SERVER['PATH_INFO']; - $method = $_SERVER['REQUEST_METHOD']; - $query_string = $_SERVER['QUERY_STRING']; - - // If $path is at least 1 character, strip / off the end. - // This turns $paths like '/packages/' into '/packages'. - if (strlen($path) > 1) - $path = rtrim($path, "/"); - - // We'll always add +1 to our total request count to this $path, - // unless this path == /metrics. - if ($path !== "/metrics") - add_metric("http_requests_count", $method, $path); - - // Extract $type out of $query_string, if we can. - $type = null; - $query = array(); - if ($query_string) - parse_str($query_string, $query); - - if (array_key_exists("type", $query)) - $type = $query["type"]; - - // Only store RPC metrics for valid types. - $good_types = [ - "info", "multiinfo", "search", "msearch", - "suggest", "suggest-pkgbase", "get-comment-form" - ]; - if ($path === "/rpc" && in_array($type, $good_types)) - add_metric("api_requests_count", $method, $path, $type); -} - function add_metric($anchor, $method, $path, $type = null) { global $registry;