summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpavelmash <7467039+pavelmash@users.noreply.github.com>2020-12-17 19:34:17 +0200
committerGitHub <noreply@github.com>2020-12-17 09:34:17 -0800
commita9f411f3951d7dfcae16d38a854694813d7d04e9 (patch)
tree9d3205cb6096e65ec7ab157939807fa4f5bb9868
parent4e979c4ddaec1490ca3358851037ae15ed8e8167 (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.c12
-rw-r--r--prom/src/prom_process_limits.c1
-rw-r--r--prom/src/prom_process_limits_t.h1
-rw-r--r--prom/src/prom_process_stat.c5
-rw-r--r--prom/src/prom_process_stat_t.h1
-rw-r--r--prom/test/prom_collector_test.c2
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;
}