【问题标题】:使用 grafana 代理 / prometheus 监控对 grafana 的应用程序指标
【发布时间】:2022-01-13 06:40:50
【问题描述】:

说明

作为 grafana 和 prometheus 世界的新手,我正在努力将我的 laravel php cli 应用程序中的自定义指标添加到 grafana 云 - 最好通过 grafana 代理。

情况

我在运行 laravel php worker 的 linux 服务器上使用 grafana cloud 和他们的 grafana 代理,而没有 web 服务器。 grafana 代理与 node_exporter 集成一起运行。我已经尝试找到一些关于如何添加自定义导出器或添加刮板来收集信息的文档。我目前发现的是,代理将以某种方式(?)查询 HTTP 端点并解析响应(哪种格式?)以将其发布到 grafa 云端点(据我所知,prometheus 推送网关)。

我没有找到有关如何为 grafana 代理编写自定义导出器的文档,因为我正在该服务器上运行一个没有 http 端点的 php 工作线程。在端点上公开这些信息是可行的,但感觉不对,不是吗?基本上我想做一个 'php artisan mypackage:metrics' 并让该调用生成正确的输出,然后代理使用该输出发布到 grafana。

问题

  • 如何编写由 grafana 代理查询的自定义导出器?
  • 正确的数据格式是什么?
  • 如果 grafana 代理出口商的方向不正确,如何抓取?

我的尝试

  • 关于数据结构/格式

根据 [1],我尝试创建如下自定义指标 - 正确吗?

# TYPE mynamespace_some_metric counter
mynamespace_some_metric 42
  • 关于发布到 grafana 云

Grafana 云提供了一个远程写入端点,其 URL 类似于 https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push 和不记名身份验证令牌。我尝试使用上述数据向该端点发送 POST 请求,但只收到 400 bad request 响应,说 snappy:rupt input。

所以我认为缺少一些基本的理解,希望能朝着正确的方向前进……

[1] - https://www.metricfire.com/blog/prometheus-pushgateways-everything-you-need-to-know/#strongSending-Metricsstrong

解决方案

感谢@anemyte,我提出了这个解决方案,现在效果很好:

  1. 创建一个控制器,它使用 promphp/prometheus_client_php 包呈现所需的输出,如下所示:

     $registry = new CollectorRegistry(new InMemory());
    
     $counter = $registry->getOrRegisterGauge('test', 'some_counter', 'it sets', ['type']);
     $counter->set(rand(1, 99), ['blue']);
    
     $renderer = new RenderTextFormat();
     $result = $renderer->render($registry->getMetricFamilySamples());
    
     header('Content-type: ' . RenderTextFormat::MIME_TYPE);
     echo $result;
    
  2. 注册一个使用上面控制器的路由/metrics。

  3. 配置 /etc/grafana-agent.yaml 并在 prometheus yaml 部分添加配置:

  prometheus:   
    configs:
      - name: mycustomwebsite
        scrape_configs:
          - job_name: default
            static_configs:
                - targets: ['www.mywebsite.de:80']
        remote_write:
        - basic_auth:
            password: YOURPASSWORD
            username: YOURUSERNAME
          url: https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push
      - name: integrations
        remote_write:
        - basic_auth:
            password: YOURPASSWORD
            username: YOURUSERNAME
          url: https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push
  1. 重新启动代理,您的指标就可以使用了。

【问题讨论】:

    标签: prometheus grafana


    【解决方案1】:

    Grafana Agent 使用与 Prometheus 相同的度量格式。它专注于抓取指标而不是 Prometheus,并将它们 (remote_write) 推送到 Grafana Cloud 为您托管的 Prometheus。 the list of product features 中提到了这一点。

    因此,向 Grafana Agent 和 Prometheus 公开指标是一回事。这意味着您可以使用Prometheus PHP library 创建指标并避免处理原始格式。 best practices 也一样。

    创建完指标后,您需要指示代理从您的服务器上抓取它们。使用这些文档(onetwo)作为参考。

    【讨论】:

    • 我编辑了问题并发布了有关如何实施解决方案的详细信息
    • @McGo 您做了一件很棒的事情,但将其添加为另一个答案会更好。人们通常不会阅读标题下方的问题(尤其是长问题)。
    【解决方案2】:

    解决方案

    感谢@anemyte,我提出了这个解决方案,现在效果很好。

    1. 创建一个控制器,它使用 promphp/prometheus_client_php 包呈现所需的输出,如下所示:

       $registry = new CollectorRegistry(new InMemory());
      
       $counter = $registry->getOrRegisterGauge('test', 'some_counter', 'it sets', ['type']);
       $counter->set(rand(1, 99), ['blue']);
      
       $renderer = new RenderTextFormat();
       $result = $renderer->render($registry->getMetricFamilySamples());
      
       header('Content-type: ' . RenderTextFormat::MIME_TYPE);
       echo $result;
      
    2. 注册一个使用上面控制器的路由/metrics。

    3. 配置 /etc/grafana-agent.yaml 并在 prometheus yaml 部分添加配置:

      prometheus:   
        configs:
          - name: mycustomwebsite
            scrape_configs:
              - job_name: default
                static_configs:
                    - targets: ['www.mywebsite.de:80']
            remote_write:
            - basic_auth:
                password: YOURPASSWORD
                username: YOURUSERNAME
              url: https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push
          - name: integrations
            remote_write:
            - basic_auth:
                password: YOURPASSWORD
                username: YOURUSERNAME
              url: https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push
    
    1. 重新启动代理,您的指标就可以使用了。

    【讨论】:

      猜你喜欢
      • 2020-07-03
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2021-06-17
      • 2019-12-30
      • 1970-01-01
      • 2017-04-30
      相关资源
      最近更新 更多