serverList() as $virtualserver) { $infos = array_map(function($info_raw) { return is_object($info_raw) ? $info_raw->toString() : $info_raw; }, $virtualserver->getInfo()); // fill $virtualserver_label_values foreach($virtualserver_label_keys as $virtualserver_label_key) { $value = $infos[$virtualserver_label_key]; $virtualserver_label_values[] = $infos[$virtualserver_label_key]; } foreach($infos as $name => $data) { // gauge only supports floats // $infos/$data is a mix of int, string and NULL if(preg_match('/^\d*(\.\d*)?$/', $data)) { $gauge = $registry->getOrRegisterGauge( $namespace, $name, array_key_exists($name, $help_texts) ? $help_texts[$name] : 'no help text available', preg_match('/^virtualserver_/', $name) ? $virtualserver_label_keys : [] ); $gauge->set( (float) $data, preg_match('/^virtualserver_/', $name) ? $virtualserver_label_values : [] ); } } } // render all metrics as HTML and output them $renderer = new \Prometheus\RenderTextFormat(); $result = $renderer->render($registry->getMetricFamilySamples()); header('Content-type: ' . \Prometheus\RenderTextFormat::MIME_TYPE); echo $result;