PUSHGATWAY

Про 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');
      }
   }
}

 

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>