Про PUSHGATWAY очень мало написано в инете, особенно под PHP
Для установки локально PUSHGATWAY docker-compose.yml:
pushgateway:
image: prom/pushgateway
restart: always
container_name: app2022-pushgateway
ports:
- 9091:9091
- 9090:9090
networks:
- front
- backend
Есть библиотека для работы с pushgateway
https://github.com/PromPHP/prometheus_push_gateway_php ->
promphp/prometheus_push_gateway_php
Однако, нашел хороший простой класс, который основан на GuzzleHttp\Client:
https://github.com/markarik/wnl-platform/blob/9f4383e850373e1849f04f6d1487268cf91fa615/app/Console/PrometheusPushgateway.php
Немного модифицировал его под свои нужды, и получилось вот такое
<?php
namespace App\Handler;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
class PrometheusPushgateway
{
public function notify($count, $code=200)
{
$url = 'http://pushgateway:9091/metrics/job/symfony/instance/sender';
$url = getenv('PUSHGATWAY_URL');
$client = new Client();
try {
$bodyLines = [
"# HELP response_symfony_code_count",
"# TYPE response_symfony_code_count",
"response_symfony_code_count {code=\"${code}\"} ${count}"
];
$body = implode("\n", $bodyLines) . "\n";
$client->request('POST', $url, [
'body' => $body
]);
} catch (GuzzleException $exception) {
exit('error');
}
}
}