Ad Widget

Collapse

MSSQL: триггер сработает только если состояние >1 за период

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Evgene-mmk
    Member
    • Nov 2020
    • 44

    #1

    MSSQL: триггер сработает только если состояние >1 за период

    В Template DB MSSQL by ODBC есть триггер MSSQL DB '{#DBNAME}': State is {ITEM.VALUE} {Template DB MSSQL by ODBC:mssql.db.state["{#DBNAME}"].last()}>1 есть несколько состояний БД ONLINE(0), RESTORING(1), RECOVERING(2) и т.д.
    Но так как на SQL серверах настроен mirroring происходят "ложные срабатывания" то есть отлавливаются состояния когда на вторичной реплике БД в RECOVERING(2) в течении нескольких секунд (вообщем это нормально)
    Как переделать триггер так чтоб он сработал только если mssql.db.state >1 в течении 1 минуты ??
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Склонировать на этом хосте оригинальный триггер из шаблона, в клоне триггерную функцию last() заменить на min(1m), клон оставить, а оригинальный триггер - за-disable-ить.

    Comment

    • Evgene-mmk
      Member
      • Nov 2020
      • 44

      #3
      а такой вариант я правильно понимаю {Template DB MSSQL by ODBC:mssql.db.state["{#DBNAME}"].count(#3,1,gt)}=3 что последние три значения должны быть больше 1

      Comment

      • Kos
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • Aug 2015
        • 3404

        #4
        Originally posted by Evgene-mmk
        а такой вариант я правильно понимаю {Template DB MSSQL by ODBC:mssql.db.state["{#DBNAME}"].count(#3,1,gt)}=3 что последние три значения должны быть больше 1
        Да, правильно.
        Но выражение
        Code:
        {Template DB MSSQL by ODBC:mssql.db.state["{#DBNAME}"].min(#3)}>1
        имеет тот же смысл, но проще для понимания.

        Comment

        Working...