summaryrefslogtreecommitdiffstats
path: root/daemon
diff options
context:
space:
mode:
authorMarkos Fountoulakis <44345837+mfundul@users.noreply.github.com>2019-10-24 19:43:09 +0300
committerGitHub <noreply@github.com>2019-10-24 19:43:09 +0300
commit88f966593abc5c7888e7c0be83780a97d4326ac2 (patch)
treeea40e93b143cb18c6da12357e1e2a64e0095ce78 /daemon
parenta6229b245cf42b332d3f11199488f175a8a80a7c (diff)
detect if the disk cannot keep up with data collection (#7139)
* Adjust dbengine flushing speed more dynamically * Added error tracking statistics for failure to flush events * Added alarm for dbengine flushing errors * Improved dbengine accounting for commited to be written pages
Diffstat (limited to 'daemon')
-rw-r--r--daemon/global_statistics.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/daemon/global_statistics.c b/daemon/global_statistics.c
index 2bcc5c9fd9..5197dcc100 100644
--- a/daemon/global_statistics.c
+++ b/daemon/global_statistics.c
@@ -544,7 +544,7 @@ void global_statistics_charts(void) {
if (host->rrd_memory_mode == RRD_MEMORY_MODE_DBENGINE) {
++hosts_with_dbengine;
/* get localhost's DB engine's statistics */
- rrdeng_get_33_statistics(host->rrdeng_ctx, local_stats_array);
+ rrdeng_get_35_statistics(host->rrdeng_ctx, local_stats_array);
for (i = 0 ; i < RRDENG_NR_STATS ; ++i) {
/* aggregate statistics across hosts */
stats_array[i] += local_stats_array[i];
@@ -775,6 +775,7 @@ void global_statistics_charts(void) {
static RRDSET *st_errors = NULL;
static RRDDIM *rd_fs_errors = NULL;
static RRDDIM *rd_io_errors = NULL;
+ static RRDDIM *rd_flushing_errors = NULL;
if (unlikely(!st_errors)) {
st_errors = rrdset_create_localhost(
@@ -794,12 +795,14 @@ void global_statistics_charts(void) {
rd_io_errors = rrddim_add(st_errors, "I/O errors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
rd_fs_errors = rrddim_add(st_errors, "FS errors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
+ rd_flushing_errors = rrddim_add(st_errors, "flushing errors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
}
else
rrdset_next(st_errors);
rrddim_set_by_pointer(st_errors, rd_io_errors, (collected_number)stats_array[30]);
rrddim_set_by_pointer(st_errors, rd_fs_errors, (collected_number)stats_array[31]);
+ rrddim_set_by_pointer(st_errors, rd_flushing_errors, (collected_number)stats_array[34]);
rrdset_done(st_errors);
}