]> arthur.barton.de Git - netdata.git/commitdiff
check all alarms have an update frequency; check that alarms do have an update freque...
authorCosta Tsaousis <costa@tsaousis.gr>
Sat, 20 Aug 2016 19:30:27 +0000 (22:30 +0300)
committerCosta Tsaousis <costa@tsaousis.gr>
Sat, 20 Aug 2016 19:30:27 +0000 (22:30 +0300)
conf.d/health.d/apache.conf [new file with mode: 0644]
src/health.c
src/health.h
src/rrd.c

diff --git a/conf.d/health.d/apache.conf b/conf.d/health.d/apache.conf
new file mode 100644 (file)
index 0000000..ba1a41f
--- /dev/null
@@ -0,0 +1,10 @@
+
+# make sure apache is running
+
+template: apache_last_collected_secs
+      on: apache.requests
+    calc: $now - $last_collected_t
+   every: 10s
+    warn: $this > ( 5 * $update_every)
+    crit: $this > (10 * $update_every)
+
index abe15d97f95e057e1bc99674f65a50c2804b9abb..77010c188c9f1bf943b2b7c37bddc40891148c92 100644 (file)
@@ -113,29 +113,30 @@ calculated_number rrdvar2number(RRDVAR *rv) {
             calculated_number *n = (calculated_number *)rv->value;
             return *n;
         }
-            break;
 
         case RRDVAR_TYPE_TIME_T: {
             time_t *n = (time_t *)rv->value;
             return *n;
         }
-            break;
 
         case RRDVAR_TYPE_COLLECTED: {
             collected_number *n = (collected_number *)rv->value;
             return *n;
         }
-            break;
 
         case RRDVAR_TYPE_TOTAL: {
             total_number *n = (total_number *)rv->value;
             return *n;
         }
 
+        case RRDVAR_TYPE_INT: {
+            int *n = (int *)rv->value;
+            return *n;
+        }
+
         default:
             error("I don't know how to convert RRDVAR type %d to calculated_number", rv->type);
             return NAN;
-            break;
     }
 }
 
@@ -419,6 +420,11 @@ static void rrdsetcalc_link(RRDSET *st, RRDCALC *rc) {
 
     rc->rrdset = st;
 
+    if(rc->update_every < rc->rrdset->update_every) {
+        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);
+        rc->update_every = rc->rrdset->update_every;
+    }
+
     if(rc->green && !st->green)
         st->green = rc->green;
 
index 1b2aa5e25352824e89083e803b7f21d0b8c4f6bb..1e6caa5536c0631e89716584c17a569c13e2c40d 100644 (file)
@@ -9,6 +9,7 @@ extern int rrdvar_compare(void *a, void *b);
 #define RRDVAR_TYPE_TIME_T     2
 #define RRDVAR_TYPE_COLLECTED  3
 #define RRDVAR_TYPE_TOTAL      4
+#define RRDVAR_TYPE_INT        5
 
 // the variables as stored in the variables indexes
 // there are 3 indexes:
index a83af003ec324f2ad94b9e8910643c0f5ed1cc7a..1a49252d872cb2c0e7e372df669c108bacf8059a 100644 (file)
--- a/src/rrd.c
+++ b/src/rrd.c
@@ -558,6 +558,7 @@ RRDSET *rrdset_create(const char *type, const char *id, const char *name, const
         rrdsetvar_create(st, "collected_total_raw", RRDVAR_TYPE_TOTAL, &st->last_collected_total, 0);
         rrdsetvar_create(st, "green", RRDVAR_TYPE_CALCULATED, &st->green, 0);
         rrdsetvar_create(st, "red", RRDVAR_TYPE_CALCULATED, &st->red, 0);
+        rrdsetvar_create(st, "update_every", RRDVAR_TYPE_INT, &st->update_every, 0);
     }
 
     rrdset_index_add(&localhost, st);