petabridge / phobos-issues

Public issues and bug tracker for Phobos®
https://phobos.petabridge.com/
2 stars 1 forks source link

Missing `unit` for all metrics received from Phobos in Prometheus #70

Closed ismaelhamed closed 2 years ago

ismaelhamed commented 2 years ago

Akka: 1.4.40 Phobos: 2.0.6 OpenTelemetry: 1.4.0-alpha.2 Prometheus: 2.37.1 OpenTelemetry-Collector: 0.60.0

@Aaronontheweb I finally figured out why the metrics that we receive from Phobos in Prometheus are different than the ones expected by the Grafana dashboards (hence the dashboards are always empty). When compared with the Petabridge.Phobos.Web application, it looks like we are missing the unit:

Our system akka_actor_created akka_actor_mailbox_depth_bucket akka_actor_mailbox_depth_count akka_actor_mailbox_depth_sum akka_cluster_members akka_cluster_reachable akka_logs ...

Petabridge.Phobos.Web akka_actor_created_starts akka_actor_mailbox_depth_msgs_bucket akka_actor_mailbox_depth_msgs_count akka_actor_mailbox_depth_msgs_sum akka_cluster_members_members akka_cluster_reachable_members akka_logs_events ...

Are you guys doing some transformations we are not aware of?

Also notice that we are deploying on bare metal (no k8s).

Aaronontheweb commented 2 years ago

These are the definitions for all of our metrics

internal sealed class BuiltInMetrics
    {
        private BuiltInMetrics(Meter meter)
        {
            MsgsReceived = meter.CreateCounter<long>(MessagesReceived, MessagesUnit,
                "Message-processing throughput by actor type and message type.");

            MailboxDepth = meter.CreateHistogram<long>(MetricNames.MailboxDepth, MessagesUnit,
                "Number of unprocessed messages waiting inside actor's mailbox.");

            DeadLettersReceived = meter.CreateCounter<long>(DeadLetters, MessagesUnit,
                "Undeliverable messages sent to /deadletters by message type.");

            UnhandledMessagesReceived = meter.CreateCounter<long>(UnhandledMessages,
                MessagesUnit,
                "Messages that were received by a live actor, but actor was not programmed to handle them, by actor / message type.");

            LogMessages = meter.CreateCounter<long>(MetricNames.LogMessages, LogUnits,
                "Akka.NET logging events by loglevel.");

            ActorRestarts = meter.CreateCounter<long>(MetricNames.ActorRestarts, RestartUnit,
                "Actor restarts by type.");

            ActorsCreated = meter.CreateCounter<long>(MetricNames.ActorsCreated, CreatedUnit,
                "Actors started by type.");

            ActorsStopped = meter.CreateCounter<long>(MetricNames.ActorsStopped, StoppedUnit,
                "Actors stopped by type.");

            MessageReceiveLatency = meter.CreateHistogram<long>(MessageLatency, LatencyUnit,
                "Akka.NET message processing latency by actor / message type.");
        }

There have been some major changes to the Prometheus exporters recently, so I'm wondering if this is an upstream breaking change in the OpenTelemetry project. We've run into some of those lately: https://github.com/open-telemetry/opentelemetry-dotnet/issues/3591

I'll perform some upgrades in our projects and see if I can get to the bottom of it.

Aaronontheweb commented 2 years ago

Also, I see in your issue submission that you're using the OTel Collector? So is it the OTel collector that exposes the metrics, eventually, to Prometheus?

Aaronontheweb commented 2 years ago

Trying to upgrade to https://www.nuget.org/packages/OpenTelemetry.Exporter.Prometheus.AspNetCore/1.4.0-alpha.2 to see if this reproduces the issue...

Aaronontheweb commented 2 years ago

Attempted to reproduce this issue here: https://github.com/petabridge/Petabridge.Phobos.Web/pull/156

Here is what I get from /metrics

# HELP akka_messages_recv_msgs Message-processing throughput by actor type and message type.
# TYPE akka_messages_recv_msgs counter
akka_messages_recv_msgs{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",messagetype="Akka.IO.Tcp+Bound"} 1 1663611056911
akka_messages_recv_msgs{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",messagetype="string"} 1 1663611056911
akka_messages_recv_msgs{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",messagetype="string"} 1 1663611056911
akka_messages_recv_msgs{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",messagetype="string"} 1 1663611056911

# HELP akka_actor_mailbox_depth_msgs Number of unprocessed messages waiting inside actor's mailbox.
# TYPE akka_actor_mailbox_depth_msgs histogram
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="0"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="5"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="10"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="25"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="50"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="75"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="100"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="250"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="500"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="1000"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="+Inf"} 1 1663611056911
akka_actor_mailbox_depth_msgs_sum{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 0 1663611056911
akka_actor_mailbox_depth_msgs_count{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="0"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="5"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="10"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="25"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="50"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="75"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="100"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="250"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="500"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="1000"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="+Inf"} 1 1663611056911
akka_actor_mailbox_depth_msgs_sum{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 0 1663611056911
akka_actor_mailbox_depth_msgs_count{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="0"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="5"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="10"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="25"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="50"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="75"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="100"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="250"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="500"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="1000"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="+Inf"} 1 1663611056911
akka_actor_mailbox_depth_msgs_sum{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 0 1663611056911
akka_actor_mailbox_depth_msgs_count{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="0"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="5"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="10"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="25"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="50"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="75"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="100"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="250"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="500"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="1000"} 1 1663611056911
akka_actor_mailbox_depth_msgs_bucket{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",le="+Inf"} 1 1663611056911
akka_actor_mailbox_depth_msgs_sum{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 0 1663611056911
akka_actor_mailbox_depth_msgs_count{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 1 1663611056911

# HELP akka_logs_events Akka.NET logging events by loglevel.
# TYPE akka_logs_events counter
akka_logs_events{akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console",level="info"} 4 1663611056911

# HELP akka_actor_created_starts Actors started by type.
# TYPE akka_actor_created_starts counter
akka_actor_created_starts{actortype="Petabridge.Phobos.Web.ConsoleActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 1 1663611056911
akka_actor_created_starts{actortype="Petabridge.Phobos.Web.RouterForwarderActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 1 1663611056911
akka_actor_created_starts{actortype="Petabridge.Cmd.Host.Default.Connectivity.UptimeMonitorActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 1 1663611056911
akka_actor_created_starts{actortype="Petabridge.Cmd.Remote.Actors.GlobalConnectionHistory",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 1 1663611056911
akka_actor_created_starts{actortype="Petabridge.Cmd.Remote.Actors.GlobalStatusActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 1 1663611056911
akka_actor_created_starts{actortype="Petabridge.Cmd.Host.AkkaCmdListener",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 1 1663611056911
akka_actor_created_starts{actortype="Petabridge.Phobos.Web.ChildActor",akka_address="akka.tcp://ClusterSys@desktop-12k1162:4055",cluster_role="console"} 1 1663611056911

Even with the new 1.4.0-alpha* packages it looks like Prometheus is exposing properly typed metrics - so this leads me to wonder if this is an issue caused by the OTel Collector not propagating types correctly to Prometheus. How are you exporting your metrics currently?

ismaelhamed commented 2 years ago

We use the OpenTelemetry.Exporter.OpenTelemetryProtocol to export the metrics and send them locally to the instance of the OTel Collector installed in each VM (as an agent). It is then the OTel Collector which exposes the /metrics endpoint for Prometheus in this case.

IMO this has several advantages:

I'm not familiar with k8s yet, but I'll see if I can configure the Petabridge.Phobos.Web to use the OTel Collector instead.

ismaelhamed commented 2 years ago

@Aaronontheweb I've created a PR with a reproducible. Metrics from the OTel Collector are exposed at http://localhost:8889/metrics

Aaronontheweb commented 2 years ago

Thanks @ismaelhamed - I'll look into this.

Arkatufus commented 2 years ago

@ismaelhamed I have found the problem,

The unit translation/normalization was deliberately turned off because it is still in alpha stage. The documentation that points to the actual problem is here, which points to this documentation page

To turn the feature on, according to the documentation (as of the writing of this comment):

Warning

This feature must be enabled with feature gate pkg.translator.prometheus.NormalizeName. It is disabled by default (alpha stage).

$ otelcol --config=config.yaml --feature-gates=pkg.translator.prometheus.NormalizeName
Arkatufus commented 2 years ago

To turn the feature on in your Petabridge.Phobos.Web PR, change this line in the otel-collector: section:

    command: ["--config=/etc/otel-collector-config.yml", "--feature-gates=pkg.translator.prometheus.NormalizeName"]
ismaelhamed commented 2 years ago

@Arkatufus thank you for taking the time to investigate this and pointing me to that feature (I totally missed that in the documentation). But still the metrics the OTel Collector produces are different than the ones expected for the dashboards, so they still appear empty.

A couple of examples:

akka_actor_stopped_stops_total instead of akka_actor_stopped_stops, or akka_logs_events_total instead of akka_logs_events

Aaronontheweb commented 2 years ago

Looks like this name-mangling is a side effect of the OTel Collector's Prometheus exporter @ismaelhamed

https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/translator/prometheus#full-normalization

image

Why the metrics have different names when directly exported to Prometheus vs. exported via the OTel Collector seems like an OpenTelemetry bug / inconsistency.

I'm also wondering if the Collector messes with the temporality of the metrics too - even if we could make the Phobos Grafana perform an XOR query against Prometheus for different metric names (direct export vs. collector) that system wouldn't work if the numbers were aggregated differently.

ismaelhamed commented 2 years ago

I'm also wondering if the Collector messes with the temporality of the metrics too - even if we could make the Phobos Grafana perform an XOR query against Prometheus for different metric names (direct export vs. collector) that system wouldn't work if the numbers were aggregated differently.

I really hope not, because that's basically the whole selling point for having an open standard.

Why the metrics have different names when directly exported to Prometheus vs. exported via the OTel Collector seems like an OpenTelemetry bug / inconsistency.

The Prometheus Normalization plugin states this: This module provides centralized functions to convert OpenTelemetry metrics to Prometheus-compliant metrics.

But I guess not. Otherwise the OTel Collector would've matched the metrics names, unless the metrics in Phobos itself don't quite follow the Prometheus conventions by the book.

We'll edit the dashboards ourselves and we'll see.

Thanks again guys!

Aaronontheweb commented 2 years ago

But I guess not. Otherwise the OTel Collector would've matched the metrics names, unless the metrics in Phobos itself don't quite follow the Prometheus conventions by the book.

Do you have any non-Phobos metrics to compare against? Any of the built-in ASP.NET ones, for instance?

ismaelhamed commented 2 years ago

I can't see anything from aspnet, but for the ones from http-client is the same: subtle differences like the OTel Collector using milliseconds instead ms.

ORIGINAL

# HELP http_client_duration_ms measures the duration of the outbound HTTP request
# TYPE http_client_duration_ms histogram
http_client_duration_ms_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",le="0"} 0 1663855490166
http_client_duration_ms_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",le="5"} 0 1663855490166
http_client_duration_ms_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",le="10"} 18 1663855490166
http_client_duration_ms_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",le="25"} 29 1663855490166
http_client_duration_ms_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",le="50"} 30 1663855490166
http_client_duration_ms_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",le="75"} 30 1663855490166
http_client_duration_ms_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",le="100"} 30 1663855490166
http_client_duration_ms_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",le="250"} 31 1663855490166
http_client_duration_ms_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",le="500"} 31 1663855490166
http_client_duration_ms_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",le="1000"} 31 1663855490166
http_client_duration_ms_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",le="+Inf"} 31 1663855490166
http_client_duration_ms_sum{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201"} 440.96700000000004 1663855490166
http_client_duration_ms_count{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201"} 31 1663855490166

OTEL COLLECTOR

# HELP http_client_duration_milliseconds measures the duration of the outbound HTTP request
# TYPE http_client_duration_milliseconds histogram
http_client_duration_milliseconds_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",instance="phobos-web",job="Petabridge.Phobos.Web",le="0"} 0
http_client_duration_milliseconds_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",instance="phobos-web",job="Petabridge.Phobos.Web",le="5"} 0
http_client_duration_milliseconds_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",instance="phobos-web",job="Petabridge.Phobos.Web",le="10"} 0
http_client_duration_milliseconds_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",instance="phobos-web",job="Petabridge.Phobos.Web",le="25"} 1
http_client_duration_milliseconds_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",instance="phobos-web",job="Petabridge.Phobos.Web",le="50"} 3
http_client_duration_milliseconds_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",instance="phobos-web",job="Petabridge.Phobos.Web",le="75"} 3
http_client_duration_milliseconds_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",instance="phobos-web",job="Petabridge.Phobos.Web",le="100"} 3
http_client_duration_milliseconds_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",instance="phobos-web",job="Petabridge.Phobos.Web",le="250"} 4
http_client_duration_milliseconds_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",instance="phobos-web",job="Petabridge.Phobos.Web",le="500"} 4
http_client_duration_milliseconds_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",instance="phobos-web",job="Petabridge.Phobos.Web",le="1000"} 4
http_client_duration_milliseconds_bucket{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",instance="phobos-web",job="Petabridge.Phobos.Web",le="+Inf"} 4
http_client_duration_milliseconds_sum{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",instance="phobos-web",job="Petabridge.Phobos.Web"} 285.7075
http_client_duration_milliseconds_count{http_flavor="1.1",http_method="POST",http_scheme="http",http_status_code="201",instance="phobos-web",job="Petabridge.Phobos.Web"} 4
Aaronontheweb commented 2 years ago

I think this must be an OTel Collector bug - there's no reason why the metrics should have a different name when reported directly to Prometheus vs. going through the collector first. They're all OTel metrics objects after all!

ismaelhamed commented 2 years ago

Agree, there's something off.