From 24b7b91fbf88fa076868fe07d0002f54297d151e Mon Sep 17 00:00:00 2001 From: Paulo Dias <44772900+paulojmdias@users.noreply.github.com> Date: Thu, 19 Sep 2024 10:38:28 +0100 Subject: [PATCH] feat(inputs.memcached): Add support for external-store metrics (#15910) --- plugins/inputs/memcached/README.md | 21 +++++++++++ plugins/inputs/memcached/memcached.go | 21 +++++++++++ plugins/inputs/memcached/memcached_test.go | 42 ++++++++++++++++++++++ 3 files changed, 84 insertions(+) diff --git a/plugins/inputs/memcached/README.md b/plugins/inputs/memcached/README.md index 99cfcae50..4d30623d1 100644 --- a/plugins/inputs/memcached/README.md +++ b/plugins/inputs/memcached/README.md @@ -69,6 +69,27 @@ Fields: new items * expired_unfetched - Items pulled from LRU that were never touched by get/incr/append/etc before expiring +* extstore_compact_lost - The number of objects lost during the compaction process. This happens when objects couldn't be rescued or moved to other pages before they were overwritten or evicted. +* extstore_compact_rescues - The total number of objects successfully rescued during the compaction process, meaning they were moved to another page instead of being discarded. +* extstore_compact_resc_cold - The number of cold objects (rarely accessed) rescued during the compaction process. +* extstore_compact_resc_old - The number of older objects (likely less frequently accessed) rescued during the compaction process. +* extstore_compact_skipped - The number of compaction operations skipped, often due to the page not requiring compaction or other conditions preventing it. +* extstore_page_allocs - The total number of pages allocated in the external storage system. +* extstore_page_evictions - The total number of pages evicted (removed) from external storage, generally to free up space. +* extstore_page_reclaims - The total number of previously evicted pages that were reclaimed and reused. +* extstore_pages_free - The number of pages currently free (unallocated) in the external storage. +* extstore_pages_used - The number of pages currently in use in the external storage system. +* extstore_objects_evicted - The total number of objects evicted from external storage, typically to free up space. +* extstore_objects_read - The total number of objects read from external storage. +* extstore_objects_written - The total number of objects written to external storage. +* extstore_objects_used - The number of active objects currently in use in the external storage. +* extstore_bytes_evicted - The total number of bytes evicted from external storage. +* extstore_bytes_written - The total number of bytes written to external storage. +* extstore_bytes_read - The total number of bytes read from external storage. +* extstore_bytes_used - The total number of bytes currently in use in external storage. +* extstore_bytes_fragmented - The total number of fragmented bytes in external storage, representing space that is allocated but not fully utilized. +* extstore_limit_maxbytes - The maximum limit of bytes that external storage can use. +* extstore_io_queue - The current length of the I/O queue, representing pending input/output operations for external storage. * get_expired - Number of items that have been requested but had already expired * get_flushed - Number of items that have been requested but have been flushed diff --git a/plugins/inputs/memcached/memcached.go b/plugins/inputs/memcached/memcached.go index 2175e8fb7..fee4fcbee 100644 --- a/plugins/inputs/memcached/memcached.go +++ b/plugins/inputs/memcached/memcached.go @@ -59,6 +59,27 @@ var sendMetrics = []string{ "evicted_unfetched", "evictions", "expired_unfetched", + "extstore_compact_lost", + "extstore_compact_rescues", + "extstore_compact_resc_cold", + "extstore_compact_resc_old", + "extstore_compact_skipped", + "extstore_page_allocs", + "extstore_page_evictions", + "extstore_page_reclaims", + "extstore_pages_free", + "extstore_pages_used", + "extstore_objects_evicted", + "extstore_objects_read", + "extstore_objects_written", + "extstore_objects_used", + "extstore_bytes_evicted", + "extstore_bytes_written", + "extstore_bytes_read", + "extstore_bytes_used", + "extstore_bytes_fragmented", + "extstore_limit_maxbytes", + "extstore_io_queue", "get_expired", "get_flushed", "get_hits", diff --git a/plugins/inputs/memcached/memcached_test.go b/plugins/inputs/memcached/memcached_test.go index e04fba137..3288782f7 100644 --- a/plugins/inputs/memcached/memcached_test.go +++ b/plugins/inputs/memcached/memcached_test.go @@ -131,6 +131,27 @@ func TestMemcachedParseMetrics(t *testing.T) { {"log_watcher_skipped", "0"}, {"log_watcher_sent", "0"}, {"log_watchers", "0"}, + {"extstore_compact_lost", "3287"}, + {"extstore_compact_rescues", "47014"}, + {"extstore_compact_resc_cold", "0"}, + {"extstore_compact_resc_old", "0"}, + {"extstore_compact_skipped", "0"}, + {"extstore_page_allocs", "30047"}, + {"extstore_page_evictions", "25315"}, + {"extstore_page_reclaims", "29247"}, + {"extstore_pages_free", "0"}, + {"extstore_pages_used", "800"}, + {"extstore_objects_evicted", "1243091"}, + {"extstore_objects_read", "938410"}, + {"extstore_objects_written", "1487003"}, + {"extstore_objects_used", "39319"}, + {"extstore_bytes_evicted", "1638804587744"}, + {"extstore_bytes_written", "1951205770118"}, + {"extstore_bytes_read", "1249921752566"}, + {"extstore_bytes_used", "51316205305"}, + {"extstore_bytes_fragmented", "2370885895"}, + {"extstore_limit_maxbytes", "53687091200"}, + {"extstore_io_queue", "0"}, {"unexpected_napi_ids", "0"}, {"round_robin_fallback", "0"}, {"bytes", "0"}, @@ -238,6 +259,27 @@ STAT log_worker_written 0 STAT log_watcher_skipped 0 STAT log_watcher_sent 0 STAT log_watchers 0 +STAT extstore_compact_lost 3287 +STAT extstore_compact_rescues 47014 +STAT extstore_compact_resc_cold 0 +STAT extstore_compact_resc_old 0 +STAT extstore_compact_skipped 0 +STAT extstore_page_allocs 30047 +STAT extstore_page_evictions 25315 +STAT extstore_page_reclaims 29247 +STAT extstore_pages_free 0 +STAT extstore_pages_used 800 +STAT extstore_objects_evicted 1243091 +STAT extstore_objects_read 938410 +STAT extstore_objects_written 1487003 +STAT extstore_objects_used 39319 +STAT extstore_bytes_evicted 1638804587744 +STAT extstore_bytes_written 1951205770118 +STAT extstore_bytes_read 1249921752566 +STAT extstore_bytes_used 51316205305 +STAT extstore_bytes_fragmented 2370885895 +STAT extstore_limit_maxbytes 53687091200 +STAT extstore_io_queue 0 STAT unexpected_napi_ids 0 STAT round_robin_fallback 0 STAT bytes 0