diff options
| author | pavelmash <7467039+pavelmash@users.noreply.github.com> | 2020-12-17 19:34:17 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-17 09:34:17 -0800 |
| commit | a9f411f3951d7dfcae16d38a854694813d7d04e9 (patch) | |
| tree | 9d3205cb6096e65ec7ab157939807fa4f5bb9868 | |
| parent | 4e979c4ddaec1490ca3358851037ae15ed8e8167 (diff) | |
#46 - added process_resident_memory_bytes metric (#47)
Co-authored-by: pavel.mash <pavel.mash@inbase.com.ua>
| -rw-r--r-- | prom/src/prom_collector.c | 12 | ||||
| -rw-r--r-- | prom/src/prom_process_limits.c | 1 | ||||
| -rw-r--r-- | prom/src/prom_process_limits_t.h | 1 | ||||
| -rw-r--r-- | prom/src/prom_process_stat.c | 5 | ||||
| -rw-r--r-- | prom/src/prom_process_stat_t.h | 1 | ||||
| -rw-r--r-- | prom/test/prom_collector_test.c | 2 |
6 files changed, 19 insertions, 3 deletions
diff --git a/prom/src/prom_collector.c b/prom/src/prom_collector.c index c25349c..a72a6a7 100644 --- a/prom/src/prom_collector.c +++ b/prom/src/prom_collector.c @@ -15,6 +15,7 @@ */ #include <stdio.h> +#include <unistd.h> // Public #include "prom_alloc.h" @@ -152,6 +153,9 @@ prom_collector_t *prom_collector_process_new(const char *limits_path, const char r = prom_collector_add_metric(self, prom_process_virtual_memory_bytes); if (r) return NULL; + r = prom_collector_add_metric(self, prom_process_resident_memory_bytes); + if (r) return NULL; + r = prom_collector_add_metric(self, prom_process_start_time_seconds); if (r) return NULL; @@ -234,6 +238,14 @@ prom_map_t *prom_collector_process_collect(prom_collector_t *self) { prom_process_stat_destroy(stat); return NULL; } + r = prom_gauge_set(prom_process_resident_memory_bytes, stat->rss*sysconf(_SC_PAGE_SIZE), NULL); + if (r) { + prom_process_limits_file_destroy(limits_f); + prom_map_destroy(limits_map); + prom_process_stat_file_destroy(stat_f); + prom_process_stat_destroy(stat); + return NULL; + } r = prom_gauge_set(prom_process_start_time_seconds, stat->starttime, NULL); if (r) { prom_process_limits_file_destroy(limits_f); diff --git a/prom/src/prom_process_limits.c b/prom/src/prom_process_limits.c index df83949..b88fa4c 100644 --- a/prom/src/prom_process_limits.c +++ b/prom/src/prom_process_limits.c @@ -47,7 +47,6 @@ typedef enum prom_process_limit_rdp_limit_type { } prom_process_limit_rdp_limit_type_t; prom_gauge_t *prom_process_virtual_memory_max_bytes; -prom_gauge_t *prom_process_resident_memory_bytes; prom_gauge_t *prom_process_max_fds; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/prom/src/prom_process_limits_t.h b/prom/src/prom_process_limits_t.h index 272c7e5..161df35 100644 --- a/prom/src/prom_process_limits_t.h +++ b/prom/src/prom_process_limits_t.h @@ -23,7 +23,6 @@ extern prom_gauge_t *prom_process_open_fds; extern prom_gauge_t *prom_process_max_fds; extern prom_gauge_t *prom_process_virtual_memory_max_bytes; -extern prom_gauge_t *prom_process_resident_memory_bytes; typedef struct prom_process_limits_row { const char *limit; /**< Pointer to a string */ diff --git a/prom/src/prom_process_stat.c b/prom/src/prom_process_stat.c index 438fdc1..310407a 100644 --- a/prom/src/prom_process_stat.c +++ b/prom/src/prom_process_stat.c @@ -28,6 +28,7 @@ prom_gauge_t *prom_process_cpu_seconds_total; prom_gauge_t *prom_process_virtual_memory_bytes; +prom_gauge_t *prom_process_resident_memory_bytes; prom_gauge_t *prom_process_start_time_seconds; prom_process_stat_file_t *prom_process_stat_file_new(const char *path) { @@ -184,6 +185,10 @@ int prom_process_stats_init(void) { prom_process_virtual_memory_bytes = prom_gauge_new("process_virtual_memory_bytes", "Virtual memory size in bytes.", 0, NULL); + // /proc/[pid]/stat Field 24 + prom_process_resident_memory_bytes = + prom_gauge_new("process_resident_memory_bytes", "Resident memory size in bytes.", 0, NULL); + prom_process_start_time_seconds = prom_gauge_new("process_start_time_seconds", "Start time of the process since unix epoch in seconds.", 0, NULL); return 0; diff --git a/prom/src/prom_process_stat_t.h b/prom/src/prom_process_stat_t.h index 3283609..237d911 100644 --- a/prom/src/prom_process_stat_t.h +++ b/prom/src/prom_process_stat_t.h @@ -22,6 +22,7 @@ extern prom_gauge_t *prom_process_cpu_seconds_total; extern prom_gauge_t *prom_process_virtual_memory_bytes; +extern prom_gauge_t *prom_process_resident_memory_bytes; extern prom_gauge_t *prom_process_start_time_seconds; /** diff --git a/prom/test/prom_collector_test.c b/prom/test/prom_collector_test.c index 71aebde..0568d45 100644 --- a/prom/test/prom_collector_test.c +++ b/prom/test/prom_collector_test.c @@ -30,7 +30,7 @@ void test_prom_process_collector(void) { prom_collector_t *collector = prom_collector_process_new("/code/prom/test/fixtures/limits", "/code/prom/test/fixtures/stat"); prom_map_t *m = collector->collect_fn(collector); - TEST_ASSERT_EQUAL_INT(6, prom_map_size(m)); + TEST_ASSERT_EQUAL_INT(7, prom_map_size(m)); prom_collector_destroy(collector); collector = NULL; } |
