diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index cd16cdfd8239..59e2f6a929ef 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -67,6 +67,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...main[Check the HEAD dif - Enhance metricbeat on openshift documentation {pull}30054[30054] - Fixed missing ZooKeeper metrics due compatibility issues with versions >= 3.6.0 {pull}30068[30068] - Fix Docker module: rename fields on dashboards. {pull}30500[30500] +- Add back missing metrics to system/linux. {pull}30774[30774] *Packetbeat* diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index e0e880af371d..ac3462fa6056 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -46458,6 +46458,100 @@ format: bytes -- +[float] +=== swap + +This group contains statistics related to the swap memory usage on the system. + + +*`linux.memory.swap.total`*:: ++ +-- +Total swap memory. + + +type: long + +format: bytes + +-- + +*`linux.memory.swap.used.bytes`*:: ++ +-- +Used swap memory. + + +type: long + +format: bytes + +-- + +*`linux.memory.swap.free`*:: ++ +-- +Available swap memory. + + +type: long + +format: bytes + +-- + +*`linux.memory.swap.used.pct`*:: ++ +-- +The percentage of used swap memory. + + +type: scaled_float + +format: percent + +-- + +*`linux.memory.swap.in.pages`*:: ++ +-- +Pages swapped in. + + +type: long + +-- + +*`linux.memory.swap.out.pages`*:: ++ +-- +Pages swapped out. + + +type: long + +-- + +*`linux.memory.swap.readahead.cached`*:: ++ +-- +Swap readahead pages hit from swap_ra_hit. + + +type: long + +-- + +*`linux.memory.swap.readahead.pages`*:: ++ +-- +Pages swapped based on readahead predictions. + + +type: long + +-- + [float] === pageinfo diff --git a/metricbeat/module/linux/fields.go b/metricbeat/module/linux/fields.go index d7cfafc558aa..f1e0587bfd1d 100644 --- a/metricbeat/module/linux/fields.go +++ b/metricbeat/module/linux/fields.go @@ -32,5 +32,5 @@ func init() { // AssetLinux returns asset data. // This is the base64 encoded zlib format compressed contents of module/linux. func AssetLinux() string { - return "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" + return "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" } diff --git a/metricbeat/module/linux/memory/_meta/data.json b/metricbeat/module/linux/memory/_meta/data.json index 88630a95df59..8d93c3167c5d 100644 --- a/metricbeat/module/linux/memory/_meta/data.json +++ b/metricbeat/module/linux/memory/_meta/data.json @@ -25,27 +25,51 @@ } }, "page_stats": { + "direct_efficiency": { + "pct": 0.3419 + }, + "kswapd_efficiency": { + "pct": 0.8922 + }, "pgfree": { - "pages": 2064001369 + "pages": 16328309361 }, "pgscan_direct": { - "pages": 0 + "pages": 21037589 }, "pgscan_kswapd": { - "pages": 0 + "pages": 49831 }, "pgsteal_direct": { - "pages": 0 + "pages": 7193725 }, "pgsteal_kswapd": { - "pages": 0 + "pages": 44459 + } + }, + "swap": { + "free": 8586252288, + "in": { + "pages": 72435 + }, + "out": { + "pages": 2032475 + }, + "readahead": { + "cached": 5, + "pages": 29 + }, + "total": 8589930496, + "used": { + "bytes": 3678208, + "pct": 0.0004 } }, "vmstat": { "allocstall_dma": 0, "allocstall_dma32": 0, - "allocstall_movable": 0, - "allocstall_normal": 0, + "allocstall_movable": 60572, + "allocstall_normal": 1125, "balloon_deflate": 0, "balloon_inflate": 0, "balloon_migrate": 0, @@ -53,124 +77,124 @@ "cma_alloc_success": 0, "compact_daemon_free_scanned": 0, "compact_daemon_migrate_scanned": 0, - "compact_daemon_wake": 0, + "compact_daemon_wake": 2, "compact_fail": 0, - "compact_free_scanned": 0, - "compact_isolated": 0, - "compact_migrate_scanned": 0, + "compact_free_scanned": 406096, + "compact_isolated": 15241, + "compact_migrate_scanned": 51056, "compact_stall": 0, "compact_success": 0, - "direct_map_level2_splits": 462, - "direct_map_level3_splits": 17, + "direct_map_level2_splits": 864, + "direct_map_level3_splits": 52, "drop_pagecache": 0, "drop_slab": 0, "htlb_buddy_alloc_fail": 0, "htlb_buddy_alloc_success": 0, "kswapd_high_wmark_hit_quickly": 0, - "kswapd_inodesteal": 0, - "kswapd_low_wmark_hit_quickly": 0, - "nr_active_anon": 4611, - "nr_active_file": 548241, - "nr_anon_pages": 1760632, - "nr_anon_transparent_hugepages": 115, + "kswapd_inodesteal": 2, + "kswapd_low_wmark_hit_quickly": 1, + "nr_active_anon": 5553, + "nr_active_file": 1478109, + "nr_anon_pages": 1024369, + "nr_anon_transparent_hugepages": 140, "nr_bounce": 0, - "nr_dirtied": 6788213, - "nr_dirty": 56, - "nr_dirty_background_threshold": 1283678, - "nr_dirty_threshold": 2570495, + "nr_dirtied": 87806596, + "nr_dirty": 60, + "nr_dirty_background_threshold": 1339484, + "nr_dirty_threshold": 2682244, "nr_file_hugepages": 0, - "nr_file_pages": 2655490, + "nr_file_pages": 5302193, "nr_file_pmdmapped": 0, - "nr_foll_pin_acquired": 0, - "nr_foll_pin_released": 0, + "nr_foll_pin_acquired": 2, + "nr_foll_pin_released": 2, "nr_free_cma": 0, - "nr_free_pages": 10309517, - "nr_inactive_anon": 1790611, - "nr_inactive_file": 2106365, + "nr_free_pages": 8219610, + "nr_inactive_anon": 1046105, + "nr_inactive_file": 3825289, "nr_isolated_anon": 0, "nr_isolated_file": 0, "nr_kernel_misc_reclaimable": 0, - "nr_kernel_stack": 23488, - "nr_mapped": 321122, + "nr_kernel_stack": 14144, + "nr_mapped": 191441, "nr_mlock": 0, - "nr_page_table_pages": 16498, - "nr_shmem": 12104, + "nr_page_table_pages": 6756, + "nr_shmem": 9446, "nr_shmem_hugepages": 0, "nr_shmem_pmdmapped": 0, - "nr_slab_reclaimable": 251179, - "nr_slab_unreclaimable": 84563, - "nr_swapcached": 0, + "nr_slab_reclaimable": 362837, + "nr_slab_unreclaimable": 167630, + "nr_swapcached": 2, "nr_throttled_written": 0, "nr_unevictable": 768, "nr_unstable": 0, - "nr_vmscan_immediate_reclaim": 0, - "nr_vmscan_write": 0, + "nr_vmscan_immediate_reclaim": 10, + "nr_vmscan_write": 2032594, "nr_writeback": 0, "nr_writeback_temp": 0, - "nr_written": 5845625, - "nr_zone_active_anon": 4611, - "nr_zone_active_file": 548241, - "nr_zone_inactive_anon": 1790611, - "nr_zone_inactive_file": 2106365, + "nr_written": 77862049, + "nr_zone_active_anon": 5553, + "nr_zone_active_file": 1478109, + "nr_zone_inactive_anon": 1046105, + "nr_zone_inactive_file": 3825289, "nr_zone_unevictable": 768, - "nr_zone_write_pending": 56, - "nr_zspages": 3, + "nr_zone_write_pending": 60, + "nr_zspages": 477, "numa_foreign": 0, "numa_hint_faults": 0, "numa_hint_faults_local": 0, - "numa_hit": 2053372987, + "numa_hit": 16320172649, "numa_huge_pte_updates": 0, "numa_interleave": 2819, - "numa_local": 2053354829, + "numa_local": 16319863485, "numa_miss": 0, "numa_other": 0, "numa_pages_migrated": 0, "numa_pte_updates": 0, "oom_kill": 0, - "pageoutrun": 0, - "pgactivate": 2169304, + "pageoutrun": 2, + "pgactivate": 49439150, "pgalloc_dma": 1024, - "pgalloc_dma32": 3024, + "pgalloc_dma32": 819165, "pgalloc_movable": 0, - "pgalloc_normal": 2053391072, - "pgdeactivate": 0, + "pgalloc_normal": 16318820409, + "pgdeactivate": 2560804, "pgdemote_direct": 0, "pgdemote_kswapd": 0, - "pgfault": 2443344488, - "pgfree": 2064001369, - "pginodesteal": 0, - "pglazyfree": 11220, - "pglazyfreed": 0, - "pgmajfault": 16882, - "pgmigrate_fail": 0, - "pgmigrate_success": 0, - "pgpgin": 9730267, - "pgpgout": 46635013, - "pgrefill": 0, - "pgreuse": 111621225, - "pgrotated": 1, - "pgscan_anon": 0, - "pgscan_direct": 0, + "pgfault": 19447993645, + "pgfree": 16328309361, + "pginodesteal": 677, + "pglazyfree": 40011, + "pglazyfreed": 4375, + "pgmajfault": 112209, + "pgmigrate_fail": 778, + "pgmigrate_success": 7169, + "pgpgin": 28240034, + "pgpgout": 472429900, + "pgrefill": 2602042, + "pgreuse": 742840224, + "pgrotated": 316, + "pgscan_anon": 15494945, + "pgscan_direct": 21037589, "pgscan_direct_throttle": 0, - "pgscan_file": 0, - "pgscan_kswapd": 0, + "pgscan_file": 5592475, + "pgscan_kswapd": 49831, "pgskip_dma": 0, "pgskip_dma32": 0, "pgskip_movable": 0, "pgskip_normal": 0, - "pgsteal_anon": 0, - "pgsteal_direct": 0, - "pgsteal_file": 0, - "pgsteal_kswapd": 0, - "pswpin": 0, - "pswpout": 0, - "slabs_scanned": 0, - "swap_ra": 0, - "swap_ra_hit": 0, - "thp_collapse_alloc": 310, + "pgsteal_anon": 2032475, + "pgsteal_direct": 7193725, + "pgsteal_file": 5205709, + "pgsteal_kswapd": 44459, + "pswpin": 72435, + "pswpout": 2032475, + "slabs_scanned": 1097218, + "swap_ra": 29, + "swap_ra_hit": 5, + "thp_collapse_alloc": 1212, "thp_collapse_alloc_failed": 0, - "thp_deferred_split_page": 231, - "thp_fault_alloc": 1195, + "thp_deferred_split_page": 861, + "thp_fault_alloc": 10248, "thp_fault_fallback": 0, "thp_fault_fallback_charge": 0, "thp_file_alloc": 0, @@ -182,27 +206,27 @@ "thp_migration_success": 0, "thp_split_page": 0, "thp_split_page_failed": 0, - "thp_split_pmd": 431, + "thp_split_pmd": 3813, "thp_split_pud": 0, "thp_swpout": 0, "thp_swpout_fallback": 0, "thp_zero_page_alloc": 2, "thp_zero_page_alloc_failed": 0, "unevictable_pgs_cleared": 0, - "unevictable_pgs_culled": 21403, - "unevictable_pgs_mlocked": 2052, - "unevictable_pgs_munlocked": 2052, - "unevictable_pgs_rescued": 2052, + "unevictable_pgs_culled": 56303, + "unevictable_pgs_mlocked": 36952, + "unevictable_pgs_munlocked": 36952, + "unevictable_pgs_rescued": 36952, "unevictable_pgs_scanned": 0, "unevictable_pgs_stranded": 0, - "workingset_activate_anon": 0, - "workingset_activate_file": 0, - "workingset_nodereclaim": 0, - "workingset_nodes": 0, - "workingset_refault_anon": 0, - "workingset_refault_file": 0, + "workingset_activate_anon": 33561, + "workingset_activate_file": 56974, + "workingset_nodereclaim": 130600, + "workingset_nodes": 9668, + "workingset_refault_anon": 72435, + "workingset_refault_file": 448332, "workingset_restore_anon": 0, - "workingset_restore_file": 0, + "workingset_restore_file": 40457, "zone_reclaim_failed": 0 } } diff --git a/metricbeat/module/linux/memory/_meta/fields.yml b/metricbeat/module/linux/memory/_meta/fields.yml index 2490e69aa210..a368c5da2f39 100644 --- a/metricbeat/module/linux/memory/_meta/fields.yml +++ b/metricbeat/module/linux/memory/_meta/fields.yml @@ -76,3 +76,44 @@ format: bytes description: > Default size for huge pages. + - name: swap + type: group + prefix: "[float]" + description: This group contains statistics related to the swap memory usage on the system. + fields: + - name: total + type: long + format: bytes + description: > + Total swap memory. + - name: used.bytes + type: long + format: bytes + description: > + Used swap memory. + - name: free + type: long + format: bytes + description: > + Available swap memory. + - name: used.pct + type: scaled_float + format: percent + description: > + The percentage of used swap memory. + - name: in.pages + type: long + description: > + Pages swapped in. + - name: out.pages + type: long + description: > + Pages swapped out. + - name: readahead.cached + type: long + description: > + Swap readahead pages hit from swap_ra_hit. + - name: readahead.pages + type: long + description: > + Pages swapped based on readahead predictions. diff --git a/metricbeat/module/linux/memory/data.go b/metricbeat/module/linux/memory/data.go index 3b8a954ff54c..d68f97a02bec 100644 --- a/metricbeat/module/linux/memory/data.go +++ b/metricbeat/module/linux/memory/data.go @@ -26,8 +26,10 @@ import ( "github.com/pkg/errors" "github.com/elastic/beats/v7/libbeat/common" + "github.com/elastic/beats/v7/libbeat/common/transform/typeconv" "github.com/elastic/beats/v7/libbeat/metric/system/resolve" "github.com/elastic/beats/v7/metricbeat/internal/metrics/memory" + metrics "github.com/elastic/beats/v7/metricbeat/internal/metrics/memory" ) // FetchLinuxMemStats gets page_stat and huge pages data for linux @@ -56,6 +58,7 @@ func FetchLinuxMemStats(baseMap common.MapStr, hostfs resolve.Resolver) error { } baseMap["hugepages"] = thp + // huge pages swap out if thbswpout, ok := vmstat["thp_swpout"]; ok { baseMap.Put("hugepages.swap.out.pages", thbswpout) } @@ -63,20 +66,32 @@ func FetchLinuxMemStats(baseMap common.MapStr, hostfs resolve.Resolver) error { baseMap.Put("hugepages.swap.out.fallback", thbswpfall) } + // This is largely for convenience, and allows the swap.* metrics to more closely emulate how they're reported on system/memory + // This way very similar metrics aren't split across different modules, even though Linux reports them in different places. + eventRaw, err := metrics.Get(hostfs) + if err != nil { + return errors.Wrap(err, "error fetching memory metrics") + } + swap := common.MapStr{} + err = typeconv.Convert(&swap, &eventRaw.Swap) + + baseMap["swap"] = swap + + // linux-exclusive swap data + map2evt("pswpin", "swap.in.pages", vmstat, baseMap) + map2evt("pswpout", "swap.out.pages", vmstat, baseMap) + map2evt("swap_ra", "swap.readahead.pages", vmstat, baseMap) + map2evt("swap_ra_hit", "swap.readahead.cached", vmstat, baseMap) + baseMap["vmstat"] = vmstat return nil } -func computeEfficiency(scanName string, stealName string, fieldName string, raw map[string]uint64, inMap common.MapStr) { - scanVal, _ := raw[scanName] - stealVal, stealOk := raw[stealName] - if scanVal != 0 && stealOk { - inMap[fieldName] = common.MapStr{ - "pct": common.Round(float64(stealVal)/float64(scanVal), common.DefaultDecimalPlacesCount), - } +func map2evt(inName string, outName string, rawEvt map[string]uint64, outEvt common.MapStr) { + if selected, ok := rawEvt[inName]; ok { + outEvt.Put(outName, selected) } - } // insertPagesChild inserts a "child" MapStr into given events. This is mostly so we don't break mapping for fields that have been around. @@ -88,6 +103,17 @@ func insertPagesChild(field string, raw map[string]uint64, evt common.MapStr) { } } +func computeEfficiency(scanName string, stealName string, fieldName string, raw map[string]uint64, inMap common.MapStr) { + scanVal, _ := raw[scanName] + stealVal, stealOk := raw[stealName] + if scanVal != 0 && stealOk { + inMap[fieldName] = common.MapStr{ + "pct": common.Round(float64(stealVal)/float64(scanVal), common.DefaultDecimalPlacesCount), + } + } + +} + func getHugePages(hostfs resolve.Resolver) (common.MapStr, error) { // see https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt table, err := memory.ParseMeminfo(hostfs)