Skip to content

Docs: Micrometer To OpenTelemetry section describing semantic convetion differences could be bit more precise or verbose #49576

@michalvavrik

Description

@michalvavrik

Description

Hey, this could be my fault, so it is sort of question, but I was comparing documented semantic convention differences with a reality when I use Grafana and it's not one to one. I wonder if there is something I am missing, like prerequisite knowledge that is required to read that section? Let me show you, when I query collected metrics in Prometheus format and visualize all collected metrics, I can see:

  1. documented method.timed (Histogram), method.timed.max (DoubleGauge) is for name @Timed("my.timed.method") the Histogram my_timed_method_milliseconds_sum, my_timed_method_milliseconds_count, my_timed_method_milliseconds_bucket and for the DoubleGauge it is my_timed_method_max_milliseconds; so there is that "milliseconds" unit in Prometheus format name
  2. documented method.counted (DoubleSum) is for name @Counted(value = "counted", recordFailuresOnly = true) the counted_total
  3. documented http.server.bytes.write is missing in my setup, I wonder if it is one of http_server_bytes_written_max, http_server_bytes_written_sum, http_server_bytes_written_count, http_server_bytes_written_bucket ? I have mentioned that the http_server_bytes_read metric I can only see when I receive new byte[55] in a resource method, but when I return it the "write" metric still doesn't appear
  4. for documented http.server.requests in Micrometer format and the bridge output http.server.requests (Histogram), http.server.requests.max (DoubleGauge) I can see:
                    "__name__": "http_server_requests_milliseconds_count",
                    "__name__": "http_server_requests_milliseconds_bucket",
                    "__name__": "http_server_requests_milliseconds_sum",
                    "__name__": "http_server_requests_max_milliseconds",
                    "__name__": "http_server_requests_milliseconds_count",
                    "__name__": "http_server_requests_milliseconds_sum",
                    "__name__": "http_server_requests_max_milliseconds",
                    "__name__": "http_server_requests_milliseconds_bucket",
                    "__name__": "http_server_requests_milliseconds_bucket",
                    "__name__": "http_server_requests_max_milliseconds",
                    "__name__": "http_server_requests_milliseconds_sum",
                    "__name__": "http_server_requests_milliseconds_count",
                    "__name__": "http_server_requests_milliseconds_bucket",
                    "__name__": "http_server_requests_milliseconds_sum",
                    "__name__": "http_server_requests_max_milliseconds",
                    "__name__": "http_server_requests_max_milliseconds",
                    "__name__": "http_server_requests_milliseconds_bucket",
                    "__name__": "http_server_requests_milliseconds_count",
                    "__name__": "http_server_requests_milliseconds_count",
                    "__name__": "http_server_requests_milliseconds_sum",
                    "__name__": "http_server_requests_milliseconds_bucket",
                    "__name__": "http_server_requests_milliseconds_sum",
                    "__name__": "http_server_requests_max_milliseconds",
                    "__name__": "http_server_requests_milliseconds_count",
                    "__name__": "http_server_requests_milliseconds_bucket",
                    "__name__": "http_server_requests_max_milliseconds",
                    "__name__": "http_server_requests_milliseconds_sum",
                    "__name__": "http_server_requests_milliseconds_count",
                    "__name__": "http_server_requests_max_milliseconds",
                    "__name__": "http_server_requests_milliseconds_sum",
                    "__name__": "http_server_requests_milliseconds_count",
                    "__name__": "http_server_requests_milliseconds_bucket",
                    "__name__": "http_server_requests_max_milliseconds",
                    "__name__": "http_server_requests_milliseconds_sum",
                    "__name__": "http_server_requests_milliseconds_count",
                    "__name__": "http_server_requests_milliseconds_bucket",
                    "__name__": "http_server_requests_max_milliseconds",
                    "__name__": "http_server_requests_milliseconds_count",
                    "__name__": "http_server_requests_milliseconds_bucket",
                    "__name__": "http_server_requests_milliseconds_sum"
  1. I just want to check, because I understand the logic behind that, but for example the JVM metrics - the Micrometer format says jvm.threads.live , prometheus format says jvm_threads_live_threads, bridge format says jvm.threads.live and in the prometheus I see jvm_threads_live. So Prometheus format replaces dots with underscores, but considering users can use LGTM Dev Service, maybe it could be clarified in the docs that the dotted format is just what is sent to the collector but not what you will see?

My point being, it is always close and I can deduce what the docs mean, but it is not exactly one to one or "same" as what I can see. Now the docs speaks about "bridge output", but Grafana sends it to Prometheus datasource and that can be at fault of the differences. So how is the documentation meant, is it just what you send to the collector?

Steps to reproduce the above-mentioned:

git clone [email protected]:michalvavrik/quarkus-test-suite.git -b feature/otel-micrometer-bridge-repro
cd quarkus-test-suite/monitoring/micrometer-opentelemetry
mvn clean verify -Dit.test=MicrometerOpenTelemetryBridgeIT 2>&1 | tee log

Implementation ideas

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions