From f15ee5ed610505401a41871ce64dbe67d4ec5fde Mon Sep 17 00:00:00 2001 From: eeff <33566201+eeff@users.noreply.github.com> Date: Thu, 20 Apr 2023 12:04:36 +0800 Subject: [PATCH] feat: update global memory metrics --- include/neuron/metrics.h | 1 + plugins/monitor/metric_handle.c | 15 +++++++++++---- src/base/metrics.c | 7 +++++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/include/neuron/metrics.h b/include/neuron/metrics.h index 5707e8ff..ff4d538c 100644 --- a/include/neuron/metrics.h +++ b/include/neuron/metrics.h @@ -154,6 +154,7 @@ typedef struct { unsigned cpu_cores; size_t mem_total_bytes; size_t mem_used_bytes; + size_t mem_cache_bytes; size_t disk_size_gibibytes; size_t disk_used_gibibytes; size_t disk_avail_gibibytes; diff --git a/plugins/monitor/metric_handle.c b/plugins/monitor/metric_handle.c index 0f8c3e10..c62a77a6 100644 --- a/plugins/monitor/metric_handle.c +++ b/plugins/monitor/metric_handle.c @@ -31,10 +31,10 @@ // clang-format off #define METRIC_GLOBAL_TMPL \ - "# HELP distro OS distribution\n" \ - "distro %s\n" \ - "# HELP kernel OS kernel version\n" \ - "kernel %s\n" \ + "# HELP os_info OS distro and kernel version\n" \ + "# TYPE os_info gauge\n" \ + "os_info[version=\"%s\"] 0\n" \ + "os_info[kernel=\"%s\"] 0\n" \ "# HELP cpu_percent Total CPU utilisation percentage\n" \ "# TYPE cpu_percent gauge\n" \ "cpu_percent %u\n" \ @@ -47,6 +47,12 @@ "# HELP mem_used_bytes Used memory in bytes\n" \ "# TYPE mem_used_bytes gauge\n" \ "mem_used_bytes %zu\n" \ + "# HELP mem_cache Memory buffer/cache size in bytes\n" \ + "# TYPE mem_cache gauge\n" \ + "mem_cache_bytes %zu\n" \ + "# HELP rss_bytes RSS (Resident Set Size) in bytes\n" \ + "# TYPE rss_bytes gauge\n" \ + "rss_bytes %zu\n" \ "# HELP disk_size_gibibytes Disk size in gibibytes\n" \ "# TYPE disk_size_gibibytes counter\n" \ "disk_size_gibibytes %zu\n" \ @@ -141,6 +147,7 @@ static inline void gen_global_metrics(const neu_metrics_t *metrics, { fprintf(stream, METRIC_GLOBAL_TMPL, metrics->distro, metrics->kernel, metrics->cpu_percent, metrics->cpu_cores, metrics->mem_total_bytes, + metrics->mem_used_bytes, metrics->mem_cache_bytes, metrics->mem_used_bytes, metrics->disk_size_gibibytes, metrics->disk_used_gibibytes, metrics->disk_avail_gibibytes, metrics->core_dumped, metrics->uptime_seconds, metrics->north_nodes, diff --git a/src/base/metrics.c b/src/base/metrics.c index a5bee2fc..5c85dd7e 100644 --- a/src/base/metrics.c +++ b/src/base/metrics.c @@ -101,6 +101,11 @@ static inline size_t memory_used() return parse_memory_fields(3); } +static inline size_t memory_cache() +{ + return parse_memory_fields(6); +} + static inline int disk_usage(size_t *size_p, size_t *used_p, size_t *avail_p) { struct statvfs buf = {}; @@ -276,6 +281,7 @@ void neu_metrics_visist(neu_metrics_cb_t cb, void *data) { unsigned cpu = cpu_usage(); size_t mem_used = memory_used(); + size_t mem_cache = memory_cache(); size_t disk_size = 0, disk_used = 0, disk_avail = 0; disk_usage(&disk_size, &disk_used, &disk_avail); bool core_dumped = has_core_dumps(); @@ -284,6 +290,7 @@ void neu_metrics_visist(neu_metrics_cb_t cb, void *data) g_metrics_.cpu_percent = cpu; g_metrics_.cpu_cores = get_nprocs(); g_metrics_.mem_used_bytes = mem_used; + g_metrics_.mem_cache_bytes = mem_cache; g_metrics_.disk_size_gibibytes = disk_size; g_metrics_.disk_used_gibibytes = disk_used; g_metrics_.disk_avail_gibibytes = disk_avail;