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

Zabbix Trigger Function for Monotonic Items

    XMLWordPrintable

    Details

    • Team:
      Team C
    • Sprint:
      Sprint 78 (Jul 2021), Sprint 79 (Aug 2021)
    • Story Points:
      1

      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

        1. XXX_1.jpg
          XXX_1.jpg
          18 kB
        2. XXX2.jpg
          XXX2.jpg
          23 kB

          Issue Links

            Activity

              People

              Assignee:
              arimdjonoks Artjoms Rimdjonoks
              Reporter:
              GRyan337 Ryan Eberly
              Votes:
              3 Vote for this issue
              Watchers:
              13 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: