From 282cbb18beae024f935a3aa5d3280ff79ff1957b Mon Sep 17 00:00:00 2001 From: JimMoen Date: Wed, 3 Apr 2024 17:35:49 +0800 Subject: [PATCH] fix: cpu usage and idle use two decimal places - prometheus - opentelemetry --- apps/emqx_management/src/emqx_mgmt.erl | 4 +++- apps/emqx_opentelemetry/src/emqx_opentelemetry.app.src | 2 +- apps/emqx_opentelemetry/src/emqx_otel_cpu_sup.erl | 4 +++- changes/fix-12844.en.md | 1 + 4 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 changes/fix-12844.en.md diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index 35908d3bd..e46658619 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -221,7 +221,9 @@ vm_stats('cpu') -> case emqx_vm:cpu_util([CpuUtilArg]) of %% return 0.0 when `emqx_cpu_sup_worker` is not started {all, Use, Idle, _} -> - [{cpu_use, Use}, {cpu_idle, Idle}]; + NUse = floor(Use * 100) / 100, + NIdle = ceil(Idle * 100) / 100, + [{cpu_use, NUse}, {cpu_idle, NIdle}]; _ -> [{cpu_use, 0}, {cpu_idle, 0}] end; diff --git a/apps/emqx_opentelemetry/src/emqx_opentelemetry.app.src b/apps/emqx_opentelemetry/src/emqx_opentelemetry.app.src index 81631b03a..cb7c7d32a 100644 --- a/apps/emqx_opentelemetry/src/emqx_opentelemetry.app.src +++ b/apps/emqx_opentelemetry/src/emqx_opentelemetry.app.src @@ -1,6 +1,6 @@ {application, emqx_opentelemetry, [ {description, "OpenTelemetry for EMQX Broker"}, - {vsn, "0.2.4"}, + {vsn, "0.2.5"}, {registered, []}, {mod, {emqx_otel_app, []}}, {applications, [ diff --git a/apps/emqx_opentelemetry/src/emqx_otel_cpu_sup.erl b/apps/emqx_opentelemetry/src/emqx_otel_cpu_sup.erl index fc67831be..54f88ad99 100644 --- a/apps/emqx_opentelemetry/src/emqx_otel_cpu_sup.erl +++ b/apps/emqx_opentelemetry/src/emqx_otel_cpu_sup.erl @@ -119,7 +119,9 @@ code_change(_OldVsn, State, _Extra) -> refresh(#{interval := Interval} = State) -> NState = case cpu_sup:util([]) of - {all, U, I, _} -> + {all, Use, Idle, _} -> + U = floor(Use * 100) / 100, + I = ceil(Idle * 100) / 100, State#{'cpu.use' => U, 'cpu.idle' => I}; _ -> State#{'cpu.use' => 0, 'cpu.idle' => 0} diff --git a/changes/fix-12844.en.md b/changes/fix-12844.en.md new file mode 100644 index 000000000..851c877ac --- /dev/null +++ b/changes/fix-12844.en.md @@ -0,0 +1 @@ +CPU usage/idle statistics values are only retained with 2 decimal precision. This affects Prometheus statistical metrics and OpenTelemetry governance metrics.