Skip to content

Commit fdf187d

Browse files
committed
Add system.cpu.total.norm.pct
1 parent e2b64bb commit fdf187d

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

modules/apm/src/main/java/org/elasticsearch/telemetry/apm/internal/MetricValidator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public class MetricValidator {
6969
"es.thread_pool.security-crypto.*",
7070
"es.thread_pool.security-token-key.*",
7171
// APM Java agent-compatible metric names (see https://www.elastic.co/docs/reference/apm/agents/java/metrics#metrics-jvm)
72+
"system.cpu.*",
7273
"system.memory.*",
7374
"system.process.*",
7475
"jvm.file_descriptor.*",

server/src/main/java/org/elasticsearch/monitor/metrics/SystemMetrics.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.elasticsearch.monitor.jvm.SunThreadInfo;
1717
import org.elasticsearch.monitor.os.OsProbe;
1818
import org.elasticsearch.monitor.process.ProcessProbe;
19+
import org.elasticsearch.telemetry.metric.DoubleWithAttributes;
1920
import org.elasticsearch.telemetry.metric.LongWithAttributes;
2021
import org.elasticsearch.telemetry.metric.MeterRegistry;
2122

@@ -49,6 +50,7 @@ protected void doStart() {
4950
registerSystemMemoryMetrics();
5051
registerCgroupMemoryMetrics();
5152
registerJvmGcMetrics();
53+
registerSystemCpuMetrics();
5254
}
5355

5456
@Override
@@ -177,6 +179,21 @@ private void registerJvmGcMetrics() {
177179
);
178180
}
179181

182+
private void registerSystemCpuMetrics() {
183+
short initial = OsProbe.getSystemCpuPercent();
184+
if (initial < 0) {
185+
return;
186+
}
187+
metrics.add(
188+
registry.registerDoubleGauge(
189+
"system.cpu.total.norm.pct",
190+
"System-wide CPU usage as a ratio.",
191+
"1",
192+
() -> new DoubleWithAttributes(Math.max(0, OsProbe.getSystemCpuPercent() / 100.0))
193+
)
194+
);
195+
}
196+
180197
private void registerLongGaugeUnlessNegative(String name, String description, String unit, LongSupplier supplier) {
181198
long initial = supplier.getAsLong();
182199
if (initial < 0) {

0 commit comments

Comments
 (0)