当前位置: 首页 > 知识库问答 >
问题:

使用grafana代理/prometheus监控grafana的应用指标

袁高明
2023-03-14

描述

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

情况

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

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

问题

  • 如何编写grafana代理查询的自定义导出器

我所尝试的

  • 关于数据结构/格式

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

# TYPE mynamespace_some_metric counter
mynamespace_some_metric 42
  • 重新发布到grafana云

Grafana云提供了一个远程写endpoint,其URL类似于带有承载身份验证令牌的https://prometheus-prod-01-eu-west-0.grafana.net/api/prom/push。我尝试使用上述数据向该endpoint发送POST请求,但只收到400个错误请求响应,上面写着snappy:损坏的输入。

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

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

解决方案

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

>

 $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;

注册使用上面控制器的路由 /metrics。

配置/etc/grafana代理。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

共有2个答案

宇文灿
2023-03-14

解决方案

多亏了@anemyte,我想出了这个解决方案,现在效果很好。

>

  • 创建一个控制器,使用promphp/prometheus\u client\u 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;
    

    注册使用上面控制器的路由 /metrics。

    配置/etc/grafana代理。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
    

  • 颜高格
    2023-03-14

    Grafana代理使用普罗米修斯使用的度量格式。它专注于抓取度量,而不是Prometheus,并将它们(远程写入)推送到Grafana云为您托管的Prometheus实例。产品功能列表中提到了这一点。

    您可以使用Prometheus PHP库来创建度量,并避免使用原始格式的问题。最佳实践也适用。

    创建完指标后,需要指示代理从服务器中删除它们。请参考这些文档(一、二)。

     类似资料:
    • 主要内容:1.Prometheus简介,2.Prometheus优势,Prometheus架构,3.安装,4.启动,5.PromSQL,6.Prometheus和grafana1.Prometheus简介 Prometheus受启发于Google的Brogmon监控系统(相似的Kubernetes是从Google的Brog系统演变而来),从2012年开始由前Google工程师在Soundcloud以开源软件的形式进行研发,并且于2015年早期对外发布早期版本。2016年5月继Kubernetes

    • 我已经使用和Jetty在服务器(在8091)中部署了一个Java应用程序。 我需要用普罗米修斯和格拉法纳监控那个应用程序。 config.yaml 我在通常的部署中使用的部署命令:(在这个目录中,存在Jetty) 它很好用..

    • 我的要求是使用Prometheus和Grafana监视包含Apache的Linode虚拟机。(PS-普罗米修斯和格拉法纳在一个单独的Linode虚拟机中运行) 我使用以下文档安装Apache exporter:https://www.techbeginner.in/2021/01/install-and-configure-apache-node.html.服务文件如下所示: 我已将--scrap

    • 上一小节主要讲解了 Telegraf(StatsD) + InfluxDB + Grafana 的搭建和基本用法,并创建了请求量和响应时间这两种图表。本节讲解几个高级用法: 如何将 Grafana(监控)跟 ELK(日志)结合起来。 Grafana 监控报警。 脚本一键生成图表。 7.2.1 Grafana + ELK 在观察 Grafana 监控时,我们发现某个 api 接口的响应时间突然有一个

    • 本节将会讲解如何使用 Telegraf(StatsD) + InfluxDB + Grafana 搭建一套完整的监控系统。 7.1.1 Telegraf(StatsD) + InfluxDB + Grafana 简介 Telegraf 是一个使用 Go 语言开发的代理程序,可收集系统和服务或者其他来源(inputs)的数据,并将其写入 InfluxDB(outputs)数据库,支持多种 input

    • 我对监视应用程序使用的HTTP REST API很感兴趣。 使用spring boot、dropwizard和EnablePrometheUseEndpoint。我能够在prometheusendpoint上生成这样的prometheus指标: 我想在grafana中构建一个图形来显示对uri上GET方法的所有调用api_v1_objects不同的状态代码(每个状态代码一行)。 我应该将状态代码设