@cryptotaxi247 / netdata-1 / commits / db0bdeaa3

check all alarms have an update frequency; check that alarms do have an update frequency less than the chart they are linked; charts expose their update frequency as variables; added apache health check

Costa Tsaousis committed Aug 20, 2016 at 22:30 UTC db0bdeaa3da46fdb90883a946190328e6620cb1a
4 files changed +22 -4
conf.d/health.d/apache.conf new
+10
@@ -0,0 +1,10 @@
1 +
2 +# make sure apache is running
3 +
4 +template: apache_last_collected_secs
5 + on: apache.requests
6 + calc: $now - $last_collected_t
7 + every: 10s
8 + warn: $this > ( 5 * $update_every)
9 + crit: $this > (10 * $update_every)
10 +
src/health.c
+10 -4
@@ -113,29 +113,30 @@ calculated_number rrdvar2number(RRDVAR *rv) {
113 calculated_number *n = (calculated_number *)rv->value;
114 return *n;
115 }
116 - break;
116
117 case RRDVAR_TYPE_TIME_T: {
118 time_t *n = (time_t *)rv->value;
119 return *n;
120 }
122 - break;
121
122 case RRDVAR_TYPE_COLLECTED: {
123 collected_number *n = (collected_number *)rv->value;
124 return *n;
125 }
128 - break;
126
127 case RRDVAR_TYPE_TOTAL: {
128 total_number *n = (total_number *)rv->value;
129 return *n;
130 }
131
132 + case RRDVAR_TYPE_INT: {
133 + int *n = (int *)rv->value;
134 + return *n;
135 + }
136 +
137 default:
138 error("I don't know how to convert RRDVAR type %d to calculated_number", rv->type);
139 return NAN;
138 - break;
140 }
141 }
142
@@ -419,6 +420,11 @@ static void rrdsetcalc_link(RRDSET *st, RRDCALC *rc) {
420
421 rc->rrdset = st;
422
423 + if(rc->update_every < rc->rrdset->update_every) {
424 + error("Health alarm '%s.%s' has update every %d, less than chart update every %d. Setting alarm update frequency to %d.", rc->rrdset->id, rc->name, rc->update_every, rc->rrdset->update_every, rc->rrdset->update_every);
425 + rc->update_every = rc->rrdset->update_every;
426 + }
427 +
428 if(rc->green && !st->green)
429 st->green = rc->green;
430
src/health.h
+1
@@ -9,6 +9,7 @@ extern int rrdvar_compare(void *a, void *b);
9 #define RRDVAR_TYPE_TIME_T 2
10 #define RRDVAR_TYPE_COLLECTED 3
11 #define RRDVAR_TYPE_TOTAL 4
12 +#define RRDVAR_TYPE_INT 5
13
14 // the variables as stored in the variables indexes
15 // there are 3 indexes:
src/rrd.c
+1
@@ -558,6 +558,7 @@ RRDSET *rrdset_create(const char *type, const char *id, const char *name, const
558 rrdsetvar_create(st, "collected_total_raw", RRDVAR_TYPE_TOTAL, &st->last_collected_total, 0);
559 rrdsetvar_create(st, "green", RRDVAR_TYPE_CALCULATED, &st->green, 0);
560 rrdsetvar_create(st, "red", RRDVAR_TYPE_CALCULATED, &st->red, 0);
561 + rrdsetvar_create(st, "update_every", RRDVAR_TYPE_INT, &st->update_every, 0);
562 }
563
564 rrdset_index_add(&localhost, st);