Uploaded image for project: 'ZABBIX FEATURE REQUESTS'
  1. ZABBIX FEATURE REQUESTS
  2. ZBXNEXT-6601

Zabbix Trigger Function for Monotonic Items

    XMLWordPrintable

    Details

      Description

      I have several trigger expressions that look for monotonically increasing items. For example, I monitor applications that perform messaging and when something goes wrong the message queue increases. I also monitor applications that are supposed to read files from disk and if the application fails we can tell by counting the files in the directory and checking if they are increasing monotonically. I have several expressions like,

      "{Host1:system.app.messaging.last()} > *

      {Host1:system.app.messaging.prev()}

      and* *

      {Host1:system.app.messaging.prev()}

      > 

      {Host1:system.app.messaging.last(#3)}

      and* *

      {Host1:system.app.messaging.last(#3)}

      > 

      {Host1:system.app.messaging.last(#4)}

      "*********

      ...and so on up to last(#24) or even higher in some cases. This makes the trigger expression quite large and difficult to read. Is it possible to add a new trigger function that does something like the below (written in javascript as an example):

      // assume var array is an time-ordered (ascending) list of values retrieved from zabbix

      var array = [1, 3, 5, 6, 7];
      var is_monotonic_increasing = true;
      var is_monotonic_decreasing = true;
      for (let i = 1; i < array.length; i++) {
          if (array[i] < array[i - 1]) {
              is_monotonic_increasing = false;
          }
          if (array[i] > array[i - 1]) {
              is_monotonic_decreasing = false;
          }
      }
      console.log(is_monotonic_increasing);
      console.log(is_monotonic_decreasing);

       

      The function name could be something like:

      monotonic(sec|#num,<operator>,time_shift)

      where <operator> would either be "increasing" or "decreasing".

      Real example allowing us to check if all values received in the last 6 hours are monotonically increasing:

      *

      {Host1:system.app.messaging.monotonic(6h,"increasing")}

      = 1*

      Real example checking if all values in the last 10 values are monotonically decreasing:

      *

      {Host1:system.app.messaging.monotonic(#10,"decreasing")}

      = 1*

       

      Thank you so much for your time and I hope this possible!

        Attachments

          Activity

            People

            Assignee:
            vmurzins Valdis Murzins
            Reporter:
            GRyan337 Ryan Eberly
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated: