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

如何在Prometeus中找到或正确导出OpenTelemetry metrics的资源标签?

易风华
2023-03-14

我正在使用. Net创建一个应用程序。Net with OpenTelemory用于收集指标,跟踪... Net应用程序使用Otlp导出器。此外,我配置了一个收集器,其中Otlp作为接收器,Prometheus作为指标的导出器。

我设置了ServiceName(例如“OpenTelemetrySample”),并在中设置了一些属性(例如attributeA、attributeB)。Net应用程序

services.AddOpenTelemetryMetrics(builder =>{ 
     builder.SetResourceBuilder(ResourceBuilder.CreateDefault()
            .AddService("OpenTelemetrySample")
            .AddAttributes(new KeyValuePair<string, object>[]
            {new("attributeA", "AAA"), new("attributeB", "BBB")}));
     builder.AddMeter("opentelemetry-meter");
     builder.AddOtlpExporter(otlpOptions =>
            {otlpOptions.Endpoint = new Uri("http://localhost:4317");   
            });
          });

然后我在代码中使用一些计数器:

static Meter myMeter = new("opentelemetry-meter", "1.0.0");
static Counter<int> myCounter = myMeter.CreateCounter<int>(name: $"test-counter",
            unit: "Counter",
            description: "The number of something");
...
myCounter.Add(2, new("custom.tagA", "tagValueA"), new("custom.tagB", "tagValueB"));

我在PrometeusUI中看到的结果是:在这里,我希望看到某处的服务。资源的名称和属性,但在Prometheus UI中找不到它们。

例如,同样的过程,当我通过收集器的控制台导出指标时,会在资源标签部分显示提到的属性

控制台输出:

collector            | 2022-02-15T13:01:40.968Z INFO    loggingexporter/logging_exporter.go:56  MetricsExporter {"#metrics": 1}
collector            | 2022-02-15T13:01:40.968Z DEBUG   loggingexporter/logging_exporter.go:66  ResourceMetrics #0
collector            | Resource labels:
collector            |      -> attributeA: STRING(AAA)
collector            |      -> attributeB: STRING(BBB)
collector            |      -> service.name: STRING(OpenTelemetrySample)
collector            |      -> service.instance.id: STRING(0f08e609-66e0-49a5-ad6d-44c8e3520bad)
collector            | InstrumentationLibraryMetrics #0
collector            | InstrumentationLibrary opentelemetry-meter 1.0.0
collector            | Metric #0
collector            | Descriptor:
collector            |      -> Name: test-counter
collector            |      -> Description: The number of something
collector            |      -> Unit: Counter
collector            |      -> DataType: Sum
collector            |      -> IsMonotonic: true
collector            |      -> AggregationTemporality: AGGREGATION_TEMPORALITY_CUMULATIVE
collector            | NumberDataPoints #0
collector            | Data point attributes:
collector            |      -> custom.tagA: STRING(tagValueA)
collector            |      -> custom.tagB: STRING(tagValueB)
collector            | StartTimestamp: 2022-02-15 12:26:55.3992028 +0000 UTC
collector            | Timestamp: 2022-02-15 13:01:40.5841487 +0000 UTC
collector            | Value: 2

otel collector配置。亚马尔

receivers:
  otlp:
    protocols:
      grpc:
exporters:
    logging:
      loglevel: debug
    jaeger:
      endpoint: jaeger:14250
      insecure: true
    prometheus:
      endpoint: "0.0.0.0:8889"
extensions:
  health_check:
  pprof:
  zpages:
processors:
    batch:
service:
    extensions: [health_check,pprof,zpages]
    pipelines:
        traces:
            receivers: [otlp]
            exporters: [logging, jaeger]
            processors: [batch]
        metrics:
            receivers: [otlp]          
            exporters: [logging, prometheus]
            processors: [batch]            
        logs:
            receivers: [otlp]
            exporters: [logging]
            processors: [batch]

prometheus.yaml

scrape_configs:
  - job_name: 'otel-collector'
    scrape_interval: 5s
    static_configs:
      - targets: ['collector:8889']

希望了解如何正确查找或导出资源标签,以获得正确的指标,谢谢

共有1个答案

仲孙景胜
2023-03-14

默认情况下,禁用资源属性到指标标签的转换。请将otel配置更新为以下内容,以查看资源属性为prom UI。

receivers:
  otlp:
    protocols:
      grpc:
exporters:
    logging:
      loglevel: debug
    jaeger:
      endpoint: jaeger:14250
      insecure: true
    prometheus:
      endpoint: "0.0.0.0:8889"
      resource_to_telemetry_conversion:
        enabled: true
extensions:
  health_check:
  pprof:
  zpages:
processors:
    batch:
service:
    extensions: [health_check,pprof,zpages]
    pipelines:
        traces:
            receivers: [otlp]
            exporters: [logging, jaeger]
            processors: [batch]
        metrics:
            receivers: [otlp]          
            exporters: [logging, prometheus]
            processors: [batch]            
        logs:
            receivers: [otlp]
            exporters: [logging]
            processors: [batch]

 类似资料:
  • 问题内容: 我知道还有其他针对同一问题的问题,但问题是解决方案对我不起作用。我有一个小工具,它应该读取我想拥有的文件并将其打包为资源,并依赖于其他我希望将其作为jar而不是单个类的项目(我正在使用Eclipse Helios)。 作为Eclipse中的应用程序,我可以通过以下方式访问资源 当且仅当将资源文件夹放置在输出路径(已编译的源)下时,并且如果将其放置在src文件夹中时,则不是这样。 当我打

  • 问题内容: 我有全部传播异常的方法,然后在一个地方处理,但是我意识到了一些事情。 假设我有这样的方法 我的问题是,如果doSometing()方法引发异常,该语句将不会关闭,但我不想在那里处理异常。尝试并捕获只会抛出异常并最终关闭语句的正确方法吗? 问题答案:

  • 问题内容: 在清理一些代码时,FindBugs向我介绍了一些使用Connection,CallableStatement和ResultSet对象的JDBC代码。这是该代码的一个片段: FindBugs指出这些应该在finally块内。我开始重构我的代码来做到这一点,我开始想知道如何在finally块中处理代码。 Connection对象的CallableStatement的创建可能会引发异常,而我

  • 问题内容: 有人可以为我提供关于类对象的一些指导,以及如何在我的项目中的另一个对象中引用它吗? 这是我的对象-request-api.js(注意:我知道它还没有进行很多操作,但是我想走路之前要走路) 这是我试图在其中引用的React Class组件: 我的React Component Class对象出现错误: 谁能为我提供一些见识/帮助? 问题答案: 由于不是静态方法,因此您需要先创建的实例,然

  • 注意:我知道有很多关于这个主题的帖子,我已经审阅了相当多的没有成功(请看我在这篇文章底部的参考资料)。 我正试图使用Visual Studio代码在TypeScript中运行一个非常简单的测试,其中我在一个文件中声明一个类并将其导入到另一个文件中。但是,我仍然遇到一个问题,我正在导入的文件无法识别我从另一个文件导出的类的方法。 此时我收到的确切错误消息是: [ts]属性“Get FirstName

  • 环境:JSF2.1.7Seam2.3.0JBoss5.1.2 我的应用程序有一个需要本地化的字符串 “我同意WorldSite的隐私政策和Cookie通知” 斜体的隐私政策和Cookie通知是指向其他页面的超链接。 最初我们的facets是这样设置的: 注意:我们已经准备好了URL重写,需要/jsf/Notice。xhtml并重写为 这允许对各个键进行零碎的转换 但这需要一些语言的变通方法(在“i