From 02cf5643f3c9d82088f6ef8d32a1f46e656ba00c Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Fri, 4 Dec 2020 18:07:34 -0700 Subject: [PATCH] Duplicate fields from system.process to process.* (#22845) --- CHANGELOG.next.asciidoc | 1 + metricbeat/docs/fields.asciidoc | 51 +++++ metricbeat/module/system/_meta/fields.yml | 25 +++ metricbeat/module/system/fields.go | 2 +- .../module/system/process/_meta/data.json | 183 ++---------------- metricbeat/module/system/process/process.go | 26 ++- 6 files changed, 115 insertions(+), 173 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 755a1bd50fea..e32e09199582 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -854,6 +854,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Add io.ops in fields exported by system.diskio. {pull}22066[22066] - `kibana` module: `stats` metricset no-longer collects usage-related data. {pull}22732[22732] - Adjust the Apache status fields in the fleet mode. {pull}22821[22821] +- Add process.state, process.cpu.pct, process.cpu.start_time and process.memory.pct. {pull}22845[22845] *Packetbeat* diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 799c70ca7cbe..67ec55b7fa90 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -41346,6 +41346,57 @@ System status metrics, like CPU and memory usage, that are collected from the op +[float] +=== process + +Process metrics. + + + +*`process.state`*:: ++ +-- +The process state. For example: "running". + + +type: keyword + +-- + +*`process.cpu.pct`*:: ++ +-- +The percentage of CPU time spent by the process since the last event. This value is normalized by the number of CPU cores and it ranges from 0 to 1. + + +type: scaled_float + +format: percent + +-- + +*`process.cpu.start_time`*:: ++ +-- +The time when the process was started. + + +type: date + +-- + +*`process.memory.pct`*:: ++ +-- +The percentage of memory the process occupied in main memory (RAM). + + +type: scaled_float + +format: percent + +-- + [float] === system diff --git a/metricbeat/module/system/_meta/fields.yml b/metricbeat/module/system/_meta/fields.yml index 45fd336a9310..64a867077bdd 100644 --- a/metricbeat/module/system/_meta/fields.yml +++ b/metricbeat/module/system/_meta/fields.yml @@ -5,6 +5,31 @@ short_config: true release: ga fields: + - name: process + type: group + description: > + Process metrics. + fields: + - name: state + type: keyword + description: > + The process state. For example: "running". + - name: cpu.pct + type: scaled_float + format: percent + description: > + The percentage of CPU time spent by the process since the last event. + This value is normalized by the number of CPU cores and it ranges + from 0 to 1. + - name: cpu.start_time + type: date + description: > + The time when the process was started. + - name: memory.pct + type: scaled_float + format: percent + description: > + The percentage of memory the process occupied in main memory (RAM). - name: system type: group description: > diff --git a/metricbeat/module/system/fields.go b/metricbeat/module/system/fields.go index d7709fab1efa..9c99bdfe5c87 100644 --- a/metricbeat/module/system/fields.go +++ b/metricbeat/module/system/fields.go @@ -32,5 +32,5 @@ func init() { // AssetSystem returns asset data. // This is the base64 encoded gzipped contents of module/system. func AssetSystem() string { - return "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" + return "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" } diff --git a/metricbeat/module/system/process/_meta/data.json b/metricbeat/module/system/process/_meta/data.json index d0d5aa78a550..6577bb55b591 100644 --- a/metricbeat/module/system/process/_meta/data.json +++ b/metricbeat/module/system/process/_meta/data.json @@ -15,197 +15,42 @@ "splash" ], "command_line": "/sbin/init splash", + "cpu": { + "pct": 0, + "start_time": "2020-12-04T22:17:35.000Z" + }, + "memory": { + "pct": 0.0004 + }, "name": "systemd", "pgid": 1, "pid": 1, - "ppid": 0 + "ppid": 0, + "state": "sleeping" }, "service": { "type": "system" }, "system": { "process": { - "cgroup": { - "blkio": { - "id": "init.scope", - "path": "/init.scope", - "total": { - "bytes": 573440, - "ios": 140 - } - }, - "cpu": { - "cfs": { - "period": { - "us": 100000 - }, - "quota": { - "us": 0 - }, - "shares": 1024 - }, - "id": "init.scope", - "path": "/init.scope", - "rt": { - "period": { - "us": 0 - }, - "runtime": { - "us": 0 - } - }, - "stats": { - "periods": 0, - "throttled": { - "ns": 0, - "periods": 0 - } - } - }, - "cpuacct": { - "id": "init.scope", - "path": "/init.scope", - "percpu": { - "1": 571119313, - "10": 282248474, - "11": 363773369, - "12": 855691122, - "2": 735154670, - "3": 458174215, - "4": 281192882, - "5": 563599363, - "6": 415888016, - "7": 396270851, - "8": 550242795, - "9": 419970811 - }, - "stats": { - "system": { - "ns": 1700000000 - }, - "user": { - "ns": 1920000000 - } - }, - "total": { - "ns": 5893325881 - } - }, - "id": "init.scope", - "memory": { - "id": "init.scope", - "kmem": { - "failures": 0, - "limit": { - "bytes": 9223372036854771712 - }, - "usage": { - "bytes": 16871424, - "max": { - "bytes": 17829888 - } - } - }, - "kmem_tcp": { - "failures": 0, - "limit": { - "bytes": 9223372036854771712 - }, - "usage": { - "bytes": 0, - "max": { - "bytes": 0 - } - } - }, - "mem": { - "failures": 0, - "limit": { - "bytes": 9223372036854771712 - }, - "usage": { - "bytes": 21827584, - "max": { - "bytes": 30121984 - } - } - }, - "memsw": { - "failures": 0, - "limit": { - "bytes": 0 - }, - "usage": { - "bytes": 0, - "max": { - "bytes": 0 - } - } - }, - "path": "/init.scope", - "stats": { - "active_anon": { - "bytes": 4055040 - }, - "active_file": { - "bytes": 405504 - }, - "cache": { - "bytes": 643072 - }, - "hierarchical_memory_limit": { - "bytes": 9223372036854771712 - }, - "hierarchical_memsw_limit": { - "bytes": 0 - }, - "inactive_anon": { - "bytes": 270336 - }, - "inactive_file": { - "bytes": 0 - }, - "major_page_faults": 0, - "mapped_file": { - "bytes": 0 - }, - "page_faults": 117447, - "pages_in": 52008, - "pages_out": 50851, - "rss": { - "bytes": 4009984 - }, - "rss_huge": { - "bytes": 0 - }, - "swap": { - "bytes": 0 - }, - "unevictable": { - "bytes": 0 - } - } - }, - "path": "/init.scope" - }, "cmdline": "/sbin/init splash", "cpu": { - "start_time": "2020-11-03T17:55:56.000Z", + "start_time": "2020-12-04T22:17:35.000Z", "total": { "norm": { "pct": 0 }, "pct": 0, - "value": 5580 + "value": 1290 } }, "memory": { "rss": { - "bytes": 13414400, + "bytes": 12173312, "pct": 0.0004 }, - "share": 8531968, - "size": 173076480 + "share": 8679424, + "size": 172113920 }, "state": "sleeping" } diff --git a/metricbeat/module/system/process/process.go b/metricbeat/module/system/process/process.go index b1b0b5d0fe3e..108cab390f8e 100644 --- a/metricbeat/module/system/process/process.go +++ b/metricbeat/module/system/process/process.go @@ -139,9 +139,19 @@ func (m *MetricSet) Fetch(r mb.ReporterV2) error { } // Duplicate system.process.cmdline with ECS name process.command_line - if v, ok := proc["cmdline"]; ok { - rootFields.Put("process.command_line", v) - } + rootFields = getAndCopy(proc, "cmdline", rootFields, "process.command_line") + + // Duplicate system.process.state with process.state + rootFields = getAndCopy(proc, "state", rootFields, "process.state") + + // Duplicate system.process.cpu.start_time with process.cpu.start_time + rootFields = getAndCopy(proc, "cpu.start_time", rootFields, "process.cpu.start_time") + + // Duplicate system.process.cpu.total.norm.pct with process.cpu.pct + rootFields = getAndCopy(proc, "cpu.total.norm.pct", rootFields, "process.cpu.pct") + + // Duplicate system.process.memory.rss.pct with process.memory.pct + rootFields = getAndCopy(proc, "memory.rss.pct", rootFields, "process.memory.pct") if cwd := getAndRemove(proc, "cwd"); cwd != nil { rootFields.Put("process.working_directory", cwd) @@ -180,3 +190,13 @@ func getAndRemove(from common.MapStr, field string) interface{} { } return nil } + +func getAndCopy(from common.MapStr, field string, to common.MapStr, toField string) common.MapStr { + v, err := from.GetValue(field) + if err != nil { + return to + } + + _, err = to.Put(toField, v) + return to +}