noflap option to disable flapping functionality per test
Hello, in our installation of xymon we have found that there are certain test that we do not want to apply flapping functionality so I've extended xymond code a bit to allow use of noflap option in hosts.cfg. JC, would it be possible to add this to xymon's code? Here are the changes that add the noflap option: Index: lib/loadhosts.h =================================================================== --- lib/loadhosts.h (revision 1) +++ lib/loadhosts.h (working copy) @@ -36,6 +36,7 @@ XMH_HOLIDAYS, XMH_DELAYRED, XMH_DELAYYELLOW, + XMH_NOFLAP, XMH_FLAG_NOINFO, XMH_FLAG_NOTRENDS, XMH_FLAG_NOCLIENT, Index: lib/loadhosts.c =================================================================== --- lib/loadhosts.c (revision 1) +++ lib/loadhosts.c (working copy) @@ -132,6 +132,8 @@ xmh_item_name[XMH_DELAYRED] = "XMH_DELAYRED"; xmh_item_key[XMH_DELAYYELLOW] = "delayyellow="; xmh_item_name[XMH_DELAYYELLOW] = "XMH_DELAYYELLOW"; + xmh_item_key[XMH_NOFLAP] = "noflap="; + xmh_item_name[XMH_NOFLAP] = "XMH_NOFLAP"; xmh_item_key[XMH_FLAG_NOINFO] = "noinfo"; xmh_item_name[XMH_FLAG_NOINFO] = "XMH_FLAG_NOINFO"; xmh_item_key[XMH_FLAG_NOTRENDS] = "notrends"; Index: xymond/xymond.c =================================================================== --- xymond/xymond.c (revision 1) +++ xymond/xymond.c (working copy) @@ -1338,6 +1338,26 @@ return result; } +static int isset_noflap(void *hinfo, char *testname, char *hostname) +{ + char *tok, *dstr = NULL; + int keylen; + int result = 1; /* default is 1 - > use flapping */ + + dstr = xmh_item(hinfo, XMH_NOFLAP); + if (!dstr) return result; + + /* Check "noflap=test1,test2" */ + keylen = strlen(testname); + tok = strtok(dstr, ","); + while (tok && (strncmp(testname, tok, keylen) != 0)) tok = strtok(NULL, ","); + if (tok) { + result = 0; /* do not use flapping for the test */ + dbgprintf("Ignoring flapping for %s:%s due to noflap set.\n", hostname, testname); + } + return result; +} + void handle_status(unsigned char *msg, char *sender, char *hostname, char *testname, char *grouplist, xymond_log_t *log, int newcolor, char *downcause, int modifyonly) { @@ -1421,7 +1441,10 @@ * is less serious than the old color, then we ignore the * color change and keep the status at the more serious level. */ - if (modifyonly || issummary) { + if (modifyonly || issummary || isset_noflap(hinfo, testname, hostname)) { /* Nothing */ } else if ((flapcount > 0) && ((now - log->lastchange[flapcount-1]) < flapthreshold)) { Kind regards, Martin
On 6/13/2015 9:10 AM, Martin Lenko wrote:
Hello, in our installation of xymon we have found that there are certain test that we do not want to apply flapping functionality so I've extended xymond code a bit to allow use of noflap option in hosts.cfg.
This would also be useful in our installation.
-- Do things because you should, not just because you can.
John Thurston 907-465-8591 John.Thurston at alaska.gov Enterprise Technology Services Department of Administration State of Alaska
participants (2)
-
john.thurston@alaska.gov
-
lenko99@gmail.com