Merge pull request #15932 from jasontedor/load-average-format

Modify load average format

Relates #15907
This commit is contained in:
Jason Tedor 2016-01-18 11:59:19 -05:00
commit 3be12ed9fd
4 changed files with 42 additions and 28 deletions

View File

@ -65,6 +65,9 @@ public class OsStats implements Streamable, ToXContent {
static final XContentBuilderString CPU = new XContentBuilderString("cpu");
static final XContentBuilderString PERCENT = new XContentBuilderString("percent");
static final XContentBuilderString LOAD_AVERAGE = new XContentBuilderString("load_average");
static final XContentBuilderString LOAD_AVERAGE_1M = new XContentBuilderString("1m");
static final XContentBuilderString LOAD_AVERAGE_5M = new XContentBuilderString("5m");
static final XContentBuilderString LOAD_AVERAGE_15M = new XContentBuilderString("15m");
static final XContentBuilderString MEM = new XContentBuilderString("mem");
static final XContentBuilderString SWAP = new XContentBuilderString("swap");
@ -77,7 +80,6 @@ public class OsStats implements Streamable, ToXContent {
static final XContentBuilderString FREE_PERCENT = new XContentBuilderString("free_percent");
static final XContentBuilderString USED_PERCENT = new XContentBuilderString("used_percent");
}
@Override
@ -88,11 +90,17 @@ public class OsStats implements Streamable, ToXContent {
builder.startObject(Fields.CPU);
builder.field(Fields.PERCENT, cpu.getPercent());
if (cpu.getLoadAverage() != null) {
builder.startArray(Fields.LOAD_AVERAGE);
builder.value(cpu.getLoadAverage()[0]);
builder.value(cpu.getLoadAverage()[1]);
builder.value(cpu.getLoadAverage()[2]);
builder.endArray();
builder.startObject(Fields.LOAD_AVERAGE);
if (cpu.getLoadAverage()[0] != -1) {
builder.field(Fields.LOAD_AVERAGE_1M, cpu.getLoadAverage()[0]);
}
if (cpu.getLoadAverage()[1] != -1) {
builder.field(Fields.LOAD_AVERAGE_5M, cpu.getLoadAverage()[1]);
}
if (cpu.getLoadAverage()[2] != -1) {
builder.field(Fields.LOAD_AVERAGE_15M, cpu.getLoadAverage()[2]);
}
builder.endObject();
}
builder.endObject();
}

View File

@ -266,9 +266,9 @@ public class RestNodesAction extends AbstractCatAction {
table.addCell(osStats == null ? null : Short.toString(osStats.getCpu().getPercent()));
boolean hasLoadAverage = osStats != null && osStats.getCpu().getLoadAverage() != null;
table.addCell(!hasLoadAverage ? null : String.format(Locale.ROOT, "%.2f", osStats.getCpu().getLoadAverage()[0]));
table.addCell(!hasLoadAverage ? null : String.format(Locale.ROOT, "%.2f", osStats.getCpu().getLoadAverage()[1]));
table.addCell(!hasLoadAverage ? null : String.format(Locale.ROOT, "%.2f", osStats.getCpu().getLoadAverage()[2]));
table.addCell(!hasLoadAverage || osStats.getCpu().getLoadAverage()[0] == -1 ? null : String.format(Locale.ROOT, "%.2f", osStats.getCpu().getLoadAverage()[0]));
table.addCell(!hasLoadAverage || osStats.getCpu().getLoadAverage()[1] == -1 ? null : String.format(Locale.ROOT, "%.2f", osStats.getCpu().getLoadAverage()[1]));
table.addCell(!hasLoadAverage || osStats.getCpu().getLoadAverage()[2] == -1 ? null : String.format(Locale.ROOT, "%.2f", osStats.getCpu().getLoadAverage()[2]));
table.addCell(jvmStats == null ? null : jvmStats.getUptime());
table.addCell(node.clientNode() ? "c" : node.dataNode() ? "d" : "-");
table.addCell(masterId == null ? "x" : masterId.equals(node.id()) ? "*" : node.masterNode() ? "m" : "-");

View File

@ -131,9 +131,15 @@ the operating system:
`os.cpu.percent`::
Recent CPU usage for the whole system, or -1 if not supported
`os.cpu.load_average`::
Array of system load averages for the last one minute, five
minute and fifteen minutes (value of -1 indicates not supported)
`os.cpu.load_average.1m`::
One-minute load average on the system (field is not present if
one-minute load average is not available)
`os.cpu.load_average.5m`::
Five-minute load average on the system (field is not present if
five-minute load average is not available)
`os.cpu.load_average.15m`::
Fifteen-minute load average on the system (field is not present if
fifteen-minute load average is not available)
`os.mem.total_in_bytes`::
Total amount of physical memory in bytes

View File

@ -560,30 +560,30 @@ and high risk of being misused. The ability to change the thread pool type for a
that it is still possible to adjust relevant thread pool parameters for each of the thread pools (e.g., depending on
the thread pool type, `keep_alive`, `queue_size`, etc.).
[[breaking_30_cpu_stats]]
=== System CPU stats
The recent CPU usage (as a percent) has been added to the OS stats
reported under the node stats API and the cat nodes API. The breaking
change here is that there is a new object in the "os" object in the node
stats response. This object is called "cpu" and includes "percent" and
"load_average" as fields. This moves the "load_average" field that was
previously a top-level field in the "os" object to the "cpu" object. The
format of the "load_average" field has changed to an array of length
three representing the one-minute, five-minute and fifteen-minute load
averages (a value of -1 for any of array components indicates that the
corresponding metric is not available).
change here is that there is a new object in the `os` object in the node
stats response. This object is called `cpu` and includes "percent" and
`load_average` as fields. This moves the `load_average` field that was
previously a top-level field in the `os` object to the `cpu` object. The
format of the `load_average` field has changed to an object with fields
`1m`, `5m`, and `15m` representing the one-minute, five-minute and
fifteen-minute loads respectively. If any of these fields are not present,
it indicates that the corresponding value is not available.
In the cat nodes API response, the "cpu" field is output by default. The
previous "load" field has been removed and is replaced by "load_1m",
"load_5m", and "load_15m" which represent the one-minute, five-minute
and fifteen-minute loads respectively. These values are output by
default, and a value of -1 indicates that the corresponding metric is
not available.
In the cat nodes API response, the `cpu` field is output by default. The
previous `load` field has been removed and is replaced by `load_1m`,
`load_5m`, and `load_15m` which represent the one-minute, five-minute
and fifteen-minute loads respectively. The field will be null if the
corresponding value is not available.
Finally, the API for org.elasticsearch.monitor.os.OsStats has
Finally, the API for `org.elasticsearch.monitor.os.OsStats` has
changed. The `getLoadAverage` method has been removed. The value for
this can now be obtained from `OsStats.Cpu#getLoadAverage` but it is no
longer a double and is instead an object encapuslating the one-minute,
longer a double and is instead an object encapsulating the one-minute,
five-minute and fifteen-minute load averages. Additionally, the recent
CPU usage can be obtained from `OsStats.Cpu#getPercent`.