cxpxatu521 2024-03-20 20:01 采纳率: 80%
浏览 76
已结题

opentelemetry collector推送数据到prometheus失败

Java将Counter指标推送到opentelemetry-collector-contrib容器, 但无法同步到prometheus, opentelemetry-collector可以看到推送的指标值, prometheus中没有任何数据

这个简单的demo 参考的是 https://github.com/prometheus/client_java/tree/main/examples/example-exporter-opentelemetry

配置如下

1.docker启动 prometheus

docker run -d --restart always --name prometheus_test \
        -p 19090:9090 \
        -v /path/prometheus.yaml:/etc/prometheus/prometheus.yaml \
        prom/prometheus:v2.47.0

prometheus.yaml文件内容为空

2.docker启动 opentelemetry-collector

docker run -d --name otel-collector-contrib-test \
        -p 4317:4317 -p 55678:55678 \
        -v /path/otelcol-config.yaml:/config.yaml \
        otel/opentelemetry-collector-contrib

otelcol-config.yaml:

receivers:
  otlp:
    protocols:
      grpc:
      http:

processors:
  batch:

exporters:
  prometheusremotewrite:
    endpoint: 'http://prometheus容器ip:19090/api/v1/write'
  logging:
    verbosity: detailed

service:
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging, prometheusremotewrite]

3. java代码

package org.example;

import io.prometheus.metrics.core.metrics.Counter;
import io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args ) throws InterruptedException {
        String[] LABELS = {"appid", "method", "result"};
        Counter counter = Counter.builder()
                .name("test_rpc_requests_total")
                .help("接口请求总数")
                .labelNames(LABELS)
                .register();

        OpenTelemetryExporter.builder()
                .endpoint("http://opentelemetry collect容器ip:4317")
                .intervalSeconds(10) // ridiculously short interval for demo purposes
                .buildAndStart();

        while (true) {
            Thread.sleep(1000);
            counter.labelValues("appid", "method1", "success").inc();
        }
    }
}

maven依赖:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>openTelemetryDemo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>openTelemetryDemo</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.prometheus</groupId>
      <artifactId>prometheus-metrics-core</artifactId>
      <version>1.2.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>io.prometheus</groupId>
      <artifactId>prometheus-metrics-exporter-opentelemetry</artifactId>
      <version>1.2.0-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>
  • 写回答

15条回答 默认 最新

  • 小鹏喜欢少年妇女 2024-03-21 12:32
    关注

    你启动Prometheus 的配置少了关键的一行 --web.enable-remote-write-receiver,启动collector的配置也少了一行 --config=file:/config.yaml。
    根据你的配置我本地复现出来了相同的现象,参考 官方配置 https://github.com/prometheus/client_java/blob/main/examples/example-exporter-opentelemetry/docker-compose.yaml

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(14条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月28日
  • 已采纳回答 3月21日
  • 修改了问题 3月20日
  • 创建了问题 3月20日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真