zabbix_export:
  version: '7.0'
  template_groups:
    - uuid: 748ad4d098d447d492bb935c907f652f
      name: Templates/Databases
  templates:
    - uuid: 75fc96367e8d4588ba8314145fc12d35
      template: 'MSSQL by Zabbix agent 2'
      name: 'MSSQL by Zabbix agent 2'
      description: |
        This template is designed for the effortless deployment of MSSQL monitoring by Zabbix via Zabbix agent 2 and uses a loadable plugin to run SQL queries.
        
        Setup:
        
        1. Deploy Zabbix agent 2 with the MSSQL plugin. You can use this template starting with Zabbix versions 6.0.27 / 6.4.12.
        
          For more information, see MSSQL plugin documentation: https://git.zabbix.com/projects/AP/repos/mssql/browse
          
          Loadable plugin requires installation of one of the following:
        
          - Separate package
          
          - Binary file
          
          - Compilation from sources: https://www.zabbix.com/documentation/7.0/manual/extensions/plugins/build
        
        2. Create an MSSQL user for monitoring.
        
          View Server State and View Any Definition permissions should be granted to the user.
          Grant this user read permissions to the sysjobschedules, sysjobhistory, and sysjobs tables.
        
          For more information, see MSSQL documentation:
          
          - Create a database user: https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/create-a-database-user?view=sql-server-ver16
          
          - GRANT Server Permissions: https://docs.microsoft.com/en-us/sql/t-sql/statements/grant-server-permissions-transact-sql?view=sql-server-ver16
          
          - Configure a User to Create and Manage SQL Server Agent Jobs: https://docs.microsoft.com/en-us/sql/ssms/agent/configure-a-user-to-create-and-manage-sql-server-agent-jobs?view=sql-server-ver16
        
        3. Set the user name and password in the host macros ({$MSSQL.USER} and {$MSSQL.PASSWORD}).
        
        4. Set the connection string for the MSSQL instance in the {$MSSQL.URI} macro as a URI, such as <protocol://host:port>, or specify the named session - <sessionname>.
        
        The "Service's TCP port state" item uses the {$MSSQL.HOST} and {$MSSQL.PORT} macros to check the availability of the MSSQL instance, change these if necessary.
        
        Note: You can use the context macros {$MSSQL.BACKUP_FULL.USED}, {$MSSQL.BACKUP_LOG.USED}, and {$MSSQL.BACKUP_DIFF.USED} to disable backup age triggers for a certain database. If set to a value other than "1", the trigger expression for the backup age will not fire.
        
        Generated by official Zabbix template tool "Templator"
      vendor:
        name: Zabbix
        version: 7.0-0
      groups:
        - name: Templates/Databases
      items:
        - uuid: 668f0a143b164fd5b62b1311ac798ca3
          name: 'Get Access Methods counters'
          type: DEPENDENT
          key: mssql.access_methods.raw
          history: '0'
          value_type: TEXT
          description: 'The item gets server information about access methods.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.object_name=~''.*Access Methods'')]'
              error_handler: DISCARD_VALUE
          master_item:
            key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          tags:
            - tag: component
              value: raw
        - uuid: e48534a4fd3042ee9c2f0155230298a2
          name: 'Auto-param attempts per second'
          type: DEPENDENT
          key: mssql.autoparam_attempts_sec.rate
          value_type: FLOAT
          description: 'Number of auto-parameterization attempts per second. The total should be the sum of the failed, safe, and unsafe auto-parameterizations. Auto-parameterization occurs when an instance of SQL Server tries to parameterize a Transact-SQL request by replacing some literals with parameters so that reuse of the resulting cached execution plan across multiple similar-looking requests is possible. Note that auto-parameterizations are also known as simple parameterizations in the newer versions of SQL Server. This counter does not include forced parameterizations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Auto-Param Attempts/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.sql_statistics.raw
          tags:
            - tag: component
              value: performance
        - uuid: 71ade3c11bcd4f4691c5fa1c3fa6ded1
          name: 'Get availability groups'
          key: 'mssql.availability.group.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: 'The item gets availability group states - name, primary and secondary health, synchronization health.'
          tags:
            - tag: component
              value: raw
        - uuid: 8c5e2250dcc4405d95cc33167be33bb2
          name: 'Average latch wait time'
          type: CALCULATED
          key: mssql.average_latch_wait_time
          delay: 0;m0-59s3
          value_type: FLOAT
          units: ms
          params: |
            (last(//mssql.average_latch_wait_time_raw) - last(//mssql.average_latch_wait_time_raw,#2)) /
            (last(//mssql.average_latch_wait_time_base) - last(//mssql.average_latch_wait_time_base,#2) +
            (last(//mssql.average_latch_wait_time_base) - last(//mssql.average_latch_wait_time_base,#2)=0))
          description: 'Average latch wait time (in milliseconds) for latch requests that had to wait.'
          tags:
            - tag: component
              value: wait-time
        - uuid: 394d622b256945289ed9ca88999e024d
          name: 'Average latch wait time base'
          type: DEPENDENT
          key: mssql.average_latch_wait_time_base
          description: 'For internal use only.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Average Latch Wait Time Base'')].cntr_value.first()'
          master_item:
            key: mssql.latches_info.raw
          tags:
            - tag: component
              value: wait-time
        - uuid: fe80511b840544da86ef3dd1b34bfce2
          name: 'Average latch wait time raw'
          type: DEPENDENT
          key: mssql.average_latch_wait_time_raw
          units: ms
          description: 'Average latch wait time (in milliseconds) for latch requests that had to wait.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Average Latch Wait Time (ms)'')].cntr_value.first()'
          master_item:
            key: mssql.latches_info.raw
          tags:
            - tag: component
              value: wait-time
        - uuid: 3ba031d33d9147f786ee6fb6fddafaed
          name: 'Total average wait time'
          type: CALCULATED
          key: mssql.average_wait_time
          delay: 0;m0-59s3
          value_type: FLOAT
          units: ms
          params: |
            (last(//mssql.average_wait_time_raw) - last(//mssql.average_wait_time_raw,#2)) /
            (last(//mssql.average_wait_time_base) - last(//mssql.average_wait_time_base,#2) +
            (last(//mssql.average_wait_time_base) - last(//mssql.average_wait_time_base,#2)=0))
          description: 'The average wait time, in milliseconds, for each lock request that had to wait.'
          tags:
            - tag: component
              value: wait-time
          triggers:
            - uuid: 7d284dc23d4649c79bf67e13f1edc83b
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.average_wait_time,5m)>{$MSSQL.AVERAGE_WAIT_TIME.MAX}'
              name: 'Total average wait time for locks is high'
              event_name: 'Total average wait time for locks is high (over {$MSSQL.AVERAGE_WAIT_TIME.MAX}ms for 5m)'
              priority: WARNING
              description: 'An average wait time longer than 500 ms may indicate excessive blocking. This value should generally correlate to "Lock Waits/sec" and move up or down with it accordingly.'
              tags:
                - tag: scope
                  value: performance
        - uuid: fc14601c16314459bc8277ebd244997d
          name: 'Total average wait time base'
          type: DEPENDENT
          key: mssql.average_wait_time_base
          description: 'For internal use only.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Average Wait Time Base'')].cntr_value.first()'
          master_item:
            key: mssql.locks_info.raw
          tags:
            - tag: component
              value: wait-time
        - uuid: 5fa855e501dc42e68d8a06e435c08024
          name: 'Total average wait time raw'
          type: DEPENDENT
          key: mssql.average_wait_time_raw
          units: ms
          description: 'Average amount of wait time (in milliseconds) for each lock request that resulted in a wait. Information for all locks.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Average Wait Time (ms)'')].cntr_value.first()'
          master_item:
            key: mssql.locks_info.raw
          tags:
            - tag: component
              value: wait-time
        - uuid: b6c19fe6e67f4686a23455211fb2c076
          name: 'Batch requests per second'
          type: DEPENDENT
          key: mssql.batch_requests_sec.rate
          value_type: FLOAT
          units: rps
          description: 'Number of Transact-SQL command batches received per second. This statistic is affected by all constraints (such as I/O, number of users, cache size, complexity of requests, and so on). High batch requests mean good throughput.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Batch Requests/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.sql_statistics.raw
          tags:
            - tag: component
              value: performance
        - uuid: e2581ae0fd6d4cc18728b7301cb22730
          name: 'Buffer cache hit ratio'
          type: DEPENDENT
          key: mssql.buffer_cache_hit_ratio
          value_type: FLOAT
          units: '%'
          description: 'Indicates the percentage of pages found in the buffer cache without having to read from the disk. The ratio is the total number of cache hits divided by the total number of cache lookups over the last few thousand page accesses. After a long period of time, the ratio changes very little. Since reading from the cache is much less expensive than reading from the disk, a higher value is preferred for this item. To increase the buffer cache hit ratio, consider increasing the amount of memory available to MSSQL Server or using the buffer pool extension feature.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''BufferCacheHitRatio'')].cntr_value.first()'
          master_item:
            key: mssql.buffer_manager.raw
          tags:
            - tag: component
              value: cache
          triggers:
            - uuid: 9ee2397e2560447eb01d4d50cde5fa9d
              expression: 'max(/MSSQL by Zabbix agent 2/mssql.buffer_cache_hit_ratio,5m)<{$MSSQL.BUFFER_CACHE_RATIO.MIN.CRIT}'
              name: 'Percentage of the buffer cache efficiency is low'
              event_name: 'Percentage of the buffer cache efficiency is low (below {$MSSQL.BUFFER_CACHE_RATIO.MIN.CRIT}% for 5m)'
              priority: HIGH
              description: 'Too low buffer cache hit ratio.'
              tags:
                - tag: scope
                  value: performance
            - uuid: c22ac1cbc5224eb98fde9f87c52a3724
              expression: 'max(/MSSQL by Zabbix agent 2/mssql.buffer_cache_hit_ratio,5m)<{$MSSQL.BUFFER_CACHE_RATIO.MIN.WARN}'
              name: 'Percentage of the buffer cache efficiency is low'
              event_name: 'Percentage of the buffer cache efficiency is low (below {$MSSQL.BUFFER_CACHE_RATIO.MIN.WARN}% for 5m)'
              priority: WARNING
              description: 'Low buffer cache hit ratio.'
              dependencies:
                - name: 'Percentage of the buffer cache efficiency is low'
                  expression: 'max(/MSSQL by Zabbix agent 2/mssql.buffer_cache_hit_ratio,5m)<{$MSSQL.BUFFER_CACHE_RATIO.MIN.CRIT}'
              tags:
                - tag: scope
                  value: performance
        - uuid: 2e0810566767476db6cd0ca4eccb9e99
          name: 'Get Buffer Manager counters'
          type: DEPENDENT
          key: mssql.buffer_manager.raw
          history: '0'
          value_type: TEXT
          description: 'The item gets server information about the buffer pool.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.object_name=~''.*Buffer Manager'')]'
              error_handler: DISCARD_VALUE
          master_item:
            key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          tags:
            - tag: component
              value: raw
        - uuid: ca959c973e8a4a549c0c33c85dce3598
          name: 'Cache hit ratio'
          type: DEPENDENT
          key: mssql.cache_hit_ratio
          value_type: FLOAT
          units: '%'
          description: 'Ratio between cache hits and lookups.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''CacheHitRatio'')].cntr_value.first()'
          master_item:
            key: mssql.cache_info.raw
          tags:
            - tag: component
              value: cache
        - uuid: 9925ceb7e021480598aab2bfba74370d
          name: 'Get Cache counters'
          type: DEPENDENT
          key: mssql.cache_info.raw
          history: '0'
          value_type: TEXT
          description: 'The item gets server information about cache.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.object_name=~''.*Plan Cache'' && @.instance_name==''_Total'')]'
              error_handler: DISCARD_VALUE
          master_item:
            key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          tags:
            - tag: component
              value: raw
        - uuid: 913fa728180d4a73a093a2ee05454081
          name: 'Cache objects in use'
          type: DEPENDENT
          key: mssql.cache_objects_in_use
          description: 'Number of cache objects in use.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Cache Objects in use'')].cntr_value.first()'
          master_item:
            key: mssql.cache_info.raw
          tags:
            - tag: component
              value: cache
        - uuid: 4dbb2d972bcc42f19aaa537a0d0431e9
          name: 'Cache object counts'
          type: DEPENDENT
          key: mssql.cache_object_counts
          description: 'Number of cache objects in the cache.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Cache Object Counts'')].cntr_value.first()'
          master_item:
            key: mssql.cache_info.raw
          tags:
            - tag: component
              value: cache
        - uuid: 952940ebb15942b3ac7d4b96c816a7c3
          name: 'Cache pages'
          type: DEPENDENT
          key: mssql.cache_pages
          description: 'Number of 8-kilobyte (KB) pages used by cache objects.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Cache Pages'')].cntr_value.first()'
          master_item:
            key: mssql.cache_info.raw
          tags:
            - tag: component
              value: cache
            - tag: component
              value: page
        - uuid: 14bba7081bd84521994b2a28d1af422d
          name: 'Checkpoint pages per second'
          type: DEPENDENT
          key: mssql.checkpoint_pages_sec.rate
          value_type: FLOAT
          description: 'Indicates the number of pages flushed to the disk per second by a checkpoint or other operation which required all dirty pages to be flushed.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Checkpoint pages/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.buffer_manager.raw
          tags:
            - tag: component
              value: page
            - tag: component
              value: performance
        - uuid: f74a2bc9da424fc0ad288ddce6a4f6fa
          name: 'Database pages'
          type: DEPENDENT
          key: mssql.database_pages
          description: 'Indicates the number of pages in the buffer pool with database content.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Database pages'')].cntr_value.first()'
          master_item:
            key: mssql.buffer_manager.raw
          tags:
            - tag: component
              value: page
        - uuid: d124c9d4a3724e32a37895ad1cbc036b
          name: 'Total data file size'
          type: DEPENDENT
          key: mssql.data_files_size
          units: B
          description: 'Total size of all data files.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Data File(s) Size (KB)'')].cntr_value.first()'
            - type: MULTIPLIER
              parameters:
                - '1024'
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1h
          master_item:
            key: mssql.db_info.raw
          tags:
            - tag: component
              value: application
        - uuid: 6c942840048b463e9439f327adceb767
          name: 'Get database'
          key: 'mssql.db.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          delay: 1h
          history: '0'
          value_type: TEXT
          description: 'Getting databases - database name and recovery model.'
          tags:
            - tag: component
              value: raw
        - uuid: 7ee97938f31d4983b3c216684089c23f
          name: 'Get DB counters'
          type: DEPENDENT
          key: mssql.db_info.raw
          history: '0'
          value_type: TEXT
          description: 'The item gets summary information about databases.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.object_name=~''.*Databases'' && @.instance_name==''_Total'')]'
              error_handler: DISCARD_VALUE
          master_item:
            key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          tags:
            - tag: component
              value: raw
        - uuid: b82b979548824464a204d49a9c760c99
          name: 'Total errors per second'
          type: DEPENDENT
          key: mssql.errors_sec.rate
          value_type: FLOAT
          description: 'Number of errors per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Errors/sec'' && @.instance_name==''_Total'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.sql_errors.raw
          tags:
            - tag: component
              value: error
            - tag: component
              value: performance
        - uuid: 152cf9cbf35f475bb242ddcb58e23c35
          name: 'Failed auto-params per second'
          type: DEPENDENT
          key: mssql.failed_autoparams_sec.rate
          value_type: FLOAT
          description: 'Number of failed auto-parameterization attempts per second. This number should be small. Note that auto-parameterizations are also known as simple parameterizations in the newer versions of SQL Server.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Failed Auto-Params/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.sql_statistics.raw
          tags:
            - tag: component
              value: performance
        - uuid: e7c66d2857034bfcbef7af94673ea66f
          name: 'Forwarded records per second'
          type: DEPENDENT
          key: mssql.forwarded_records_sec.rate
          value_type: FLOAT
          description: 'Number of records per second fetched through forwarded record pointers.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Forwarded Records/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.access_methods.raw
          tags:
            - tag: component
              value: performance
        - uuid: 7d688d051647440595e42bd798ce78dc
          name: 'Free list stalls per second'
          type: DEPENDENT
          key: mssql.free_list_stalls_sec.rate
          value_type: FLOAT
          units: rps
          description: 'Indicates the number of requests per second that had to wait for a free page.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Free list stalls/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.buffer_manager.raw
          tags:
            - tag: component
              value: performance
          triggers:
            - uuid: 5cf3182a47694569b9d75822404b77f7
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.free_list_stalls_sec.rate,5m)>{$MSSQL.FREE_LIST_STALLS.MAX}'
              name: 'Number of rps waiting for a free page is high'
              event_name: 'Number of rps waiting for a free page is high (over {$MSSQL.FREE_LIST_STALLS.MAX} for 5m)'
              priority: WARNING
              description: 'Some requests have to wait for a free page.'
              tags:
                - tag: scope
                  value: performance
        - uuid: 5e8ccbe07c254c2086a58aafe1aa2fdf
          name: 'Full scans per second'
          type: DEPENDENT
          key: mssql.full_scans_sec.rate
          value_type: FLOAT
          description: 'Number of unrestricted full scans per second. These can be either base-table or full-index scans. Values greater than 1 or 2 indicate that there are table / index page scans. If that is combined with high CPU, this counter requires further investigation, otherwise, if the full scans are on small tables, it can be ignored.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Full Scans/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.access_methods.raw
          tags:
            - tag: component
              value: performance
        - uuid: 055399281d2b4e7a90ae1fb4b181a0b2
          name: 'Get General Statistics counters'
          type: DEPENDENT
          key: mssql.general_statistics.raw
          history: '0'
          value_type: TEXT
          description: 'The item gets general statistics information.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.object_name=~''.*General Statistics'')]'
              error_handler: DISCARD_VALUE
          master_item:
            key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          tags:
            - tag: component
              value: raw
        - uuid: 5aa885322d4d4f2d9b55d8f2d65f55b0
          name: 'Granted Workspace Memory'
          type: DEPENDENT
          key: mssql.granted_workspace_memory
          units: B
          description: 'Specifies the total amount of memory currently granted to executing processes, such as hash, sort, bulk copy, and index creation operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Granted Workspace Memory (KB)'')].cntr_value.first()'
            - type: MULTIPLIER
              parameters:
                - '1024'
          master_item:
            key: mssql.mem_manager.raw
          tags:
            - tag: component
              value: memory
        - uuid: 65a2e35bc66e45a08690faf08733c5fb
          name: 'Index searches per second'
          type: DEPENDENT
          key: mssql.index_searches_sec.rate
          value_type: FLOAT
          description: 'Number of index searches per second. These are used to start a range scan, reposition a range scan, revalidate a scan point, fetch a single index record, and search down the index to locate where to insert a new row.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Index Searches/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.access_methods.raw
          tags:
            - tag: component
              value: performance
        - uuid: 5439b52bd72e4204876d0c3716eb0a23
          name: 'Errors per second (Info errors)'
          type: DEPENDENT
          key: mssql.info_errors_sec.rate
          value_type: FLOAT
          description: 'Number of errors per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Errors/sec'' && @.instance_name==''Info Errors'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.sql_errors.raw
          tags:
            - tag: component
              value: error
            - tag: component
              value: performance
        - uuid: e36f8695b4f74178a19bb88afad586b8
          name: 'Get job status'
          key: 'mssql.job.status.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          delay: 10m
          history: '0'
          value_type: TEXT
          description: 'The item gets the SQL agent job status.'
          tags:
            - tag: component
              value: raw
        - uuid: c43a0e1c2adf45cf8809e9a361ec190e
          name: 'Errors per second (Kill connection errors)'
          type: DEPENDENT
          key: mssql.kill_connection_errors_sec.rate
          value_type: FLOAT
          description: 'Number of errors per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Errors/sec'' && @.instance_name==''Kill Connection Errors'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.sql_errors.raw
          tags:
            - tag: component
              value: error
            - tag: component
              value: performance
        - uuid: a394835aeddd46a18327f25747e3564d
          name: 'Get last backup'
          key: 'mssql.last.backup.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          delay: 10m
          history: '0'
          value_type: TEXT
          description: 'The item gets information about backup processes.'
          tags:
            - tag: component
              value: raw
        - uuid: 2bd7c7ec217b4f62b7d94a42e9324f51
          name: 'Get Latches counters'
          type: DEPENDENT
          key: mssql.latches_info.raw
          history: '0'
          value_type: TEXT
          description: 'The item gets server information about latches.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.object_name=~''.*Latches'')]'
              error_handler: DISCARD_VALUE
          master_item:
            key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          tags:
            - tag: component
              value: raw
        - uuid: 2daa0932d2a9491f9b262c06def40ccc
          name: 'Latch waits per second'
          type: DEPENDENT
          key: mssql.latch_waits_sec.rate
          value_type: FLOAT
          units: rps
          description: 'The number of latch requests that could not be granted immediately. Latches are lightweight means of holding a very transient server resource, such as an address in memory.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Latch Waits/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.latches_info.raw
          tags:
            - tag: component
              value: performance
            - tag: component
              value: wait-time
        - uuid: d5710a51fb474d14b7d7716781b76c58
          name: 'Lazy writes per second'
          type: DEPENDENT
          key: mssql.lazy_writes_sec.rate
          value_type: FLOAT
          description: 'Indicates the number of buffers written per second by the buffer manager''s lazy writer. The lazy writer is a system process that flushes out batches of dirty, aged buffers (buffers that contain changes that must be written back to the disk before the buffer can be reused for a different page) and makes them available to user processes. The lazy writer eliminates the need to perform frequent checkpoints in order to create available buffers.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Lazy writes/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.buffer_manager.raw
          tags:
            - tag: component
              value: performance
          triggers:
            - uuid: 96698537fee846199197a25beecaafca
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.lazy_writes_sec.rate,5m)>{$MSSQL.LAZY_WRITES.MAX}'
              name: 'Number of buffers written per second by the lazy writer is high'
              event_name: 'Number of buffers written per second by the lazy writer is high (over {$MSSQL.LAZY_WRITES.MAX} for 5m)'
              priority: WARNING
              description: 'The number of buffers written per second by the buffer manager''s lazy writer exceeds the threshold.'
              tags:
                - tag: scope
                  value: performance
        - uuid: f049c16678ad4daa83e55ab6c3a99fbc
          name: 'Get local DB'
          key: 'mssql.local.db.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: 'Getting the states of the local availability database.'
          tags:
            - tag: component
              value: raw
        - uuid: 46040926001f46c685c160820194a969
          name: 'Get Locks counters'
          type: DEPENDENT
          key: mssql.locks_info.raw
          history: '0'
          value_type: TEXT
          description: 'The item gets server information about locks.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.object_name=~''.*Locks'' && @.instance_name==''_Total'')]'
              error_handler: DISCARD_VALUE
          master_item:
            key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          tags:
            - tag: component
              value: raw
        - uuid: d8adec0bd76a4e1881b8b7e0ba44c7a1
          name: 'Total lock requests per second'
          type: DEPENDENT
          key: mssql.lock_requests_sec.rate
          value_type: FLOAT
          units: rps
          description: 'Number of new locks and lock conversions per second requested from the lock manager.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Lock Requests/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.locks_info.raw
          tags:
            - tag: component
              value: lock
            - tag: component
              value: performance
          triggers:
            - uuid: 19137e1b06fe4f1eaf5e76c5ae47d29d
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.lock_requests_sec.rate,5m)>{$MSSQL.LOCK_REQUESTS.MAX}'
              name: 'Total number of locks per second is high'
              event_name: 'Total number of locks per second is high (over {$MSSQL.LOCK_REQUESTS.MAX} for 5m)'
              priority: WARNING
              description: 'Number of new locks and lock conversions per second requested from the lock manager is high.'
              tags:
                - tag: scope
                  value: performance
        - uuid: 3077e748f89844e0b666a82c26051399
          name: 'Total lock requests per second that timed out'
          type: DEPENDENT
          key: mssql.lock_timeouts_sec.rate
          value_type: FLOAT
          units: rps
          description: 'Number of timed out lock requests per second, including requests for NOWAIT locks.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Lock Timeouts/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.locks_info.raw
          tags:
            - tag: component
              value: lock
            - tag: component
              value: performance
          triggers:
            - uuid: a7313fad35804feeaddf544acb2a0d26
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.lock_timeouts_sec.rate,5m)>{$MSSQL.LOCK_TIMEOUTS.MAX}'
              name: 'Total lock requests per second that timed out is high'
              event_name: 'Total lock requests per second that timed out is high (over {$MSSQL.LOCK_TIMEOUTS.MAX} for 5m)'
              priority: WARNING
              description: 'The total number of timed out lock requests per second, including requests for NOWAIT locks, is high.'
              tags:
                - tag: scope
                  value: performance
        - uuid: bcb606f27714414a92347a45e6bc8d31
          name: 'Total lock requests per second that required waiting'
          type: DEPENDENT
          key: mssql.lock_waits_sec.rate
          value_type: FLOAT
          units: rps
          description: 'Number of lock requests per second that required the caller to wait.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Lock Waits/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.locks_info.raw
          tags:
            - tag: component
              value: lock
            - tag: component
              value: performance
          triggers:
            - uuid: c4fb968a66784746a11feee64a8f98e8
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.lock_waits_sec.rate,5m)>0'
              name: 'Some blocking is occurring for 5m'
              priority: AVERAGE
              description: 'Values greater than zero indicate at least some blocking is occurring, while a value of zero can quickly eliminate blocking as a potential root-cause problem.'
              tags:
                - tag: scope
                  value: performance
        - uuid: 706b5931a7d24e2190d071c1088ba469
          name: 'Lock wait time'
          type: DEPENDENT
          key: mssql.lock_wait_time
          value_type: FLOAT
          units: ms
          description: 'Average of total wait time (in milliseconds) for locks in the last second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Lock Wait Time (ms)'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.locks_info.raw
          tags:
            - tag: component
              value: lock
        - uuid: 343c44bfdd154e99879fbecb4e703dab
          name: 'Logins per second'
          type: DEPENDENT
          key: mssql.logins_sec.rate
          value_type: FLOAT
          description: 'Total number of logins started per second. This does not include pooled connections. Any value over 2 may indicate insufficient connection pooling.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Logins/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.general_statistics.raw
          tags:
            - tag: component
              value: performance
        - uuid: da069a96cc3c410db1c053d3de2a6508
          name: 'Logouts per second'
          type: DEPENDENT
          key: mssql.logouts_sec.rate
          value_type: FLOAT
          description: 'Total number of logout operations started per second. Any value over 2 may indicate insufficient connection pooling.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Logouts/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.general_statistics.raw
          tags:
            - tag: component
              value: performance
        - uuid: e00f3549800a477ba77a8635a27d849b
          name: 'Total log file size'
          type: DEPENDENT
          key: mssql.log_files_size
          units: B
          description: 'Total size of all the transaction log files.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Log File(s) Size (KB)'')].cntr_value.first()'
            - type: MULTIPLIER
              parameters:
                - '1024'
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1h
          master_item:
            key: mssql.db_info.raw
          tags:
            - tag: component
              value: log
        - uuid: fb2125c36295434a8821462b5c86fbee
          name: 'Total log file used size'
          type: DEPENDENT
          key: mssql.log_files_used_size
          units: B
          description: 'The cumulative size of all the log files in the database.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Log File(s) Used Size (KB)'')].cntr_value.first()'
            - type: MULTIPLIER
              parameters:
                - '1024'
          master_item:
            key: mssql.db_info.raw
          tags:
            - tag: component
              value: log
        - uuid: 462eecc28a3f44ef831fc76d3a0a278b
          name: 'Maximum workspace memory'
          type: DEPENDENT
          key: mssql.maximum_workspace_memory
          units: B
          description: 'Indicates the maximum amount of memory available for executing processes, such as hash, sort, bulk copy, and index creation operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Maximum Workspace Memory (KB)'')].cntr_value.first()'
            - type: MULTIPLIER
              parameters:
                - '1024'
          master_item:
            key: mssql.mem_manager.raw
          tags:
            - tag: component
              value: memory
        - uuid: 08919bb644c746c7a51fcc43d3581309
          name: 'Memory grants outstanding'
          type: DEPENDENT
          key: mssql.memory_grants_outstanding
          description: 'Specifies the total number of processes that have successfully acquired a workspace memory grant.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Memory Grants Outstanding'')].cntr_value.first()'
          master_item:
            key: mssql.mem_manager.raw
          tags:
            - tag: component
              value: memory
        - uuid: f790245e08654eddb5cceff6405e68e2
          name: 'Memory grants pending'
          type: DEPENDENT
          key: mssql.memory_grants_pending
          description: 'Specifies the total number of processes waiting for a workspace memory grant.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Memory Grants Pending'')].cntr_value.first()'
          master_item:
            key: mssql.mem_manager.raw
          tags:
            - tag: component
              value: memory
        - uuid: 4114e184cecd4040a26d9156ac11b6d2
          name: 'Get Memory counters'
          type: DEPENDENT
          key: mssql.mem_manager.raw
          history: '0'
          value_type: TEXT
          description: 'The item gets memory information.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.object_name=~''.*Memory Manager'')]'
              error_handler: DISCARD_VALUE
          master_item:
            key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          tags:
            - tag: component
              value: raw
        - uuid: fb51801472fc4ca7beed49c2586ba1cb
          name: 'Get DB mirroring'
          key: 'mssql.mirroring.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: 'Getting DB mirroring.'
          tags:
            - tag: component
              value: raw
        - uuid: 8730198507594f4aa38d45bf00e65a38
          name: 'Get non-local DB'
          key: 'mssql.nonlocal.db.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: 'Getting the non-local availability database.'
          tags:
            - tag: component
              value: raw
        - uuid: 0e8935dc71584982b20ff2dbe42b31a4
          name: 'Total lock requests per second that have deadlocks'
          type: DEPENDENT
          key: mssql.number_deadlocks_sec.rate
          value_type: FLOAT
          units: rps
          description: 'Number of lock requests per second that resulted in a deadlock.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Number of Deadlocks/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.locks_info.raw
          tags:
            - tag: component
              value: deadlock
            - tag: component
              value: performance
          triggers:
            - uuid: f0b039f08b694db1bbafe6b3d8d4e9ab
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.number_deadlocks_sec.rate,5m)>{$MSSQL.DEADLOCKS.MAX}'
              name: 'Number of deadlocks is high'
              event_name: 'Number of deadlocks is high (over {$MSSQL.DEADLOCKS.MAX} for 5m)'
              priority: AVERAGE
              description: 'Too many deadlocks are occurring currently.'
              tags:
                - tag: scope
                  value: performance
        - uuid: 6e8968403b9e4abfbc5ec0a4c990636c
          name: 'Errors per second (DB offline errors)'
          type: DEPENDENT
          key: mssql.offline_errors_sec.rate
          value_type: FLOAT
          description: 'Number of errors per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Errors/sec'' && @.instance_name==''DB Offline Errors'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.sql_errors.raw
          tags:
            - tag: component
              value: error
            - tag: component
              value: performance
        - uuid: 0b53d7e1a0174db2b6ebc1c47ac92d9e
          name: 'Page life expectancy'
          type: DEPENDENT
          key: mssql.page_life_expectancy
          value_type: FLOAT
          units: s
          description: 'Indicates the number of seconds a page will stay in the buffer pool without references.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Page life expectancy'')].cntr_value.first()'
          master_item:
            key: mssql.buffer_manager.raw
          tags:
            - tag: component
              value: page
          triggers:
            - uuid: e47d0eeac246490cbeedb8ba1cf77e94
              expression: 'max(/MSSQL by Zabbix agent 2/mssql.page_life_expectancy,15m)<{$MSSQL.PAGE_LIFE_EXPECTANCY.MIN}'
              name: 'Page life expectancy is low'
              event_name: 'Page life expectancy is low (less {$MSSQL.PAGE_LIFE_EXPECTANCY.MIN}min for 15m)'
              priority: HIGH
              description: 'The page stays in the buffer pool without references for less time than the threshold value.'
              tags:
                - tag: scope
                  value: performance
        - uuid: 97fb6c5dd7de48879f378ac464c37f48
          name: 'Page lookups per second'
          type: DEPENDENT
          key: mssql.page_lookups_sec.rate
          value_type: FLOAT
          units: rps
          description: 'Indicates the number of requests per second to find a page in the buffer pool.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Page lookups/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.buffer_manager.raw
          tags:
            - tag: component
              value: performance
        - uuid: 936ded2166da48a8acc3c94262b0bbac
          name: 'Page reads per second'
          type: DEPENDENT
          key: mssql.page_reads_sec.rate
          value_type: FLOAT
          description: 'Indicates the number of physical database page reads that are issued per second. This statistic displays the total number of physical page reads across all databases. As physical I/O is expensive, you may be able to minimize the cost either by using a larger data cache, intelligent indexes, and more efficient queries, or by changing the database design.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Page reads/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.buffer_manager.raw
          tags:
            - tag: component
              value: page
            - tag: component
              value: performance
          triggers:
            - uuid: 5050b7c4e5a4445d9c4aae031b01115b
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.page_reads_sec.rate,5m)>{$MSSQL.PAGE_READS.MAX}'
              name: 'Number of physical database page reads per second is high'
              event_name: 'Number of physical database page reads per second is high (over {$MSSQL.PAGE_READS.MAX} for 5m)'
              priority: WARNING
              description: 'The physical database page reads are issued too frequently.'
              tags:
                - tag: scope
                  value: performance
        - uuid: 7e39012b0bc640689d3b295fc8f2abc6
          name: 'Page splits per second'
          type: DEPENDENT
          key: mssql.page_splits_sec.rate
          value_type: FLOAT
          description: 'Number of page splits per second that occur as a result of overflowing index pages.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Page Splits/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.access_methods.raw
          tags:
            - tag: component
              value: page
            - tag: component
              value: performance
        - uuid: 2be68cb7cfe441339af164b3b4ce9c90
          name: 'Page writes per second'
          type: DEPENDENT
          key: mssql.page_writes_sec.rate
          value_type: FLOAT
          description: 'Indicates the number of physical database page writes that are issued per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Page writes/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.buffer_manager.raw
          tags:
            - tag: component
              value: page
            - tag: component
              value: performance
          triggers:
            - uuid: 48e32bec13d34ad88db7c9cc98d86a3b
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.page_writes_sec.rate,5m)>{$MSSQL.PAGE_WRITES.MAX}'
              name: 'Number of physical database page writes per second is high'
              event_name: 'Number of physical database page writes per second is high (over {$MSSQL.PAGE_WRITES.MAX} for 5m)'
              priority: WARNING
              description: 'The physical database page writes are issued too frequently.'
              tags:
                - tag: scope
                  value: performance
        - uuid: 2064cd9f8e7646fa8fb329ca287fedd2
          name: 'Percent of ad hoc queries running'
          type: CALCULATED
          key: mssql.percent_of_adhoc_queries
          delay: 0;m0-59s3
          value_type: FLOAT
          units: '%'
          params: |
            last(//mssql.sql_compilations_sec.rate) * 100 /
            (last(//mssql.batch_requests_sec.rate) + (last(//mssql.batch_requests_sec.rate)=0))
          description: 'The ratio of SQL compilations per second to batch requests per second, in percent.'
          tags:
            - tag: component
              value: application
          triggers:
            - uuid: cf0649863fe5421aa1dc279d1ca7e360
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.percent_of_adhoc_queries,15m) > {$MSSQL.PERCENT_COMPILATIONS.MAX}'
              name: 'Percent of ad hoc queries running is high'
              event_name: 'Percent of ad hoc queries running is over {$MSSQL.PERCENT_COMPILATIONS.MAX}% for 15m'
              priority: WARNING
              description: 'The lower this value is, the better. High values often indicate excessive ad hoc querying and should be as low as possible. If excessive ad hoc querying is happening, try rewriting the queries as procedures or invoke the queries using `sp_executeSQL`. When rewriting isn''t possible, consider using a plan guide or setting the database to parameterization forced mode.'
              tags:
                - tag: scope
                  value: performance
        - uuid: 98b0754f231c4160bcd2daafeef64fe0
          name: 'Percent of Recompiled Transact-SQL Objects'
          type: CALCULATED
          key: mssql.percent_recompilations_to_compilations
          delay: 0;m0-59s3
          value_type: FLOAT
          units: '%'
          params: |
            last(//mssql.sql_recompilations_sec.rate) * 100 /
            (last(//mssql.sql_compilations_sec.rate) + (last(//mssql.sql_compilations_sec.rate)=0))
          description: 'The ratio of SQL re-compilations per second to SQL compilations per second, in percent.'
          tags:
            - tag: component
              value: application
          triggers:
            - uuid: 1218fe12f4d542d99d997ede6cc30813
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.percent_recompilations_to_compilations,15m) > {$MSSQL.PERCENT_RECOMPILATIONS.MAX}'
              name: 'Percent of times statement recompiles is high'
              event_name: 'Percent of times statement recompiles is over {$MSSQL.PERCENT_RECOMPILATIONS.MAX}% for 15m'
              priority: WARNING
              description: 'This number should be at or near zero, since recompiles can cause deadlocks and exclusive compile locks. This counter''s value should follow in proportion to "Batch Requests/sec" and "SQL Compilations/sec".'
              tags:
                - tag: scope
                  value: performance
        - uuid: 2128f1e7d0fa46e2bdb8b06f5c07c436
          name: 'Get performance counters'
          key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          delay: 0;m0-59
          history: '0'
          value_type: TEXT
          description: 'The item gets server global status information.'
          tags:
            - tag: component
              value: raw
        - uuid: 9b769f48534c4e6cb9bb2cd4079bd808
          name: 'Number of blocked processes'
          type: DEPENDENT
          key: mssql.processes_blocked
          description: 'Number of currently blocked processes.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Processes blocked'')].cntr_value.first()'
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1h
          master_item:
            key: mssql.general_statistics.raw
          tags:
            - tag: component
              value: application
        - uuid: 432178b4071e46758c421f6d9b75f4cd
          name: 'Get quorum'
          key: 'mssql.quorum.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: 'Getting quorum - cluster name, type, and state.'
          tags:
            - tag: component
              value: raw
        - uuid: 7343a6e34956475db3e79f7cfa905baa
          name: 'Get quorum member'
          key: 'mssql.quorum.member.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: 'Getting quorum members - member name, type, state, and number of quorum votes.'
          tags:
            - tag: component
              value: raw
        - uuid: 18b09445472c46be81281c0cb55297ea
          name: 'Read-ahead pages per second'
          type: DEPENDENT
          key: mssql.readahead_pages_sec.rate
          value_type: FLOAT
          description: 'Indicates the number of pages read per second in anticipation of use.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Readahead pages/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.buffer_manager.raw
          tags:
            - tag: component
              value: page
            - tag: component
              value: performance
        - uuid: 77deceae02df4e2280f42ae7b7b16f76
          name: 'Get replica'
          key: 'mssql.replica.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: 'Getting the database replica.'
          tags:
            - tag: component
              value: raw
        - uuid: 7c5778b466fe488a9c7571a0b0b35597
          name: 'Safe auto-params per second'
          type: DEPENDENT
          key: mssql.safe_autoparams_sec.rate
          value_type: FLOAT
          description: 'Number of safe auto-parameterization attempts per second. Safe refers to a determination that a cached execution plan can be shared between different similar-looking Transact-SQL statements. SQL Server makes many auto-parameterization attempts, some of which turn out to be safe and others fail. Note that auto-parameterizations are also known as simple parameterizations in the newer versions of SQL Server. This does not include forced parameterizations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Safe Auto-Params/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.sql_statistics.raw
          tags:
            - tag: component
              value: performance
        - uuid: 5dda9c1a17fa43ada4a6857e62148f1a
          name: 'Full scans to Index searches ratio'
          type: CALCULATED
          key: mssql.scan_to_search
          delay: 0;m0-59s3
          value_type: FLOAT
          params: 'last(//mssql.full_scans_sec.rate) / (last(//mssql.index_searches_sec.rate) + (last(//mssql.index_searches_sec.rate)=0))'
          description: 'The ratio of full scans per second to index searches per second. The threshold recommendation is strictly for OLTP workloads.'
          tags:
            - tag: component
              value: application
          triggers:
            - uuid: 378cdaf994ea4167b7727996357d7564
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.scan_to_search,15m) > 0.001'
              name: 'Number of index and table scans exceeds index searches in the last 15m'
              priority: WARNING
              description: 'Index searches are preferable to index and table scans. For OLTP applications, optimize for more index searches and less scans (preferably, 1 full scan for every 1000 index searches). Index and table scans are expensive I/O operations.'
              tags:
                - tag: scope
                  value: performance
        - uuid: f02b411d44784721a4fb4e032f094867
          name: 'SQL compilations per second'
          type: DEPENDENT
          key: mssql.sql_compilations_sec.rate
          value_type: FLOAT
          description: 'Number of SQL compilations per second. Indicates the number of times the compile code path is entered. Includes runs caused by statement-level recompilations in SQL Server. After SQL Server user activity is stable, this value reaches a steady state.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''SQL Compilations/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.sql_statistics.raw
          tags:
            - tag: component
              value: performance
        - uuid: 60c2c827c40a4d09b0b41cd7004cb0b0
          name: 'Get SQL Errors counters'
          type: DEPENDENT
          key: mssql.sql_errors.raw
          history: '0'
          value_type: TEXT
          description: 'The item gets SQL error information.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.object_name=~''.*SQL Errors'')]'
              error_handler: DISCARD_VALUE
          master_item:
            key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          tags:
            - tag: component
              value: raw
        - uuid: 515fe1b64f82415fbdfd118358bdcc2d
          name: 'SQL re-compilations per second'
          type: DEPENDENT
          key: mssql.sql_recompilations_sec.rate
          value_type: FLOAT
          description: 'Number of statement recompiles per second. Counts the number of times statement recompiles are triggered. Generally, you want the recompiles to be low.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''SQL Re-Compilations/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.sql_statistics.raw
          tags:
            - tag: component
              value: performance
        - uuid: 8c18cf97c2dc4e94a9b889c72d76cdde
          name: 'Get SQL Statistics counters'
          type: DEPENDENT
          key: mssql.sql_statistics.raw
          history: '0'
          value_type: TEXT
          description: 'The item gets SQL statistics information.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.object_name=~''.*SQL Statistics'')]'
              error_handler: DISCARD_VALUE
          master_item:
            key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          tags:
            - tag: component
              value: raw
        - uuid: 78b85902a71b47b1845bb55a797e8800
          name: 'Table lock escalations per second'
          type: DEPENDENT
          key: mssql.table_lock_escalations.rate
          value_type: FLOAT
          description: 'Number of times locks on a table were escalated to the TABLE or HoBT granularity.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Table Lock Escalations/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.access_methods.raw
          tags:
            - tag: component
              value: lock
            - tag: component
              value: performance
        - uuid: 29b91e97aa5f4efcafa38d59568c16ec
          name: 'Target pages'
          type: DEPENDENT
          key: mssql.target_pages
          description: 'The optimal number of pages in the buffer pool.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Target pages'')].cntr_value.first()'
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1h
          master_item:
            key: mssql.buffer_manager.raw
          tags:
            - tag: component
              value: page
        - uuid: 06de7547c13c4e25af22c14fc7af84bd
          name: 'Target server memory'
          type: DEPENDENT
          key: mssql.target_server_memory
          units: B
          description: 'Indicates the ideal amount of memory the server can consume.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Target Server Memory (KB)'')].cntr_value.first()'
            - type: MULTIPLIER
              parameters:
                - '1024'
          master_item:
            key: mssql.mem_manager.raw
          tags:
            - tag: component
              value: memory
        - uuid: 304dd414b91c450db0594bd7135e340b
          name: 'Total latch wait time'
          type: DEPENDENT
          key: mssql.total_latch_wait_time
          value_type: FLOAT
          units: ms
          description: 'Total latch wait time (in milliseconds) for latch requests in the last second. This value should stay stable compared to the number of latch waits per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Total Latch Wait Time (ms)'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.latches_info.raw
          tags:
            - tag: component
              value: wait-time
        - uuid: a1dd82b237304bf39d9e34d6ff7d76a2
          name: 'Total server memory'
          type: DEPENDENT
          key: mssql.total_server_memory
          units: B
          description: 'Specifies the amount of memory the server has committed using the memory manager.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Total Server Memory (KB)'')].cntr_value.first()'
            - type: MULTIPLIER
              parameters:
                - '1024'
          master_item:
            key: mssql.mem_manager.raw
          tags:
            - tag: component
              value: memory
        - uuid: f7c8f1bbf68c4f43b0e263d45022346e
          name: 'Total transactions number'
          type: DEPENDENT
          key: mssql.transactions
          description: 'The number of currently active transactions of all types.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.object_name=~''.*Transactions'' && @.counter_name==''Transactions'')].cntr_value.first()'
          master_item:
            key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          tags:
            - tag: component
              value: transaction
        - uuid: c23c93f8492946ba9932bf8c8a7a306e
          name: 'Total transactions per second'
          type: DEPENDENT
          key: mssql.transactions_sec.rate
          value_type: FLOAT
          description: 'Total number of transactions started for all databases per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Transactions/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.db_info.raw
          tags:
            - tag: component
              value: performance
            - tag: component
              value: transaction
        - uuid: b2805c08cc28424ca8fca0ab51ace519
          name: 'Unsafe auto-params per second'
          type: DEPENDENT
          key: mssql.unsafe_autoparams_sec.rate
          value_type: FLOAT
          description: 'Number of unsafe auto-parameterization attempts per second. For example, the query has some characteristics that prevent the cached plan from being shared. These are designated as unsafe. This does not count the number of forced parameterizations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Unsafe Auto-Params/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.sql_statistics.raw
          tags:
            - tag: component
              value: performance
        - uuid: f4b8d9b10b4c40f6a38c03729025f618
          name: Uptime
          type: DEPENDENT
          key: mssql.uptime
          trends: '0'
          units: uptime
          description: 'MSSQL Server uptime in the format "N days, hh:mm:ss".'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Uptime'')].cntr_value.first()'
          master_item:
            key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          tags:
            - tag: component
              value: application
          triggers:
            - uuid: b64d08b9212645cd8bab9e35a8e29942
              expression: 'nodata(/MSSQL by Zabbix agent 2/mssql.uptime,30m)=1'
              name: 'Failed to fetch info data'
              event_name: 'Failed to fetch info data (or no data for 30m)'
              priority: INFO
              description: 'Zabbix has not received any data for items for the last 30 minutes.'
              dependencies:
                - name: 'Service is unavailable'
                  expression: 'last(/MSSQL by Zabbix agent 2/net.tcp.service[tcp,{$MSSQL.HOST},{$MSSQL.PORT}])=0'
              tags:
                - tag: scope
                  value: availability
            - uuid: 4ab35137c34845c495bc3837ac1f6f9f
              expression: 'last(/MSSQL by Zabbix agent 2/mssql.uptime)<10m'
              name: 'Service has been restarted'
              event_name: 'Service has been restarted (uptime < 10m)'
              priority: INFO
              description: 'Uptime is less than 10 minutes.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
        - uuid: 821f3a9f694349c2afb983d4c26ff090
          name: 'Number of users connected'
          type: DEPENDENT
          key: mssql.user_connections
          description: 'Number of users connected to MSSQL Server.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''User Connections'')].cntr_value.first()'
          master_item:
            key: mssql.general_statistics.raw
          tags:
            - tag: component
              value: application
        - uuid: 27e1d9f9005f475784f930c8cbaefa91
          name: 'Errors per second (User errors)'
          type: DEPENDENT
          key: mssql.user_errors_sec.rate
          value_type: FLOAT
          description: 'Number of errors per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Errors/sec'' && @.instance_name==''User Errors'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.sql_errors.raw
          tags:
            - tag: component
              value: error
            - tag: component
              value: performance
        - uuid: 624ea81f4a7c43659f291a2fc7913778
          name: Version
          key: 'mssql.version["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          value_type: CHAR
          description: 'MSSQL Server version.'
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
          tags:
            - tag: component
              value: application
          triggers:
            - uuid: 12643eb3af884023ab61802559cde946
              expression: 'last(/MSSQL by Zabbix agent 2/mssql.version["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"],#1)<>last(/MSSQL by Zabbix agent 2/mssql.version["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"],#2) and length(last(/MSSQL by Zabbix agent 2/mssql.version["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]))>0'
              name: 'Version has changed'
              event_name: 'Version has changed (new version value received: {ITEM.VALUE})'
              priority: INFO
              description: 'MSSQL version has changed. Acknowledge to close the problem manually.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
        - uuid: 081cc2db8e9b481f8ca39e5f02f8f48d
          name: 'Work files created per second'
          type: DEPENDENT
          key: mssql.workfiles_created_sec.rate
          value_type: FLOAT
          description: 'Number of work files created per second. For example, work files can be used to store temporary results for hash joins and hash aggregates.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Workfiles Created/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.access_methods.raw
          tags:
            - tag: component
              value: performance
          triggers:
            - uuid: 6d25ee02edc14d7497b339627cc0c680
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.workfiles_created_sec.rate,5m)>{$MSSQL.WORK_FILES.MAX}'
              name: 'Number of work files created per second is high'
              event_name: 'Number of work files created per second is high (over {$MSSQL.WORK_FILES.MAX} for 5m)'
              priority: AVERAGE
              description: 'Too many work files created per second to store temporary results for hash joins and hash aggregates.'
              tags:
                - tag: scope
                  value: performance
        - uuid: a2127497537a46b6be10fac14be04259
          name: 'Work tables created per second'
          type: DEPENDENT
          key: mssql.worktables_created_sec.rate
          value_type: FLOAT
          description: 'Number of work tables created per second. For example, work tables can be used to store temporary results for query spool, LOB variables, XML variables, and cursors.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''Worktables Created/sec'')].cntr_value.first()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: mssql.access_methods.raw
          tags:
            - tag: component
              value: performance
          triggers:
            - uuid: 4cd0c8e7089144aeaeb10c4866e89b06
              expression: 'min(/MSSQL by Zabbix agent 2/mssql.worktables_created_sec.rate,5m)>{$MSSQL.WORK_TABLES.MAX}'
              name: 'Number of work tables created per second is high'
              event_name: 'Number of work tables created per second is high (over {$MSSQL.WORK_TABLES.MAX} for 5m)'
              priority: AVERAGE
              description: 'Too many work tables created per second to store temporary results for query spool, LOB variables, XML variables, and cursors.'
              tags:
                - tag: scope
                  value: performance
        - uuid: dbcf930a346c40db9d8fafa89eafe79a
          name: 'Worktables from cache ratio'
          type: DEPENDENT
          key: mssql.worktables_from_cache_ratio
          value_type: FLOAT
          units: '%'
          description: 'Percentage of work tables created where the initial two pages of the work table were not allocated but were immediately available from the work table cache.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.counter_name==''WorktablesFromCacheRatio'')].cntr_value.first()'
          master_item:
            key: mssql.access_methods.raw
          tags:
            - tag: component
              value: cache
          triggers:
            - uuid: cb3dd51615d447379a3abda929faf881
              expression: 'max(/MSSQL by Zabbix agent 2/mssql.worktables_from_cache_ratio,5m)<{$MSSQL.WORKTABLES_FROM_CACHE_RATIO.MIN.CRIT}'
              name: 'Percentage of work tables available from the work table cache is low'
              event_name: 'Percentage of work tables available from the work table cache is low (below {$MSSQL.WORKTABLES_FROM_CACHE_RATIO.MIN.CRIT}% for 5m)'
              priority: HIGH
              description: 'A value less than 90% may indicate insufficient memory, since execution plans are being dropped, or, on 32-bit systems, may indicate the need for an upgrade to a 64-bit system.'
              tags:
                - tag: scope
                  value: performance
        - uuid: 7fc4f1f9c3df45269972e617ce81f4b2
          name: 'Service''s TCP port state'
          type: SIMPLE
          key: 'net.tcp.service[tcp,{$MSSQL.HOST},{$MSSQL.PORT}]'
          delay: 30s
          description: 'Test the availability of MSSQL Server on a TCP port.'
          valuemap:
            name: 'Service state'
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 10m
          tags:
            - tag: component
              value: network
          triggers:
            - uuid: 2ea9eaf463144defbd85340a824f7986
              expression: 'last(/MSSQL by Zabbix agent 2/net.tcp.service[tcp,{$MSSQL.HOST},{$MSSQL.PORT}])=0'
              name: 'Service is unavailable'
              priority: DISASTER
              description: 'The TCP port of the MSSQL Server service is currently unavailable.'
              tags:
                - tag: scope
                  value: availability
      discovery_rules:
        - uuid: 7f7d64674f2b41a69f9330fc050fc582
          name: 'Availability group discovery'
          type: DEPENDENT
          key: mssql.availability.group.discovery
          description: 'Discovery of the existing availability groups.'
          item_prototypes:
            - uuid: a4db74ea2c2c4919ae57d474548c13f1
              name: 'MSSQL AG ''{#GROUP_NAME}'': Primary replica recovery health'
              type: DEPENDENT
              key: 'mssql.primary_recovery_health["{#GROUP_NAME}"]'
              description: |
                Indicates the recovery health of the primary replica:
                0 = In progress
                1 = Online
                2 = Unavailable
              valuemap:
                name: 'MSSQL AG Recovery health'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.group_name==''{#GROUP_NAME}'')].primary_recovery_health.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.availability.group.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: availability-group
              trigger_prototypes:
                - uuid: 7f0c69068dd6415abd193555684ba39d
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.primary_recovery_health["{#GROUP_NAME}"])=0'
                  name: 'MSSQL AG ''{#GROUP_NAME}'': Primary replica recovery health in progress'
                  priority: WARNING
                  description: 'The primary replica is in the synchronization process.'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: scope
                      value: notice
            - uuid: ede1746a6614499781c6dec46671cdfa
              name: 'MSSQL AG ''{#GROUP_NAME}'': Primary replica name'
              type: DEPENDENT
              key: 'mssql.primary_replica["{#GROUP_NAME}"]'
              value_type: CHAR
              description: 'Name of the server instance that is hosting the current primary replica.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.group_name==''{#GROUP_NAME}'')].primary_replica.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 3h
              master_item:
                key: 'mssql.availability.group.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: availability-group
            - uuid: 49612aea8b164a79b994d2155c70b491
              name: 'MSSQL AG ''{#GROUP_NAME}'': Secondary replica recovery health'
              type: DEPENDENT
              key: 'mssql.secondary_recovery_health["{#GROUP_NAME}"]'
              description: |
                Indicates the recovery health of a secondary replica:
                0 = In progress
                1 = Online
                2 = Unavailable
              valuemap:
                name: 'MSSQL AG Recovery health'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.group_name==''{#GROUP_NAME}'')].secondary_recovery_health.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.availability.group.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: availability-group
              trigger_prototypes:
                - uuid: 4fc114d3f43741b38bdf7b8b73a6fe3e
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.secondary_recovery_health["{#GROUP_NAME}"])=0'
                  name: 'MSSQL AG ''{#GROUP_NAME}'': Secondary replica recovery health in progress'
                  priority: WARNING
                  description: 'The secondary replica is in the synchronization process.'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: scope
                      value: notice
            - uuid: f6a776b81e9d445e9b401ecdc781fe26
              name: 'MSSQL AG ''{#GROUP_NAME}'': Synchronization health'
              type: DEPENDENT
              key: 'mssql.synchronization_health["{#GROUP_NAME}"]'
              description: |
                Reflects a rollup of the `synchronization_health` of all availability replicas in the availability group:
                0 = Not healthy. None of the availability replicas have a healthy synchronization.
                1 = Partially healthy. The synchronization of some, but not all, availability replicas is healthy.
                2 = Healthy. The synchronization of every availability replica is healthy.
              valuemap:
                name: 'MSSQL AG Synchronization health'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.group_name==''{#GROUP_NAME}'')].synchronization_health.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.availability.group.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: availability-group
              trigger_prototypes:
                - uuid: 1aa3dd01e7654dea903010b47f166596
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.synchronization_health["{#GROUP_NAME}"])=0'
                  name: 'MSSQL AG ''{#GROUP_NAME}'': All replicas unhealthy'
                  priority: DISASTER
                  description: 'None of the availability replicas have a healthy synchronization.'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: scope
                      value: availability
                - uuid: 02766fa029c14e85914e20b81f14be2c
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.synchronization_health["{#GROUP_NAME}"])=1'
                  name: 'MSSQL AG ''{#GROUP_NAME}'': Some replicas unhealthy'
                  priority: HIGH
                  description: 'The synchronization health of some, but not all, availability replicas is healthy.'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: scope
                      value: availability
          master_item:
            key: 'mssql.availability.group.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          lld_macro_paths:
            - lld_macro: '{#GROUP_NAME}'
              path: $.group_name
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
        - uuid: 13116bb9e52040718b40f0a6e734342a
          name: 'Database discovery'
          type: DEPENDENT
          key: mssql.database.discovery
          filter:
            evaltype: AND
            conditions:
              - macro: '{#DBNAME}'
                value: '{$MSSQL.DBNAME.MATCHES}'
              - macro: '{#DBNAME}'
                value: '{$MSSQL.DBNAME.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
          description: 'Scanning databases in DBMS.'
          item_prototypes:
            - uuid: 39264e40f3304b3fb5d85fbac83008f8
              name: 'MSSQL DB ''{#DBNAME}'': Last diff backup duration'
              type: DEPENDENT
              key: 'mssql.backup.diff.duration["{#DBNAME}"]'
              units: s
              description: 'Duration of the last differential backup.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.type==''I'')].duration.first()'
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 12h
              master_item:
                key: 'mssql.backup.raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 45613ebe8c77431fbfa3ab00d39e68e5
              name: 'MSSQL DB ''{#DBNAME}'': Last diff backup (time ago)'
              type: DEPENDENT
              key: 'mssql.backup.diff["{#DBNAME}"]'
              units: s
              description: 'The amount of time since the last differential backup.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.type==''I'')].time_since_last_backup.first()'
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'mssql.backup.raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: 4ff9a2f1c06347a291e99eb4269d87a5
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.backup.diff["{#DBNAME}"])>{$MSSQL.BACKUP_DIFF.CRIT:"{#DBNAME}"} and {$MSSQL.BACKUP_DIFF.USED:"{#DBNAME}"}=1'
                  name: 'MSSQL DB ''{#DBNAME}'': Diff backup is old'
                  event_name: 'MSSQL DB ''{#DBNAME}'': Diff backup older than {$MSSQL.BACKUP_DIFF.CRIT:"{#DBNAME}"}'
                  opdata: 'Time since last backup: {ITEM.LASTVALUE1}'
                  priority: HIGH
                  description: 'The differential backup has not been executed for a long time.'
                  manual_close: 'YES'
                  tags:
                    - tag: database
                      value: '{#DBNAME}'
                    - tag: scope
                      value: availability
                - uuid: 49260837210a4086a6f2a4183cefbf8c
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.backup.diff["{#DBNAME}"])>{$MSSQL.BACKUP_DIFF.WARN:"{#DBNAME}"} and {$MSSQL.BACKUP_DIFF.USED:"{#DBNAME}"}=1'
                  name: 'MSSQL DB ''{#DBNAME}'': Diff backup is old'
                  event_name: 'MSSQL DB ''{#DBNAME}'': Diff backup older than {$MSSQL.BACKUP_DIFF.WARN:"{#DBNAME}"}'
                  opdata: 'Time since last backup: {ITEM.LASTVALUE1}'
                  priority: WARNING
                  description: 'The differential backup has not been executed for a long time.'
                  manual_close: 'YES'
                  dependencies:
                    - name: 'MSSQL DB ''{#DBNAME}'': Diff backup is old'
                      expression: 'last(/MSSQL by Zabbix agent 2/mssql.backup.diff["{#DBNAME}"])>{$MSSQL.BACKUP_DIFF.CRIT:"{#DBNAME}"} and {$MSSQL.BACKUP_DIFF.USED:"{#DBNAME}"}=1'
                  tags:
                    - tag: database
                      value: '{#DBNAME}'
                    - tag: scope
                      value: availability
            - uuid: 5da7fa72e56740d3938e8bb5bb32839e
              name: 'MSSQL DB ''{#DBNAME}'': Last full backup duration'
              type: DEPENDENT
              key: 'mssql.backup.full.duration["{#DBNAME}"]'
              units: s
              description: 'Duration of the last full backup.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.type==''D'')].duration.first()'
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 12h
              master_item:
                key: 'mssql.backup.raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 32c38b20af8f42698fb96bf0bbb05dec
              name: 'MSSQL DB ''{#DBNAME}'': Last full backup (time ago)'
              type: DEPENDENT
              key: 'mssql.backup.full["{#DBNAME}"]'
              units: s
              description: 'The amount of time since the last full backup.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.type==''D'')].time_since_last_backup.first()'
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'mssql.backup.raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: ba1b19c9513f4adeba3e6f300c08748d
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.backup.full["{#DBNAME}"])>{$MSSQL.BACKUP_FULL.CRIT:"{#DBNAME}"} and {$MSSQL.BACKUP_FULL.USED:"{#DBNAME}"}=1'
                  name: 'MSSQL DB ''{#DBNAME}'': Full backup is old'
                  event_name: 'MSSQL DB ''{#DBNAME}'': Full backup older than {$MSSQL.BACKUP_FULL.CRIT:"{#DBNAME}"}'
                  opdata: 'Time since last backup: {ITEM.LASTVALUE1}'
                  priority: HIGH
                  description: 'The full backup has not been executed for a long time.'
                  manual_close: 'YES'
                  tags:
                    - tag: database
                      value: '{#DBNAME}'
                    - tag: scope
                      value: availability
                - uuid: a8e099c8276f435cb4d55623be443db5
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.backup.full["{#DBNAME}"])>{$MSSQL.BACKUP_FULL.WARN:"{#DBNAME}"} and {$MSSQL.BACKUP_FULL.USED:"{#DBNAME}"}=1'
                  name: 'MSSQL DB ''{#DBNAME}'': Full backup is old'
                  event_name: 'MSSQL DB ''{#DBNAME}'': Full backup older than {$MSSQL.BACKUP_FULL.WARN:"{#DBNAME}"}'
                  opdata: 'Time since last backup: {ITEM.LASTVALUE1}'
                  priority: WARNING
                  description: 'The full backup has not been executed for a long time.'
                  manual_close: 'YES'
                  dependencies:
                    - name: 'MSSQL DB ''{#DBNAME}'': Full backup is old'
                      expression: 'last(/MSSQL by Zabbix agent 2/mssql.backup.full["{#DBNAME}"])>{$MSSQL.BACKUP_FULL.CRIT:"{#DBNAME}"} and {$MSSQL.BACKUP_FULL.USED:"{#DBNAME}"}=1'
                  tags:
                    - tag: scope
                      value: availability
            - uuid: a7aaa846c6694ddf9daf5d18db5a3037
              name: 'MSSQL DB ''{#DBNAME}'': Last log backup duration'
              type: DEPENDENT
              key: 'mssql.backup.log.duration["{#DBNAME}"]'
              units: s
              description: 'Duration of the last log backup.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.type==''L'')].duration.first()'
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 12h
              master_item:
                key: 'mssql.backup.raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 453a48800bce43b58a372b7466b944bd
              name: 'MSSQL DB ''{#DBNAME}'': Last log backup (time ago)'
              type: DEPENDENT
              key: 'mssql.backup.log["{#DBNAME}"]'
              units: s
              description: 'The amount of time since the last log backup.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.type==''L'')].time_since_last_backup.first()'
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'mssql.backup.raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 6800612ef91f4f149e24c4cf9a9f915c
              name: 'MSSQL DB ''{#DBNAME}'': Get last backup'
              type: DEPENDENT
              key: 'mssql.backup.raw["{#DBNAME}"]'
              history: '0'
              value_type: TEXT
              description: 'The item gets information about backup processes for {#DBNAME}.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.dbname==''{#DBNAME}'')]'
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'mssql.last.backup.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: component
                  value: raw
                - tag: database
                  value: '{#DBNAME}'
            - uuid: f8bc0815cbc1471eb949429a95503287
              name: 'MSSQL DB ''{#DBNAME}'': Recovery model'
              type: DEPENDENT
              key: 'mssql.backup.recovery_model["{#DBNAME}"]'
              description: |
                Recovery model selected:
                1 = Full
                2 = Bulk_logged
                3 = Simple
              valuemap:
                name: 'MSSQL Recovery model'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[0].db_recovery_model'
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '1'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1d
              master_item:
                key: 'mssql.backup.raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: ccd715be77234994b8931ca89abb015a
              name: 'MSSQL DB ''{#DBNAME}'': Active transactions'
              type: DEPENDENT
              key: 'mssql.db.active_transactions["{#DBNAME}"]'
              description: 'Number of active transactions for the database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''Active Transactions'')].cntr_value.first()'
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: cba4bf9b39fc4cd69152f15cfd0edb56
              name: 'MSSQL DB ''{#DBNAME}'': Data file size'
              type: DEPENDENT
              key: 'mssql.db.data_files_size["{#DBNAME}"]'
              units: B
              description: 'Cumulative size of all the data files in the database including any automatic growth. Monitoring this counter is useful, for example, for determining the correct size of `tempdb`.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''Data File(s) Size (KB)'')].cntr_value.first()'
                - type: MULTIPLIER
                  parameters:
                    - '1024'
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 9cd2a1a539604c68b4540d424a608d4c
              name: 'MSSQL DB ''{#DBNAME}'': Log bytes flushed per second'
              type: DEPENDENT
              key: 'mssql.db.log_bytes_flushed_sec.rate["{#DBNAME}"]'
              value_type: FLOAT
              units: Bps
              description: 'Total number of log bytes flushed per second. Useful for determining trends and utilization of the transaction log.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''Log Bytes Flushed/sec'')].cntr_value.first()'
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: ff2f2fd39e11418ea93b79ba27b73e3d
              name: 'MSSQL DB ''{#DBNAME}'': Log file size'
              type: DEPENDENT
              key: 'mssql.db.log_files_size["{#DBNAME}"]'
              units: B
              description: 'Cumulative size of all the transaction log files in the database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''Log File(s) Size (KB)'')].cntr_value.first()'
                - type: MULTIPLIER
                  parameters:
                    - '1024'
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 7466329cc603401095def32026d8182d
              name: 'MSSQL DB ''{#DBNAME}'': Log file used size'
              type: DEPENDENT
              key: 'mssql.db.log_files_used_size["{#DBNAME}"]'
              units: B
              description: 'Cumulative size of all the log files in the database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''Log File(s) Used Size (KB)'')].cntr_value.first()'
                - type: MULTIPLIER
                  parameters:
                    - '1024'
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 6c874bd1dd7746b4894d5b25e3de0f7c
              name: 'MSSQL DB ''{#DBNAME}'': Log flushes per second'
              type: DEPENDENT
              key: 'mssql.db.log_flushes_sec.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Number of log flushes per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''Log Flushes/sec'')].cntr_value.first()'
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 64dc4faefc0f4709b5e740c036e9a272
              name: 'MSSQL DB ''{#DBNAME}'': Log flush waits per second'
              type: DEPENDENT
              key: 'mssql.db.log_flush_waits_sec.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Number of commits per second waiting for the log flush.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''Log Flush Waits/sec'')].cntr_value.first()'
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: 4bdf258b6902407cbcc7b27cc906ee48
                  expression: 'min(/MSSQL by Zabbix agent 2/mssql.db.log_flush_waits_sec.rate["{#DBNAME}"],5m)>{$MSSQL.LOG_FLUSH_WAITS.MAX:"{#DBNAME}"}'
                  name: 'MSSQL DB ''{#DBNAME}'': Number of commits waiting for the log flush is high'
                  event_name: 'MSSQL DB ''{#DBNAME}'': Number of commits waiting for the log flush is high (over {$MSSQL.LOG_FLUSH_WAITS.MAX:"{#DBNAME}"}/sec for 5m)'
                  priority: WARNING
                  description: 'Too many commits are waiting for the log flush.'
                  tags:
                    - tag: database
                      value: '{#DBNAME}'
                    - tag: scope
                      value: performance
            - uuid: 1e4289626cd540dbbc9e54be9d6a0836
              name: 'MSSQL DB ''{#DBNAME}'': Log flush wait time'
              type: DEPENDENT
              key: 'mssql.db.log_flush_wait_time["{#DBNAME}"]'
              value_type: FLOAT
              units: ms
              description: 'Total wait time (in milliseconds) to flush the log. On an Always On secondary database, this value indicates the wait time for log records to be hardened to disk.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''Log Flush Wait Time'')].cntr_value.first()'
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: 1baacf9d55d746599a28c407087ea5fb
                  expression: 'min(/MSSQL by Zabbix agent 2/mssql.db.log_flush_wait_time["{#DBNAME}"],5m)>{$MSSQL.LOG_FLUSH_WAIT_TIME.MAX:"{#DBNAME}"}'
                  name: 'MSSQL DB ''{#DBNAME}'': Total wait time to flush the log is high'
                  event_name: 'MSSQL DB ''{#DBNAME}'': Total wait time to flush the log is high (over {$MSSQL.LOG_FLUSH_WAIT_TIME.MAX:"{#DBNAME}"}ms for 5m)'
                  priority: WARNING
                  description: 'The wait time to flush the log is too long.'
                  tags:
                    - tag: database
                      value: '{#DBNAME}'
                    - tag: scope
                      value: performance
            - uuid: e0ebbdccf06e4bd580944eca894fd765
              name: 'MSSQL DB ''{#DBNAME}'': Log growths'
              type: DEPENDENT
              key: 'mssql.db.log_growths["{#DBNAME}"]'
              description: 'Total number of times the transaction log for the database has been expanded.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''Log Growths'')].cntr_value.first()'
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: f4705df239ff4b52a7594adc8bff1786
              name: 'MSSQL DB ''{#DBNAME}'': Log shrinks'
              type: DEPENDENT
              key: 'mssql.db.log_shrinks["{#DBNAME}"]'
              description: 'Total number of times the transaction log for the database has been shrunk.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''Log Shrinks'')].cntr_value.first()'
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 23f7b754af114e779bfb12b954041a3a
              name: 'MSSQL DB ''{#DBNAME}'': Log truncations'
              type: DEPENDENT
              key: 'mssql.db.log_truncations["{#DBNAME}"]'
              description: 'Number of times the transaction log has been shrunk.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''Log Truncations'')].cntr_value.first()'
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 622cd26e368144c7b4b4a760be6e9d80
              name: 'MSSQL DB ''{#DBNAME}'': Percent log used'
              type: DEPENDENT
              key: 'mssql.db.percent_log_used["{#DBNAME}"]'
              value_type: FLOAT
              units: '%'
              description: 'Percentage of log space in use.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''Percent Log Used'')].cntr_value.first()'
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: f2a80dfd54ca4e2391adbc7006118987
                  expression: 'min(/MSSQL by Zabbix agent 2/mssql.db.percent_log_used["{#DBNAME}"],5m)>{$MSSQL.PERCENT_LOG_USED.MAX:"{#DBNAME}"}'
                  name: 'MSSQL DB ''{#DBNAME}'': Percent of log usage is high'
                  event_name: 'MSSQL DB ''{#DBNAME}'': Percent of log usage is high (over {$MSSQL.PERCENT_LOG_USED.MAX:"{#DBNAME}"}% for 5m)'
                  priority: WARNING
                  description: 'There''s not enough space left in the log.'
                  tags:
                    - tag: database
                      value: '{#DBNAME}'
                    - tag: scope
                      value: performance
            - uuid: 84e28628c11d4c35a7ee7b1a714c7b59
              name: 'MSSQL DB ''{#DBNAME}'': Get performance counters'
              type: DEPENDENT
              key: 'mssql.db.perf_raw["{#DBNAME}"]'
              history: '0'
              value_type: TEXT
              description: 'The item gets server status information for {#DBNAME}.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.object_name=~''.*Databases'' && @.instance_name==''{#DBNAME}'')]'
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'mssql.perfcounter.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: component
                  value: raw
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 2032b8a3889a4a9f941529c4b62aa860
              name: 'MSSQL DB ''{#DBNAME}'': State'
              type: DEPENDENT
              key: 'mssql.db.state["{#DBNAME}"]'
              description: |
                0 = Online
                1 = Restoring
                2 = Recovering | SQL Server 2008 and later
                3 = Recovery_pending | SQL Server 2008 and later
                4 = Suspect
                5 = Emergency | SQL Server 2008 and later
                6 = Offline | SQL Server 2008 and later
                7 = Copying | Azure SQL Database Active Geo-Replication
                10 = Offline_secondary | Azure SQL Database Active Geo-Replication
              valuemap:
                name: 'MSSQL DB state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''State'')].cntr_value.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 15m
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: 0963794ed0b0483bbaa9dc0858c9f445
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.db.state["{#DBNAME}"])>1'
                  name: 'MSSQL DB ''{#DBNAME}'': State is {ITEM.VALUE}'
                  priority: HIGH
                  description: 'The DB has a non-working state.'
                  tags:
                    - tag: database
                      value: '{#DBNAME}'
                    - tag: scope
                      value: availability
            - uuid: e2f693fb31d84532a67d6f7e2f479acc
              name: 'MSSQL DB ''{#DBNAME}'': Transactions per second'
              type: DEPENDENT
              key: 'mssql.db.transactions_sec.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Number of transactions started for the database per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.counter_name==''Transactions/sec'')].cntr_value.first()'
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'mssql.db.perf_raw["{#DBNAME}"]'
              tags:
                - tag: component
                  value: database
                - tag: database
                  value: '{#DBNAME}'
          trigger_prototypes:
            - uuid: 7b708b7c408f4b2fb5d1bc6d017d6c68
              expression: 'last(/MSSQL by Zabbix agent 2/mssql.backup.log["{#DBNAME}"])>{$MSSQL.BACKUP_LOG.CRIT:"{#DBNAME}"} and {$MSSQL.BACKUP_LOG.USED:"{#DBNAME}"}=1 and last(/MSSQL by Zabbix agent 2/mssql.backup.recovery_model["{#DBNAME}"])<>3'
              name: 'MSSQL DB ''{#DBNAME}'': Log backup is old'
              event_name: 'MSSQL DB ''{#DBNAME}'': Log backup older than {$MSSQL.BACKUP_LOG.CRIT:"{#DBNAME}"}'
              opdata: 'Time since last backup: {ITEM.LASTVALUE1}'
              priority: HIGH
              description: 'The log backup has not been executed for a long time.'
              manual_close: 'YES'
              tags:
                - tag: database
                  value: '{#DBNAME}'
                - tag: scope
                  value: availability
            - uuid: dc580ac10b3f451686b8163bdf21b759
              expression: 'last(/MSSQL by Zabbix agent 2/mssql.backup.log["{#DBNAME}"])>{$MSSQL.BACKUP_LOG.WARN:"{#DBNAME}"} and {$MSSQL.BACKUP_LOG.USED:"{#DBNAME}"}=1 and last(/MSSQL by Zabbix agent 2/mssql.backup.recovery_model["{#DBNAME}"])<>3'
              name: 'MSSQL DB ''{#DBNAME}'': Log backup is old'
              event_name: 'MSSQL DB ''{#DBNAME}'': Log backup older than {$MSSQL.BACKUP_LOG.WARN:"{#DBNAME}"}'
              opdata: 'Time since last backup: {ITEM.LASTVALUE1}'
              priority: WARNING
              description: 'The log backup has not been executed for a long time.'
              manual_close: 'YES'
              dependencies:
                - name: 'MSSQL DB ''{#DBNAME}'': Log backup is old'
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.backup.log["{#DBNAME}"])>{$MSSQL.BACKUP_LOG.CRIT:"{#DBNAME}"} and {$MSSQL.BACKUP_LOG.USED:"{#DBNAME}"}=1 and last(/MSSQL by Zabbix agent 2/mssql.backup.recovery_model["{#DBNAME}"])<>3'
              tags:
                - tag: database
                  value: '{#DBNAME}'
                - tag: scope
                  value: availability
          graph_prototypes:
            - uuid: 8175463b48da43b596b0fd733dfa1b2e
              name: 'MSSQL DB ''{#DBNAME}'': Log size'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'MSSQL by Zabbix agent 2'
                    key: 'mssql.db.log_files_size["{#DBNAME}"]'
                - sortorder: '1'
                  color: F63100
                  item:
                    host: 'MSSQL by Zabbix agent 2'
                    key: 'mssql.db.log_files_used_size["{#DBNAME}"]'
            - uuid: 768ec0884405473fb269f8b465b214e6
              name: 'MSSQL DB ''{#DBNAME}'': Number of Log changes'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'MSSQL by Zabbix agent 2'
                    key: 'mssql.db.log_growths["{#DBNAME}"]'
                - sortorder: '1'
                  color: F63100
                  item:
                    host: 'MSSQL by Zabbix agent 2'
                    key: 'mssql.db.log_shrinks["{#DBNAME}"]'
                - sortorder: '2'
                  color: 00611C
                  item:
                    host: 'MSSQL by Zabbix agent 2'
                    key: 'mssql.db.log_truncations["{#DBNAME}"]'
            - uuid: d60af32a941e41ed9d0a65f996df89e4
              name: 'MSSQL DB ''{#DBNAME}'': Size'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'MSSQL by Zabbix agent 2'
                    key: 'mssql.db.data_files_size["{#DBNAME}"]'
          master_item:
            key: 'mssql.db.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          lld_macro_paths:
            - lld_macro: '{#DBNAME}'
              path: $.dbname
            - lld_macro: '{#RECOVERY_MODEL}'
              path: $.recovery_model
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
          overrides:
            - name: 'Log backup'
              step: '1'
              filter:
                conditions:
                  - macro: '{#RECOVERY_MODEL}'
                    value: '3'
              operations:
                - operationobject: TRIGGER_PROTOTYPE
                  operator: LIKE
                  value: 'Log backup is old'
                  discover: NO_DISCOVER
        - uuid: 749fe36645994fc2aa45d7916862b893
          name: 'Job discovery'
          type: DEPENDENT
          key: mssql.job.discovery
          filter:
            evaltype: AND
            conditions:
              - macro: '{#JOBNAME}'
                value: '{$MSSQL.JOB.MATCHES}'
              - macro: '{#JOBNAME}'
                value: '{$MSSQL.JOB.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
          description: 'Scanning jobs in DBMS.'
          item_prototypes:
            - uuid: 7503acf68ad44180ace4113d654752d1
              name: 'MSSQL Job ''{#JOBNAME}'': Enabled'
              type: DEPENDENT
              key: 'mssql.job.enabled["{#JOBNAME}"]'
              description: |
                The possible values of the job status:
                0 = Disabled
                1 = Enabled
              valuemap:
                name: 'MSSQL - Yes / No'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.enabled
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 12h
              master_item:
                key: 'mssql.job.status_raw["{#JOBNAME}"]'
              tags:
                - tag: component
                  value: mssql-job
                - tag: mssql-job
                  value: '{#JOBNAME}'
            - uuid: a42c8a24b329498581b8a81c13d16076
              name: 'MSSQL Job ''{#JOBNAME}'': Last run date-time'
              type: DEPENDENT
              key: 'mssql.job.lastrundatetime["{#JOBNAME}"]'
              units: unixtime
              description: 'The last date-time of the job run.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.last_run_date_time
                - type: JAVASCRIPT
                  parameters:
                    - 'return value == ''null'' ? 0 : Math.floor(new Date(value) / 1000);'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 12h
              master_item:
                key: 'mssql.job.status_raw["{#JOBNAME}"]'
              tags:
                - tag: component
                  value: mssql-job
                - tag: mssql-job
                  value: '{#JOBNAME}'
            - uuid: b86b627c1a234d409950345b9d7a1f73
              name: 'MSSQL Job ''{#JOBNAME}'': Last run status message'
              type: DEPENDENT
              key: 'mssql.job.lastrunstatusmessage["{#JOBNAME}"]'
              value_type: TEXT
              description: 'An informational message about the last run of the job.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.last_run_status_message
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 12h
              master_item:
                key: 'mssql.job.status_raw["{#JOBNAME}"]'
              tags:
                - tag: component
                  value: mssql-job
                - tag: mssql-job
                  value: '{#JOBNAME}'
            - uuid: fcc4d2cfa5674d33b8831e03b23f40c5
              name: 'MSSQL Job ''{#JOBNAME}'': Next run date-time'
              type: DEPENDENT
              key: 'mssql.job.nextrundatetime["{#JOBNAME}"]'
              units: unixtime
              description: 'The next date-time of the job run.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.next_run_date_time
                - type: JAVASCRIPT
                  parameters:
                    - 'return value == ''null'' ? 0 : Math.floor(new Date(value) / 1000);'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 12h
              master_item:
                key: 'mssql.job.status_raw["{#JOBNAME}"]'
              tags:
                - tag: component
                  value: mssql-job
                - tag: mssql-job
                  value: '{#JOBNAME}'
            - uuid: 7bb5fb0220ef4649955049ee1b6d6c73
              name: 'MSSQL Job ''{#JOBNAME}'': Run status'
              type: DEPENDENT
              key: 'mssql.job.runstatus["{#JOBNAME}"]'
              description: |
                The possible values of the job status:
                0 ⇒ Failed
                1 ⇒ Succeeded
                2 ⇒ Retry
                3 ⇒ Canceled
                4 ⇒ Running
              valuemap:
                name: 'MSSQL Job Run Status'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.run_status
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 15m
              master_item:
                key: 'mssql.job.status_raw["{#JOBNAME}"]'
              tags:
                - tag: component
                  value: mssql-job
                - tag: mssql-job
                  value: '{#JOBNAME}'
              trigger_prototypes:
                - uuid: f404c4f644ee450ebbd269eb7c8897d9
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.job.runstatus["{#JOBNAME}"])=0'
                  name: 'MSSQL Job ''{#JOBNAME}'': Failed to run'
                  priority: WARNING
                  description: 'The last run of the job has failed.'
                  manual_close: 'YES'
                  tags:
                    - tag: mssql-job
                      value: '{#JOBNAME}'
                    - tag: scope
                      value: performance
            - uuid: 6ae51f0fd7c04e01aa9e1af302d461d0
              name: 'MSSQL Job ''{#JOBNAME}'': Run duration'
              type: DEPENDENT
              key: 'mssql.job.run_duration["{#JOBNAME}"]'
              units: s
              description: 'Duration of the last-run job.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.run_duration
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 15m
              master_item:
                key: 'mssql.job.status_raw["{#JOBNAME}"]'
              tags:
                - tag: component
                  value: mssql-job
                - tag: mssql-job
                  value: '{#JOBNAME}'
              trigger_prototypes:
                - uuid: b8bf7358712242609e64ce60303eb80f
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.job.run_duration["{#JOBNAME}"])>{$MSSQL.BACKUP_DURATION.WARN:"{#JOBNAME}"}'
                  name: 'MSSQL Job ''{#JOBNAME}'': Job duration is high'
                  event_name: 'MSSQL Job ''{#JOBNAME}'': Job duration is greater than {$MSSQL.BACKUP_DURATION.WARN:"{#JOBNAME}"}'
                  opdata: 'Job duration: {ITEM.LASTVALUE1}'
                  priority: WARNING
                  description: 'The job is taking too long.'
                  manual_close: 'YES'
                  tags:
                    - tag: mssql-job
                      value: '{#JOBNAME}'
                    - tag: scope
                      value: performance
            - uuid: 1bd249b766384ec28f9dfa0212ac3472
              name: 'MSSQL Job ''{#JOBNAME}'': Get job status'
              type: DEPENDENT
              key: 'mssql.job.status_raw["{#JOBNAME}"]'
              history: '0'
              value_type: TEXT
              description: 'The item gets the status of SQL agent job {#JOBNAME}.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.job_name==''{#JOBNAME}'')].first()'
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'mssql.job.status.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: component
                  value: raw
                - tag: mssql-job
                  value: '{#JOBNAME}'
          master_item:
            key: 'mssql.job.status.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          lld_macro_paths:
            - lld_macro: '{#JOBNAME}'
              path: $.job_name
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
        - uuid: f47cad40c2dd42d4a80fb5628b8cc790
          name: 'Local database discovery'
          type: DEPENDENT
          key: mssql.local.db.discovery
          description: 'Discovery of the local availability databases.'
          item_prototypes:
            - uuid: af88b98cb0274de89dbf3b65a1b5c107
              name: 'MSSQL AG ''{#GROUP_NAME}'' Local DB ''{#DBNAME}'': Suspended'
              type: DEPENDENT
              key: 'mssql.local_db.is_suspended["{#DBNAME}"]'
              description: |
                Database state:
                0 = Resumed
                1 = Suspended
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.dbname==''{#DBNAME}'' && @.group_name==''{#GROUP_NAME}'')].is_suspended.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.local.db.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: local-db
                - tag: local-db
                  value: '{#DBNAME}'
            - uuid: b0f834ec67b743a994acc4d2681c594f
              name: 'MSSQL AG ''{#GROUP_NAME}'' Local DB ''{#DBNAME}'': State'
              type: DEPENDENT
              key: 'mssql.local_db.state["{#DBNAME}"]'
              description: |
                0 = Online
                1 = Restoring
                2 = Recovering
                3 = Recovery pending
                4 = Suspect
                5 = Emergency
                6 = Offline
              valuemap:
                name: 'MSSQL DB state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.dbname==''{#DBNAME}'' && @.group_name==''{#GROUP_NAME}'')].database_state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.local.db.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: local-db
                - tag: local-db
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: 7eb2d73718b0451790c5d81d63517c1b
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.local_db.state["{#DBNAME}"])>0'
                  name: 'MSSQL AG ''{#GROUP_NAME}'' Local DB ''{#DBNAME}'': "{#DBNAME}" is {ITEM.VALUE}'
                  priority: WARNING
                  description: 'The local availability database has a non-working state.'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: local-db
                      value: '{#DBNAME}'
                    - tag: scope
                      value: availability
            - uuid: bdbe4f929d0247baa8522b0bae2e3b3e
              name: 'MSSQL AG ''{#GROUP_NAME}'' Local DB ''{#DBNAME}'': Synchronization health'
              type: DEPENDENT
              key: 'mssql.local_db.synchronization_health["{#DBNAME}"]'
              description: |
                Reflects the intersection of the synchronization state of a database that is joined to the availability group on the availability replica and the availability mode of the availability replica (synchronous-commit or asynchronous-commit mode):
                0 = Not healthy. The synchronization_state of the database is 0 ("Not synchronizing").
                1 = Partially healthy. A database on a synchronous-commit availability replica is considered partially healthy if synchronization_state is 1 ("Synchronizing").
                2 = Healthy. A database on an synchronous-commit availability replica is considered healthy if synchronization_state is 2 ("Synchronized"), and a database on an asynchronous-commit availability replica is considered healthy if synchronization_state is 1 ("Synchronizing").
              valuemap:
                name: 'MSSQL AG Synchronization health'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.dbname==''{#DBNAME}'' && @.group_name==''{#GROUP_NAME}'')].synchronization_health.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.local.db.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: local-db
                - tag: local-db
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: 47ba6c51cf34498a991b68b341210eca
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.local_db.synchronization_health["{#DBNAME}"])=0'
                  name: 'MSSQL AG ''{#GROUP_NAME}'' Local DB ''{#DBNAME}'': "{#DBNAME}" is Not healthy'
                  priority: HIGH
                  description: 'The synchronization state of the local availability database is "Not synchronizing".'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: local-db
                      value: '{#DBNAME}'
                    - tag: scope
                      value: availability
                - uuid: 112b6ba5294946c7973d278392266439
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.local_db.synchronization_health["{#DBNAME}"])=1'
                  name: 'MSSQL AG ''{#GROUP_NAME}'' Local DB ''{#DBNAME}'': "{#DBNAME}" is Partially healthy'
                  priority: AVERAGE
                  description: 'A database on a synchronous-commit availability replica is considered partially healthy if synchronization state is "Synchronizing".'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: local-db
                      value: '{#DBNAME}'
                    - tag: scope
                      value: availability
          master_item:
            key: 'mssql.local.db.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          lld_macro_paths:
            - lld_macro: '{#DBNAME}'
              path: $.dbname
            - lld_macro: '{#GROUP_NAME}'
              path: $.group_name
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
        - uuid: 7c12efa1fd27435a968d910abcb1c095
          name: 'Mirroring discovery'
          type: DEPENDENT
          key: mssql.mirroring.discovery
          description: 'To see the row for a database other than master or tempdb, you must either be the database owner or have at least ALTER ANY DATABASE or VIEW ANY DATABASE server-level permission or CREATE DATABASE permission in the master database. To see non-NULL values on a mirror database, you must be a member of the sysadmin fixed server role.'
          item_prototypes:
            - uuid: ad3744d9c53f44008f6557a25333268d
              name: 'MSSQL Mirroring ''{#DBNAME}'': Role'
              type: DEPENDENT
              key: 'mssql.mirroring.role["{#DBNAME}"]'
              description: |
                Current role of the local database plays in the database mirroring session.
                1 = Principal
                2 = Mirror
              valuemap:
                name: 'MSSQL Mirroring Role'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.dbname==''{#DBNAME}'')].mirroring_role.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.mirroring.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: component
                  value: mssql-mirroring
                - tag: mssql-mirroring
                  value: '{#DBNAME}'
            - uuid: da278bc7d59b4590a5a869d800b57835
              name: 'MSSQL Mirroring ''{#DBNAME}'': Role sequence'
              type: DEPENDENT
              key: 'mssql.mirroring.role_sequence["{#DBNAME}"]'
              description: 'The number of times that mirroring partners have switched the principal and mirror roles due to a failover or forced service.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.dbname==''{#DBNAME}'')].mirroring_role_sequence.first()'
                - type: SIMPLE_CHANGE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.mirroring.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: component
                  value: mssql-mirroring
                - tag: mssql-mirroring
                  value: '{#DBNAME}'
            - uuid: ff0f198e003d4804a4ef471336b7b64b
              name: 'MSSQL Mirroring ''{#DBNAME}'': Safety level'
              type: DEPENDENT
              key: 'mssql.mirroring.safety_level["{#DBNAME}"]'
              description: |
                Safety setting for updates on the mirror database:
                0 = Unknown state
                1 = Off [asynchronous]
                2 = Full [synchronous]
              valuemap:
                name: 'MSSQL Safety level'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.dbname==''{#DBNAME}'')].mirroring_safety_level.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.mirroring.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: component
                  value: mssql-mirroring
                - tag: mssql-mirroring
                  value: '{#DBNAME}'
            - uuid: c0578a39b0a349d3bc4418bd25efbfd9
              name: 'MSSQL Mirroring ''{#DBNAME}'': State'
              type: DEPENDENT
              key: 'mssql.mirroring.state["{#DBNAME}"]'
              description: |
                State of the mirror database and of the database mirroring session.
                0 = Suspended
                1 = Disconnected from the other partner
                2 = Synchronizing
                3 = Pending failover
                4 = Synchronized
                5 = The partners are not synchronized. Failover is not possible now.
                6 = The partners are synchronized. Failover is potentially possible. For information about the requirements for the failover, see Database Mirroring Operating Modes: https://learn.microsoft.com/en-us/sql/database-engine/database-mirroring/database-mirroring-operating-modes?view=sql-server-ver16.
              valuemap:
                name: 'MSSQL Mirroring State'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.dbname==''{#DBNAME}'')].mirroring_state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.mirroring.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: component
                  value: mssql-mirroring
                - tag: mssql-mirroring
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: 33ef90679bcb47f09cc0c5372ea54fdc
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.mirroring.state["{#DBNAME}"])=3'
                  name: 'MSSQL Mirroring ''{#DBNAME}'': "{#DBNAME}" is {ITEM.VALUE}'
                  priority: WARNING
                  description: 'The state of the mirror database and of the database mirroring session is "Pending failover".'
                  tags:
                    - tag: mssql-mirroring
                      value: '{#DBNAME}'
                    - tag: scope
                      value: availability
                - uuid: 4e7813c78c8f47808cfb5c970de2ad99
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.mirroring.state["{#DBNAME}"])=5'
                  name: 'MSSQL Mirroring ''{#DBNAME}'': "{#DBNAME}" is {ITEM.VALUE}'
                  priority: HIGH
                  description: 'The state of the mirror database and of the database mirroring session is "Not synchronized". The partners are not synchronized. A failover is not possible now.'
                  tags:
                    - tag: mssql-mirroring
                      value: '{#DBNAME}'
                    - tag: scope
                      value: availability
                - uuid: 5554197e2079495ab49491ca0855ccee
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.mirroring.state["{#DBNAME}"])>=0 and last(/MSSQL by Zabbix agent 2/mssql.mirroring.state["{#DBNAME}"])<=2'
                  name: 'MSSQL Mirroring ''{#DBNAME}'': "{#DBNAME}" is {ITEM.VALUE}'
                  priority: INFO
                  description: 'The state of the mirror database and of the database mirroring session is "Suspended", "Disconnected from the other partner", or "Synchronizing".'
                  tags:
                    - tag: mssql-mirroring
                      value: '{#DBNAME}'
                    - tag: scope
                      value: availability
            - uuid: 84be4a93d1774b5096831c082b9154de
              name: 'MSSQL Mirroring ''{#DBNAME}'': Witness state'
              type: DEPENDENT
              key: 'mssql.mirroring.witness_state["{#DBNAME}"]'
              description: |
                State of the witness in the database mirroring session of the database:
                0 = Unknown
                1 = Connected
                2 = Disconnected
              valuemap:
                name: 'MSSQL Witness state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.dbname==''{#DBNAME}'')].mirroring_witness_state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.mirroring.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: component
                  value: mssql-mirroring
                - tag: mssql-mirroring
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: 3a3903f3008b4360a93e45d94f344a42
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.mirroring.witness_state["{#DBNAME}"])=2'
                  name: 'MSSQL Mirroring ''{#DBNAME}'': "{#DBNAME}" Witness is disconnected'
                  priority: WARNING
                  description: 'The state of the witness in the database mirroring session of the database is "Disconnected".'
                  tags:
                    - tag: mssql-mirroring
                      value: '{#DBNAME}'
                    - tag: scope
                      value: availability
          graph_prototypes:
            - uuid: 37c8f69765e3456bbfdfbe096c78e910
              name: 'MSSQL Mirroring ''{#DBNAME}'': States'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'MSSQL by Zabbix agent 2'
                    key: 'mssql.mirroring.state["{#DBNAME}"]'
                - sortorder: '1'
                  color: F63100
                  item:
                    host: 'MSSQL by Zabbix agent 2'
                    key: 'mssql.mirroring.witness_state["{#DBNAME}"]'
          master_item:
            key: 'mssql.mirroring.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          lld_macro_paths:
            - lld_macro: '{#DBNAME}'
              path: $.dbname
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
        - uuid: faaa289d832d4dcda5de868d832a7d31
          name: 'Non-local database discovery'
          type: DEPENDENT
          key: mssql.non.local.db.discovery
          description: 'Discovery of the non-local (not local to SQL Server instance) availability databases.'
          item_prototypes:
            - uuid: ab9c87918819445f8c4eaf3fd3226a5a
              name: 'MSSQL AG ''{#GROUP_NAME}'' Non-Local DB ''*{#REPLICA_NAME}*{#DBNAME}'': Log queue size'
              type: DEPENDENT
              key: 'mssql.non-local_db.log_send_queue_size["{#GROUP_NAME}*{#REPLICA_NAME}*{#DBNAME}"]'
              units: B
              description: 'Amount of the log records of the primary database that has not been sent to the secondary databases.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.dbname==''{#DBNAME}'' && @.group_name==''{#GROUP_NAME}'' && @.replica_name==''{#REPLICA_NAME}'')].log_send_queue_size.first()'
                - type: MULTIPLIER
                  parameters:
                    - '1024'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.nonlocal.db.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: non-local-db
                - tag: non-local-db
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: 16b1fc9ee0e340ac8f1742d04ffc6393
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.non-local_db.log_send_queue_size["{#GROUP_NAME}*{#REPLICA_NAME}*{#DBNAME}"],#1)>last(/MSSQL by Zabbix agent 2/mssql.non-local_db.log_send_queue_size["{#GROUP_NAME}*{#REPLICA_NAME}*{#DBNAME}"],#2) and last(/MSSQL by Zabbix agent 2/mssql.non-local_db.log_send_queue_size["{#GROUP_NAME}*{#REPLICA_NAME}*{#DBNAME}"],#2)>last(/MSSQL by Zabbix agent 2/mssql.non-local_db.log_send_queue_size["{#GROUP_NAME}*{#REPLICA_NAME}*{#DBNAME}"],#3)'
                  name: 'MSSQL AG ''{#GROUP_NAME}'' Non-Local DB ''*{#REPLICA_NAME}*{#DBNAME}'': Log queue size is growing'
                  priority: HIGH
                  description: 'The log records of the primary database are not sent to the secondary databases.'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: non-local-db
                      value: '{#DBNAME}'
                    - tag: scope
                      value: capacity
            - uuid: dd2a6b660ed148e7b1c729ffb2a4ad76
              name: 'MSSQL AG ''{#GROUP_NAME}'' Non-Local DB ''*{#REPLICA_NAME}*{#DBNAME}'': Redo log queue size'
              type: DEPENDENT
              key: 'mssql.non-local_db.redo_queue_size["{#GROUP_NAME}*{#REPLICA_NAME}*{#DBNAME}"]'
              units: B
              description: 'Amount of log records in the log files of the secondary replica that has not yet been redone.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.dbname==''{#DBNAME}'' && @.group_name==''{#GROUP_NAME}'' && @.replica_name==''{#REPLICA_NAME}'')].redo_queue_size.first()'
                - type: MULTIPLIER
                  parameters:
                    - '1024'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.nonlocal.db.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: non-local-db
                - tag: non-local-db
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: b4748575543a451c85fa013e4867e38f
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.non-local_db.redo_queue_size["{#GROUP_NAME}*{#REPLICA_NAME}*{#DBNAME}"],#1)>last(/MSSQL by Zabbix agent 2/mssql.non-local_db.redo_queue_size["{#GROUP_NAME}*{#REPLICA_NAME}*{#DBNAME}"],#2) and last(/MSSQL by Zabbix agent 2/mssql.non-local_db.redo_queue_size["{#GROUP_NAME}*{#REPLICA_NAME}*{#DBNAME}"],#2)>last(/MSSQL by Zabbix agent 2/mssql.non-local_db.redo_queue_size["{#GROUP_NAME}*{#REPLICA_NAME}*{#DBNAME}"],#3)'
                  name: 'MSSQL AG ''{#GROUP_NAME}'' Non-Local DB ''*{#REPLICA_NAME}*{#DBNAME}'': Redo log queue size is growing'
                  priority: HIGH
                  description: 'The log records in the log files of the secondary replica have not yet been redone.'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: non-local-db
                      value: '{#DBNAME}'
                    - tag: scope
                      value: capacity
          master_item:
            key: 'mssql.nonlocal.db.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          lld_macro_paths:
            - lld_macro: '{#DBNAME}'
              path: $.dbname
            - lld_macro: '{#GROUP_NAME}'
              path: $.group_name
            - lld_macro: '{#REPLICA_NAME}'
              path: $.replica_name
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
        - uuid: ee0ccf3f0e6e4bfbb500942811874ece
          name: 'Quorum discovery'
          type: DEPENDENT
          key: mssql.quorum.discovery
          description: 'Discovery of the quorum of the WSFC cluster.'
          item_prototypes:
            - uuid: 3ddd6e3780de4b7a8cb2e37d515d5a8f
              name: 'MSSQL Cluster ''{#CLUSTER_NAME}'': Quorum state'
              type: DEPENDENT
              key: 'mssql.quorum.state.[{#CLUSTER_NAME}]'
              description: |
                State of the WSFC quorum, one of:
                0 = Unknown quorum state
                1 = Normal quorum
                2 = Forced quorum
              valuemap:
                name: 'MSSQL Quorum state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.cluster_name==''{#CLUSTER_NAME}'')].quorum_state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.quorum.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: cluster-name
                  value: '{#CLUSTER_NAME}'
                - tag: component
                  value: quorum
            - uuid: 1a00d48af79340478b359a958cb78e3f
              name: 'MSSQL Cluster ''{#CLUSTER_NAME}'': Quorum type'
              type: DEPENDENT
              key: 'mssql.quorum.type.[{#CLUSTER_NAME}]'
              description: |
                Type of quorum used by this WSFC cluster, one of:
                0 = Node Majority. This quorum configuration can sustain failures of half the nodes (rounding up) minus one.
                1 = Node and Disk Majority. If the disk witness remains on line, this quorum configuration can sustain failures of half the nodes (rounding up).
                2 = Node and File Share Majority. This quorum configuration works in a similar way to Node and Disk Majority, but uses a file-share witness instead of a disk witness.
                3 = No Majority: Disk Only. If the quorum disk is online, this quorum configuration can sustain failures of all nodes except one.
                4 = Unknown Quorum. Unknown quorum for the cluster.
                5 = Cloud Witness. Cluster utilizes Microsoft Azure for quorum arbitration. If the cloud witness is available, the cluster can sustain the failure of half the nodes (rounding up).
              valuemap:
                name: 'MSSQL Quorum type'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.cluster_name==''{#CLUSTER_NAME}'')].quorum_type.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1d
              master_item:
                key: 'mssql.quorum.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: cluster-name
                  value: '{#CLUSTER_NAME}'
                - tag: component
                  value: quorum
          master_item:
            key: 'mssql.quorum.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          lld_macro_paths:
            - lld_macro: '{#CLUSTER_NAME}'
              path: $.cluster_name
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
        - uuid: 57e6fe3d425d4d74a360f26bb5ff5e57
          name: 'Quorum members discovery'
          type: DEPENDENT
          key: mssql.quorum.member.discovery
          description: 'Discovery of the quorum members of the WSFC cluster.'
          item_prototypes:
            - uuid: 6fec1fe9856c4b7eb1f7446e01a75ce5
              name: 'MSSQL Cluster member ''{#MEMBER_NAME}'': Member state'
              type: DEPENDENT
              key: 'mssql.quorum_members.member_state.[{#MEMBER_NAME}]'
              description: |
                The member state, one of:
                0 = Offline
                1 = Online
              valuemap:
                name: 'MSSQL Quorum members state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.member_name==''{#MEMBER_NAME}'')].member_state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.quorum.member.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: component
                  value: 'quorum members'
                - tag: quorum-members-name
                  value: '{#MEMBER_NAME}'
            - uuid: d8dd85b6fc764ba4abc4d5cff0cefced
              name: 'MSSQL Cluster member ''{#MEMBER_NAME}'': Member type'
              type: DEPENDENT
              key: 'mssql.quorum_members.member_type.[{#MEMBER_NAME}]'
              description: |
                The type of member, one of:
                0 = WSFC node
                1 = Disk witness
                2 = File share witness
                3 = Cloud Witness
              valuemap:
                name: 'MSSQL Quorum members type'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.member_name==''{#MEMBER_NAME}'')].member_type.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1d
              master_item:
                key: 'mssql.quorum.member.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: component
                  value: 'quorum members'
                - tag: quorum-members-name
                  value: '{#MEMBER_NAME}'
            - uuid: 87154fcf731b461b94e816ce58ef44ac
              name: 'MSSQL Cluster member ''{#MEMBER_NAME}'': Number of quorum votes'
              type: DEPENDENT
              key: 'mssql.quorum_members.number_of_quorum_votes.[{#MEMBER_NAME}]'
              description: 'Number of quorum votes possessed by this quorum member.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.member_name==''{#MEMBER_NAME}'')].number_of_quorum_votes.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1d
              master_item:
                key: 'mssql.quorum.member.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: component
                  value: 'quorum members'
                - tag: quorum-members-name
                  value: '{#MEMBER_NAME}'
          master_item:
            key: 'mssql.quorum.member.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          lld_macro_paths:
            - lld_macro: '{#MEMBER_NAME}'
              path: $.member_name
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
        - uuid: f72e7102f3314225b298a44332361aea
          name: 'Replication discovery'
          type: DEPENDENT
          key: mssql.replica.discovery
          description: 'Discovery of the database replicas.'
          item_prototypes:
            - uuid: a685cc983de040a6a6456d0568b74492
              name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': Connected state'
              type: DEPENDENT
              key: 'mssql.replica.connected_state["{#GROUP_NAME}_{#REPLICA_NAME}"]'
              description: |
                Whether a secondary replica is currently connected to the primary replica:
                0 = Disconnected. The response of an availability replica to the "Disconnected" state depends on its role:
                On the primary replica, if a secondary replica is disconnected, its secondary databases are marked as "Not synchronized" on the primary replica, which waits for the secondary to reconnect;
                On a secondary replica, upon detecting that it is disconnected, the secondary replica attempts to reconnect to the primary replica.
                1 = Connected. Each primary replica tracks the connection state for every secondary replica in the same availability group. Secondary replicas track the connection state of only the primary replica.
              valuemap:
                name: 'MSSQL AG Connected state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.replica_name==''{#REPLICA_NAME}'' && @.group_name==''{#GROUP_NAME}'')].connected_state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.replica.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: replica
                - tag: replica
                  value: '{#REPLICA_NAME}'
            - uuid: 8dd557f2254a43adb8d56864d8910c11
              name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': Is local'
              type: DEPENDENT
              key: 'mssql.replica.is_local["{#GROUP_NAME}_{#REPLICA_NAME}"]'
              description: |
                Whether the replica is local:
                0 = Indicates a remote secondary replica in an availability group whose primary replica is hosted by the local server instance. This value occurs only on the primary replica location.
                1 = Indicates a local replica. On secondary replicas, this is the only available value for the availability group to which the replica belongs.
              valuemap:
                name: 'MSSQL - Yes / No'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.replica_name==''{#REPLICA_NAME}'' && @.group_name==''{#GROUP_NAME}'')].is_local.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.replica.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: replica
                - tag: replica
                  value: '{#REPLICA_NAME}'
            - uuid: 1f6c0f9e0757405eb172fa97f8dfe990
              name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': Join state'
              type: DEPENDENT
              key: 'mssql.replica.join_state["{#GROUP_NAME}_{#REPLICA_NAME}"]'
              description: |
                0 = Not joined
                1 = Joined, standalone instance
                2 = Joined, failover cluster instance
              valuemap:
                name: 'MSSQL AG Join state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.replica_name==''{#REPLICA_NAME}'' && @.group_name==''{#GROUP_NAME}'')].join_state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.replica.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: replica
                - tag: replica
                  value: '{#REPLICA_NAME}'
            - uuid: bc71481dd6b047679946f8488dd844f7
              name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': Operational state'
              type: DEPENDENT
              key: 'mssql.replica.operational_state["{#GROUP_NAME}_{#REPLICA_NAME}"]'
              description: |
                Current operational state of the replica:
                0 = Pending failover
                1 = Pending
                2 = Online
                3 = Offline
                4 = Failed
                5 = Failed, no quorum
                6 = Not local
              valuemap:
                name: 'MSSQL AG Operational state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.replica_name==''{#REPLICA_NAME}'' && @.group_name==''{#GROUP_NAME}'')].operational_state.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.replica.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: replica
                - tag: replica
                  value: '{#REPLICA_NAME}'
              trigger_prototypes:
                - uuid: 7a05f5f0393f442d8e5d78669e9dd8cb
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.replica.operational_state["{#GROUP_NAME}_{#REPLICA_NAME}"])=0 or last(/MSSQL by Zabbix agent 2/mssql.replica.operational_state["{#GROUP_NAME}_{#REPLICA_NAME}"])=1 or last(/MSSQL by Zabbix agent 2/mssql.replica.operational_state["{#GROUP_NAME}_{#REPLICA_NAME}"])=3'
                  name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': {#REPLICA_NAME} is {ITEM.VALUE}'
                  priority: WARNING
                  description: 'The operational state of the replica in a given availability group is "Pending" or "Offline".'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: replica
                      value: '{#REPLICA_NAME}'
                    - tag: scope
                      value: availability
                - uuid: 5f67fcecd9864c5a97c0bb7c8281cd81
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.replica.operational_state["{#GROUP_NAME}_{#REPLICA_NAME}"])=4'
                  name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': {#REPLICA_NAME} is {ITEM.VALUE}'
                  priority: AVERAGE
                  description: 'The operational state of the replica in a given availability group is "Failed".'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: replica
                      value: '{#REPLICA_NAME}'
                    - tag: scope
                      value: availability
                - uuid: 7e387d698f214c458a6e45d64191185e
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.replica.operational_state["{#GROUP_NAME}_{#REPLICA_NAME}"])=5'
                  name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': {#REPLICA_NAME} is {ITEM.VALUE}'
                  priority: HIGH
                  description: 'The operational state of the replica in a given availability group is "Failed, no quorum".'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: replica
                      value: '{#REPLICA_NAME}'
                    - tag: scope
                      value: availability
            - uuid: a1ae4502e4a445f7801ba8283124e480
              name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': Recovery health'
              type: DEPENDENT
              key: 'mssql.replica.recovery_health["{#GROUP_NAME}_{#REPLICA_NAME}"]'
              description: |
                Rollup of the "database_state" column of the `sys.dm_hadr_database_replica_states` dynamic management view:
                0 = In progress. At least one joined database has a database state other than "Online" (database_state is not "0").
                1 = Online. All the joined databases have a database state of "Online" (database_state is "0").
              valuemap:
                name: 'MSSQL AG Recovery health'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.replica_name==''{#REPLICA_NAME}'' && @.group_name==''{#GROUP_NAME}'')].recovery_health.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.replica.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: replica
                - tag: replica
                  value: '{#REPLICA_NAME}'
              trigger_prototypes:
                - uuid: 9c5f393288114e1081055f18c136dd07
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.replica.recovery_health["{#GROUP_NAME}_{#REPLICA_NAME}"])=0'
                  name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': {#REPLICA_NAME} Recovery in progress'
                  priority: INFO
                  description: 'At least one joined database has a database state other than "Online".'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: replica
                      value: '{#REPLICA_NAME}'
                    - tag: scope
                      value: notice
            - uuid: 50afa669369d4a5e936748aee07e76f0
              name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': Role'
              type: DEPENDENT
              key: 'mssql.replica.role["{#GROUP_NAME}_{#REPLICA_NAME}"]'
              description: |
                Current Always On availability group role of a local replica or a connected remote replica:
                0 = Resolving
                1 = Primary
                2 = Secondary
              valuemap:
                name: 'MSSQL AG Role'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.replica_name==''{#REPLICA_NAME}'' && @.group_name==''{#GROUP_NAME}'')].role.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.replica.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: replica
                - tag: replica
                  value: '{#REPLICA_NAME}'
            - uuid: 6a1abecd7c0044dd82442b30df3b4eae
              name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': Sync health'
              type: DEPENDENT
              key: 'mssql.replica.synchronization_health["{#GROUP_NAME}_{#REPLICA_NAME}"]'
              description: |
                Reflects a rollup of the database synchronization state (synchronization_state) of all joined availability databases (also known as replicas) and the availability mode of the replica (synchronous-commit or asynchronous-commit mode). The rollup will reflect the least healthy accumulated state of the databases on the replica:
                0 = Not healthy. At least one joined database is in the "Not synchronizing" state.
                1 = Partially healthy. Some replicas are not in the target synchronization state: synchronous-commit replicas should be synchronized, and asynchronous-commit replicas should be synchronizing.
                2 = Healthy. All replicas are in the target synchronization state: synchronous-commit replicas are synchronized, and asynchronous-commit replicas are synchronizing.
              valuemap:
                name: 'MSSQL AG Synchronization health'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.replica_name==''{#REPLICA_NAME}'' && @.group_name==''{#GROUP_NAME}'')].synchronization_health.first()'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'mssql.replica.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: component
                  value: replica
                - tag: replica
                  value: '{#REPLICA_NAME}'
              trigger_prototypes:
                - uuid: 57aef51f42cd4e40a1041bb6862fde27
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.replica.synchronization_health["{#GROUP_NAME}_{#REPLICA_NAME}"])=0'
                  name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': {#REPLICA_NAME} is Not healthy'
                  priority: AVERAGE
                  description: 'At least one joined database is in the "Not synchronizing" state.'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: replica
                      value: '{#REPLICA_NAME}'
                    - tag: scope
                      value: availability
                - uuid: e2ce3d5eb0174f1789ed01f3516f25dd
                  expression: 'last(/MSSQL by Zabbix agent 2/mssql.replica.synchronization_health["{#GROUP_NAME}_{#REPLICA_NAME}"])=1'
                  name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': {#REPLICA_NAME} is Partially healthy'
                  priority: WARNING
                  description: 'Some replicas are not in the target synchronization state: synchronous-commit replicas should be synchronized, and asynchronous-commit replicas should be synchronizing.'
                  tags:
                    - tag: availability-group
                      value: '{#GROUP_NAME}'
                    - tag: replica
                      value: '{#REPLICA_NAME}'
                    - tag: scope
                      value: availability
          trigger_prototypes:
            - uuid: b6e37290b6b44d2888bdbfe53a949b63
              expression: 'last(/MSSQL by Zabbix agent 2/mssql.replica.connected_state["{#GROUP_NAME}_{#REPLICA_NAME}"])=0 and last(/MSSQL by Zabbix agent 2/mssql.replica.role["{#GROUP_NAME}_{#REPLICA_NAME}"])=2'
              name: 'MSSQL AG ''{#GROUP_NAME}'' Replica ''{#REPLICA_NAME}'': {#REPLICA_NAME} is disconnected'
              priority: WARNING
              description: |
                The response of an availability replica to the "Disconnected" state depends on its role:
                On the primary replica, if a secondary replica is disconnected, its secondary databases are marked as "Not synchronized" on the primary replica, which waits for the secondary to reconnect;
                On a secondary replica, upon detecting that it is disconnected, the secondary replica attempts to reconnect to the primary replica.
              tags:
                - tag: availability-group
                  value: '{#GROUP_NAME}'
                - tag: replica
                  value: '{#REPLICA_NAME}'
                - tag: scope
                  value: availability
          master_item:
            key: 'mssql.replica.get["{$MSSQL.URI}","{$MSSQL.USER}","{$MSSQL.PASSWORD}"]'
          lld_macro_paths:
            - lld_macro: '{#GROUP_NAME}'
              path: $.group_name
            - lld_macro: '{#REPLICA_NAME}'
              path: $.replica_name
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
      tags:
        - tag: class
          value: database
        - tag: target
          value: mssql
      macros:
        - macro: '{$MSSQL.AVERAGE_WAIT_TIME.MAX}'
          value: '500'
          description: 'The maximum average wait time, in milliseconds - for the trigger expression.'
        - macro: '{$MSSQL.BACKUP_DIFF.CRIT}'
          value: 6d
          description: 'The maximum of days without a differential backup - for the High trigger expression.'
        - macro: '{$MSSQL.BACKUP_DIFF.USED}'
          value: '1'
          description: 'The flag for checking the age of a differential backup. If set to a value other than "1", the trigger expression for the differential backup age will not fire. Can be used with context for database name.'
        - macro: '{$MSSQL.BACKUP_DIFF.WARN}'
          value: 3d
          description: 'The maximum of days without a differential backup - for the Warning trigger expression.'
        - macro: '{$MSSQL.BACKUP_DURATION.WARN}'
          value: 1h
          description: 'The maximum job duration - for the Warning trigger expression.'
        - macro: '{$MSSQL.BACKUP_FULL.CRIT}'
          value: 10d
          description: 'The maximum of days without a full backup - for the High trigger expression.'
        - macro: '{$MSSQL.BACKUP_FULL.USED}'
          value: '1'
          description: 'The flag for checking the age of a full backup. If set to a value other than "1", the trigger expression for the full backup age will not fire. Can be used with context for database name.'
        - macro: '{$MSSQL.BACKUP_FULL.WARN}'
          value: 9d
          description: 'The maximum of days without a full backup - for the Warning trigger expression.'
        - macro: '{$MSSQL.BACKUP_LOG.CRIT}'
          value: 8h
          description: 'The maximum of days without a log backup - for the High trigger expression.'
        - macro: '{$MSSQL.BACKUP_LOG.USED}'
          value: '1'
          description: 'The flag for checking the age of a log backup. If set to a value other than "1", the trigger expression for the log backup age will not fire. Can be used with context for database name.'
        - macro: '{$MSSQL.BACKUP_LOG.WARN}'
          value: 4h
          description: 'The maximum of days without a log backup - for the Warning trigger expression.'
        - macro: '{$MSSQL.BUFFER_CACHE_RATIO.MIN.CRIT}'
          value: '30'
          description: 'The minimum buffer cache hit ratio, in percent - for the High trigger expression.'
        - macro: '{$MSSQL.BUFFER_CACHE_RATIO.MIN.WARN}'
          value: '50'
          description: 'The minimum buffer cache hit ratio, in percent - for the Warning trigger expression.'
        - macro: '{$MSSQL.DBNAME.MATCHES}'
          value: '.*'
          description: 'This macro is used in database discovery. It can be overridden on the host or linked template level.'
        - macro: '{$MSSQL.DBNAME.NOT_MATCHES}'
          value: master|tempdb|model|msdb
          description: 'This macro is used in database discovery. It can be overridden on the host or linked template level.'
        - macro: '{$MSSQL.DEADLOCKS.MAX}'
          value: '1'
          description: 'The maximum deadlocks per second - for the trigger expression.'
        - macro: '{$MSSQL.FREE_LIST_STALLS.MAX}'
          value: '2'
          description: 'The maximum free list stalls per second - for the trigger expression.'
        - macro: '{$MSSQL.HOST}'
          value: localhost
          description: 'The hostname or IP address of the MSSQL instance.'
        - macro: '{$MSSQL.JOB.MATCHES}'
          value: '.*'
          description: 'This macro is used in job discovery. It can be overridden on the host or linked template level.'
        - macro: '{$MSSQL.JOB.NOT_MATCHES}'
          value: CHANGE_IF_NEEDED
          description: 'This macro is used in job discovery. It can be overridden on the host or linked template level.'
        - macro: '{$MSSQL.LAZY_WRITES.MAX}'
          value: '20'
          description: 'The maximum lazy writes per second - for the trigger expression.'
        - macro: '{$MSSQL.LOCK_REQUESTS.MAX}'
          value: '1000'
          description: 'The maximum lock requests per second - for the trigger expression.'
        - macro: '{$MSSQL.LOCK_TIMEOUTS.MAX}'
          value: '1'
          description: 'The maximum lock timeouts per second - for the trigger expression.'
        - macro: '{$MSSQL.LOG_FLUSH_WAITS.MAX}'
          value: '1'
          description: 'The maximum log flush waits per second - for the trigger expression.'
        - macro: '{$MSSQL.LOG_FLUSH_WAIT_TIME.MAX}'
          value: '1'
          description: 'The maximum log flush wait time, in milliseconds - for the trigger expression.'
        - macro: '{$MSSQL.PAGE_LIFE_EXPECTANCY.MIN}'
          value: '300'
          description: 'The minimum page life expectancy - for the trigger expression.'
        - macro: '{$MSSQL.PAGE_READS.MAX}'
          value: '90'
          description: 'The maximum page reads per second - for the trigger expression.'
        - macro: '{$MSSQL.PAGE_WRITES.MAX}'
          value: '90'
          description: 'The maximum page writes per second - for the trigger expression.'
        - macro: '{$MSSQL.PASSWORD}'
          value: '<Put your password here>'
          description: 'MSSQL user password.'
        - macro: '{$MSSQL.PERCENT_COMPILATIONS.MAX}'
          value: '10'
          description: 'The maximum percentage of Transact-SQL compilations - for the trigger expression.'
        - macro: '{$MSSQL.PERCENT_LOG_USED.MAX}'
          value: '80'
          description: 'The maximum percentage of log used - for the trigger expression.'
        - macro: '{$MSSQL.PERCENT_READAHEAD.MAX}'
          value: '20'
          description: 'The maximum percentage of pages read per second in anticipation of use - for the trigger expression.'
        - macro: '{$MSSQL.PERCENT_RECOMPILATIONS.MAX}'
          value: '10'
          description: 'The maximum percentage of Transact-SQL recompilations - for the trigger expression.'
        - macro: '{$MSSQL.PORT}'
          value: '1433'
          description: 'MSSQL TCP port.'
        - macro: '{$MSSQL.URI}'
          value: '<Put your URI here>'
          description: 'Connection string.'
        - macro: '{$MSSQL.USER}'
          value: '<Put your username here>'
          description: 'MSSQL username.'
        - macro: '{$MSSQL.WORKTABLES_FROM_CACHE_RATIO.MIN.CRIT}'
          value: '90'
          description: 'The minimum percentage of work tables from the cache ratio - for the High trigger expression.'
        - macro: '{$MSSQL.WORK_FILES.MAX}'
          value: '20'
          description: 'The maximum number of work files created per second - for the trigger expression.'
        - macro: '{$MSSQL.WORK_TABLES.MAX}'
          value: '20'
          description: 'The maximum number of work tables created per second - for the trigger expression.'
      dashboards:
        - uuid: 699c7aa81a4b476abb938f3db0debf73
          name: 'MSSQL: Overview'
          pages:
            - name: Main
              widgets:
                - type: graph
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Errors'
                    - type: STRING
                      name: reference
                      value: AAAAA
                - type: graph
                  'y': '5'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Server memory'
                    - type: STRING
                      name: reference
                      value: AAAAC
                - type: graph
                  'y': '10'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Waits per second'
                    - type: STRING
                      name: reference
                      value: AAAAE
                - type: graph
                  'y': '15'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Database pages'
                    - type: STRING
                      name: reference
                      value: AAAAG
                - type: graph
                  'y': '20'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Transactions'
                    - type: STRING
                      name: reference
                      value: AAAAI
                - type: graph
                  'y': '25'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Pages'
                    - type: STRING
                      name: reference
                      value: AAAAK
                - type: graph
                  'y': '30'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Memory grants outstanding and pending'
                    - type: STRING
                      name: reference
                      value: AAAAM
                - type: graph
                  'y': '35'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Access methods'
                    - type: STRING
                      name: reference
                      value: AAAAO
                - type: graph
                  'y': '40'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Logins per second and Logouts per second'
                    - type: STRING
                      name: reference
                      value: AAAAQ
                - type: graph
                  x: '36'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Locks'
                    - type: STRING
                      name: reference
                      value: AAAAB
                - type: graph
                  x: '36'
                  'y': '5'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Memory/cache load'
                    - type: STRING
                      name: reference
                      value: AAAAD
                - type: graph
                  x: '36'
                  'y': '10'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Wait times'
                    - type: STRING
                      name: reference
                      value: AAAAF
                - type: graph
                  x: '36'
                  'y': '15'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Cache objects'
                    - type: STRING
                      name: reference
                      value: AAAAH
                - type: graph
                  x: '36'
                  'y': '20'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Compilations'
                    - type: STRING
                      name: reference
                      value: AAAAJ
                - type: graph
                  x: '36'
                  'y': '25'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Page life expectancy'
                    - type: STRING
                      name: reference
                      value: AAAAL
                - type: graph
                  x: '36'
                  'y': '30'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Processes blocked'
                    - type: STRING
                      name: reference
                      value: AAAAN
                - type: graph
                  x: '36'
                  'y': '35'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL: Auto-params'
                    - type: STRING
                      name: reference
                      value: AAAAP
            - name: Databases
              widgets:
                - type: graphprototype
                  width: '36'
                  height: '15'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL DB ''{#DBNAME}'': Size'
                    - type: STRING
                      name: reference
                      value: AAAAR
                    - type: INTEGER
                      name: rows
                      value: '3'
                - type: graphprototype
                  x: '36'
                  width: '36'
                  height: '15'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'MSSQL by Zabbix agent 2'
                        name: 'MSSQL DB ''{#DBNAME}'': Log size'
                    - type: STRING
                      name: reference
                      value: AAAAS
                    - type: INTEGER
                      name: rows
                      value: '3'
      valuemaps:
        - uuid: 0d7dbd62613540cc8dd70d2f0ec76db6
          name: 'MSSQL - Yes / No'
          mappings:
            - value: '0'
              newvalue: 'No'
            - value: '1'
              newvalue: 'Yes'
        - uuid: 1f962ea838d640d5905ae14d66826239
          name: 'MSSQL AG Connected state'
          mappings:
            - value: '0'
              newvalue: Disconnected
            - value: '1'
              newvalue: Connected
        - uuid: 034a175b7fba4e4d8e85806c8f801f18
          name: 'MSSQL AG Join state'
          mappings:
            - value: '0'
              newvalue: 'Not joined'
            - value: '1'
              newvalue: 'Joined, standalone instance'
            - value: '2'
              newvalue: 'Joined, failover cluster instance'
        - uuid: fbbaea2f75f94b7ba0bb2ed2756e2593
          name: 'MSSQL AG Operational state'
          mappings:
            - value: '0'
              newvalue: 'Pending failover'
            - value: '1'
              newvalue: Pending
            - value: '2'
              newvalue: Online
            - value: '3'
              newvalue: Offline
            - value: '4'
              newvalue: Failed
            - value: '5'
              newvalue: 'Failed, no quorum'
            - value: '6'
              newvalue: 'Replica is not local'
        - uuid: c90a7f77957a40c8bb6c9370ff1f63d1
          name: 'MSSQL AG Recovery health'
          mappings:
            - value: '0'
              newvalue: 'In progress'
            - value: '1'
              newvalue: Online
            - value: '2'
              newvalue: 'Replica is not local'
        - uuid: b07e0cd2c7fd4411b16305141058c9d7
          name: 'MSSQL AG Role'
          mappings:
            - value: '0'
              newvalue: Resolving
            - value: '1'
              newvalue: Primary
            - value: '2'
              newvalue: Secondary
        - uuid: dd1d46bfb14946769dc929ae1947a328
          name: 'MSSQL AG Synchronization health'
          mappings:
            - value: '0'
              newvalue: 'Not healthy'
            - value: '1'
              newvalue: 'Partially healthy'
            - value: '2'
              newvalue: Healthy
        - uuid: eeca1ed2c3cb4624b045b9ba0007f1a6
          name: 'MSSQL DB state'
          mappings:
            - value: '0'
              newvalue: ONLINE
            - value: '1'
              newvalue: RESTORING
            - value: '2'
              newvalue: RECOVERING
            - value: '3'
              newvalue: RECOVERY_PENDING
            - value: '4'
              newvalue: SUSPECT
            - value: '5'
              newvalue: EMERGENCY
            - value: '6'
              newvalue: OFFLINE
            - value: '7'
              newvalue: COPYING
            - value: '10'
              newvalue: OFFLINE_SECONDARY
        - uuid: bc4b734c0c3e4f508323a8880a9b27db
          name: 'MSSQL Job Run Status'
          mappings:
            - value: '0'
              newvalue: Failed
            - value: '1'
              newvalue: Succeeded
            - value: '2'
              newvalue: Retry
            - value: '3'
              newvalue: Canceled
            - value: '4'
              newvalue: Running
            - value: '5'
              newvalue: Unknown
        - uuid: 09480e835f474f22ba463b7c6b486de1
          name: 'MSSQL Mirroring Role'
          mappings:
            - value: '0'
              newvalue: 'Database is inaccessible or is not mirrored'
            - value: '1'
              newvalue: Principal
            - value: '2'
              newvalue: Mirror
        - uuid: 6fd710f80063456483f47dab9fdab3c3
          name: 'MSSQL Mirroring State'
          mappings:
            - value: '0'
              newvalue: Suspended
            - value: '1'
              newvalue: 'Disconnected from the other partner'
            - value: '2'
              newvalue: Synchronizing
            - value: '3'
              newvalue: 'Pending failover'
            - value: '4'
              newvalue: Synchronized
            - value: '5'
              newvalue: 'The partners are not synchronized. Failover is not possible now.'
            - value: '6'
              newvalue: 'The partners are synchronized. Failover is potentially possible.'
            - value: '7'
              newvalue: 'Database is inaccessible or is not mirrored'
        - uuid: 300744b8bf494bc09cae58f1366e8043
          name: 'MSSQL Quorum members state'
          mappings:
            - value: '0'
              newvalue: Offline
            - value: '1'
              newvalue: Online
        - uuid: 38b1c1c9183f450cb3256fefaa8ae24a
          name: 'MSSQL Quorum members type'
          mappings:
            - value: '0'
              newvalue: 'WSFC node'
            - value: '1'
              newvalue: 'Disk witness'
            - value: '2'
              newvalue: 'File share witness'
            - value: '3'
              newvalue: 'Cloud Witness'
        - uuid: 047cb848051f4e85a1f45664fd51255b
          name: 'MSSQL Quorum state'
          mappings:
            - value: '0'
              newvalue: 'Unknown quorum state'
            - value: '1'
              newvalue: 'Normal quorum'
            - value: '2'
              newvalue: 'Forced quorum'
        - uuid: 2697dc5e3d5e462aac7951844a9fa76c
          name: 'MSSQL Quorum type'
          mappings:
            - value: '0'
              newvalue: 'Node Majority'
            - value: '1'
              newvalue: 'Node and Disk Majority'
            - value: '2'
              newvalue: 'Node and File Share Majority'
            - value: '3'
              newvalue: 'No Majority: Disk Only'
            - value: '4'
              newvalue: 'Unknown Quorum'
            - value: '5'
              newvalue: 'Cloud Witness'
        - uuid: 1002338ba75c49f89ce5c27872818ff3
          name: 'MSSQL Recovery model'
          mappings:
            - value: '1'
              newvalue: FULL
            - value: '2'
              newvalue: BULK_LOGGED
            - value: '3'
              newvalue: SIMPLE
        - uuid: 8800c652dc154231b40e996b39c7c2dd
          name: 'MSSQL Safety level'
          mappings:
            - value: '0'
              newvalue: 'Unknown state'
            - value: '1'
              newvalue: 'Off [asynchronous]'
            - value: '2'
              newvalue: 'Full [synchronous]'
            - value: '3'
              newvalue: 'Database is inaccessible or is not mirrored'
        - uuid: 0be116423b4949959053d581cafa096c
          name: 'MSSQL Witness state'
          mappings:
            - value: '0'
              newvalue: Unknown
            - value: '1'
              newvalue: Connected
            - value: '2'
              newvalue: Disconnected
            - value: '3'
              newvalue: 'No witness exists'
        - uuid: faafc4168c5a4eb09d20ab4168fbbc9e
          name: 'Service state'
          mappings:
            - value: '0'
              newvalue: Down
            - value: '1'
              newvalue: Up
  triggers:
    - uuid: 366fa3cfcba94e038ad77c2f5a2649a2
      expression: 'last(/MSSQL by Zabbix agent 2/mssql.forwarded_records_sec.rate) * 100 > 10 * last(/MSSQL by Zabbix agent 2/mssql.batch_requests_sec.rate)'
      name: 'Too frequently using pointers'
      priority: WARNING
      description: 'Rows with VARCHAR columns can experience expansion when VARCHAR values are updated with a longer string. In the case where the row cannot fit in the existing page, the row migrates, and access to the row will traverse a pointer. This only happens on heaps (tables without clustered indexes). In cases where clustered indexes cannot be used, drop non-clustered indexes, build a clustered index to reorg pages and rows, drop the clustered index, then recreate non-clustered indexes.'
      tags:
        - tag: scope
          value: performance
    - uuid: 274773f4bb9d4af798e8922b5054226b
      expression: 'last(/MSSQL by Zabbix agent 2/mssql.readahead_pages_sec.rate) > {$MSSQL.PERCENT_READAHEAD.MAX} / 100 * last(/MSSQL by Zabbix agent 2/mssql.page_reads_sec.rate)'
      name: 'Too many physical reads occurring'
      priority: WARNING
      description: 'If this value makes up even a sizeable minority of the total "Page Reads/sec" (say, greater than 20% of the total page reads), you may have too many physical reads occurring.'
      tags:
        - tag: scope
          value: performance
  graphs:
    - uuid: 7d06995b2daf4496a3f4856e5c562e59
      name: 'MSSQL: Access methods'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.forwarded_records_sec.rate
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.full_scans_sec.rate
        - sortorder: '2'
          color: 00611C
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.index_searches_sec.rate
        - sortorder: '3'
          color: F7941D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.page_splits_sec.rate
        - sortorder: '4'
          color: FC6EA3
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.workfiles_created_sec.rate
        - sortorder: '5'
          color: 6C59DC
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.worktables_created_sec.rate
    - uuid: c1df070c49994a9fb3b15a3f9f15cf59
      name: 'MSSQL: Auto-params'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.autoparam_attempts_sec.rate
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.failed_autoparams_sec.rate
        - sortorder: '2'
          color: 00611C
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.safe_autoparams_sec.rate
        - sortorder: '3'
          color: F7941D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.unsafe_autoparams_sec.rate
    - uuid: 15b49ae51375483182c927a06c7e094a
      name: 'MSSQL: Cache objects'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.cache_object_counts
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.cache_objects_in_use
    - uuid: b3422c184eb7476e97e5b0f09bb70160
      name: 'MSSQL: Compilations'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.sql_compilations_sec.rate
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.sql_recompilations_sec.rate
    - uuid: ecc056aa9b4d4da3b41f6ad7ec8d600c
      name: 'MSSQL: Database pages'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.database_pages
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.target_pages
    - uuid: b1decdef518c43c3bc8813b028e04025
      name: 'MSSQL: Errors'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.errors_sec.rate
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.offline_errors_sec.rate
        - sortorder: '2'
          color: 00611C
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.info_errors_sec.rate
        - sortorder: '3'
          color: F7941D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.kill_connection_errors_sec.rate
        - sortorder: '4'
          color: FC6EA3
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.user_errors_sec.rate
    - uuid: 6dff1806a75343a6a81a94c5fee6a632
      name: 'MSSQL: Locks'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.lock_requests_sec.rate
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.lock_timeouts_sec.rate
        - sortorder: '2'
          color: 00611C
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.number_deadlocks_sec.rate
        - sortorder: '3'
          color: F7941D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.lock_waits_sec.rate
        - sortorder: '4'
          color: FC6EA3
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.average_wait_time
    - uuid: ef6f803fbb744e8faa04673b5e3f5b38
      name: 'MSSQL: Logins per second and Logouts per second'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.logins_sec.rate
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.logouts_sec.rate
    - uuid: b68986ff810f4336ad907d550f973b56
      name: 'MSSQL: Memory/cache load'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.cache_hit_ratio
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.buffer_cache_hit_ratio
    - uuid: 335d81ea81384d1e85de7527598ce3f6
      name: 'MSSQL: Memory grants outstanding and pending'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.memory_grants_outstanding
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.memory_grants_pending
    - uuid: 157c122b6d474441b4f95b91beee5730
      name: 'MSSQL: Page life expectancy'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.page_life_expectancy
    - uuid: fff870597f4649d2a72941fb972d201c
      name: 'MSSQL: Pages'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.page_lookups_sec.rate
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.page_reads_sec.rate
        - sortorder: '2'
          color: 00611C
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.page_writes_sec.rate
        - sortorder: '3'
          color: F7941D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.readahead_pages_sec.rate
        - sortorder: '4'
          color: FC6EA3
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.checkpoint_pages_sec.rate
        - sortorder: '5'
          color: 6C59DC
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.free_list_stalls_sec.rate
        - sortorder: '6'
          color: C7A72D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.lazy_writes_sec.rate
    - uuid: 3297eadad79f4f7d8597f0eccb0af926
      name: 'MSSQL: Processes blocked'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.processes_blocked
    - uuid: 418dc893929c4f62beb361dcaaa6c56a
      name: 'MSSQL: Server memory'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.target_server_memory
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.total_server_memory
        - sortorder: '2'
          color: 00611C
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.granted_workspace_memory
        - sortorder: '3'
          color: F7941D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.maximum_workspace_memory
    - uuid: 31467ce0afe24b2fa1a547f28eebc24a
      name: 'MSSQL: Transactions'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.transactions_sec.rate
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.batch_requests_sec.rate
    - uuid: e35b61f7a547477cba31c9949be61f5e
      name: 'MSSQL: Waits per second'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.latch_waits_sec.rate
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.lock_waits_sec.rate
    - uuid: ae485dce95974187a046b9743f32f629
      name: 'MSSQL: Wait times'
      graph_items:
        - color: 199C0D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.average_latch_wait_time
        - sortorder: '1'
          color: F63100
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.total_latch_wait_time
        - sortorder: '2'
          color: 00611C
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.average_wait_time
        - sortorder: '3'
          color: F7941D
          item:
            host: 'MSSQL by Zabbix agent 2'
            key: mssql.lock_wait_time
