zabbix_export:
  version: '7.0'
  template_groups:
    - uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6
      name: Templates/Applications
  templates:
    - uuid: f445dac89ff74deabaae9dcb84815998
      template: 'GitLab by HTTP'
      name: 'GitLab by HTTP'
      description: |
        Get GitLab metrics by HTTP agent from Prometheus metrics endpoint.
        
        To access the metrics, the client IP address must be explicitly allowed. See https://docs.gitlab.com/ee/administration/monitoring/ip_whitelist.html.
        Or second method, using token variable from http://your.gitlab.address/admin/health_check (fill {$GITLAB.HEALTH.TOKEN} macro with variable path like "?token=your_token").
        Don't forget change macros {$GITLAB.URL}.
        Some metrics may not be collected depending on your Gitlab instance version and configuration. See (Gitlab's documentation[)https://docs.gitlab.com/ee/administration/monitoring/prometheus/gitlab_metrics.html] for further information about its metric collection.
        
        You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback
        
        Generated by official Zabbix template tool "Templator"
      vendor:
        name: Zabbix
        version: 7.0-0
      groups:
        - name: Templates/Applications
      items:
        - uuid: 43a26551b0a6460cac3c43138ec5fd33
          name: 'Cache: Misses rate, total'
          type: DEPENDENT
          key: gitlab.cache.misses_total.rate
          value_type: FLOAT
          description: 'The cache read miss count.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_cache_misses_total")].value.sum()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: cache
        - uuid: 9c507412d4544a37bdad49ba47c48302
          name: 'Cache: Operations rate, total'
          type: DEPENDENT
          key: gitlab.cache.operations_total.rate
          value_type: FLOAT
          description: 'The count of cache operations.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_cache_operations_total")].value.sum()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: cache
        - uuid: 2d46dc855ca741839cfe1a19e0dc892f
          name: 'Database: Connection pool, busy'
          type: DEPENDENT
          key: gitlab.database.connection_pool_busy
          description: 'Connections to the main database in use where the owner is still alive.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_database_connection_pool_busy" && @.labels.class == "ActiveRecord::Base")].value.sum()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: database
        - uuid: 6ee7a1d3ab20463d83602b751381d821
          name: 'Database: Connection pool, current'
          type: DEPENDENT
          key: gitlab.database.connection_pool_connections
          description: 'Current connections to the main database in the pool.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_database_connection_pool_connections" && @.labels.class == "ActiveRecord::Base")].value.sum()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: database
        - uuid: 561a1f54c98d4a2b828fe644961404be
          name: 'Database: Connection pool, dead'
          type: DEPENDENT
          key: gitlab.database.connection_pool_dead
          description: 'Connections to the main database in use where the owner is not alive.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_database_connection_pool_dead" && @.labels.class == "ActiveRecord::Base")].value.sum()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: database
        - uuid: 3a0b5c8de88b41fa9ebf6f3fca63833e
          name: 'Database: Connection pool, idle'
          type: DEPENDENT
          key: gitlab.database.connection_pool_idle
          description: 'Connections to the main database not in use.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_database_connection_pool_idle" && @.labels.class == "ActiveRecord::Base")].value.sum()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: database
        - uuid: fd1458232de34981a9a00be820e123f1
          name: 'Database: Connection pool, size'
          type: DEPENDENT
          key: gitlab.database.connection_pool_size
          description: 'Total connection to the main database pool capacity.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_database_connection_pool_size" && @.labels.class == "ActiveRecord::Base")].value.sum()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: database
        - uuid: 501a2f646ced4207a32a24e900310440
          name: 'Database: Connection pool, waiting'
          type: DEPENDENT
          key: gitlab.database.connection_pool_waiting
          description: 'Threads currently waiting on this queue.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_database_connection_pool_waiting" && @.labels.class == "ActiveRecord::Base")].value.sum()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: database
        - uuid: 71a5f82d11914b12a86008bfd488fb1e
          name: Version
          type: DEPENDENT
          key: gitlab.deployments.version
          value_type: CHAR
          description: 'Version of the GitLab instance.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="deployments")].labels.version.first()'
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 3h
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: application
          triggers:
            - uuid: 88d7ceb3a683436da666e8802b2d29b5
              expression: 'last(/GitLab by HTTP/gitlab.deployments.version,#1)<>last(/GitLab by HTTP/gitlab.deployments.version,#2) and length(last(/GitLab by HTTP/gitlab.deployments.version))>0'
              name: 'Version has changed'
              event_name: 'Version has changed (new version: {ITEM.VALUE})'
              priority: INFO
              description: 'The GitLab version has changed. Acknowledge to close the problem manually.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
        - uuid: 3e409938aba24445a11012bcbf8aa113
          name: 'User CAPTCHA logins failed, total'
          type: DEPENDENT
          key: gitlab.failed_login_captcha_total
          description: 'Counter of failed CAPTCHA attempts during login.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="failed_login_captcha_total")].value.first()'
              error_handler: DISCARD_VALUE
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: sessions
        - uuid: 2aa509b84dc14026b8ff8ed473add2d2
          name: 'Get instance metrics'
          type: HTTP_AGENT
          key: gitlab.get_metrics
          history: '0'
          value_type: TEXT
          preprocessing:
            - type: CHECK_NOT_SUPPORTED
              parameters:
                - '-1'
            - type: PROMETHEUS_TO_JSON
              parameters:
                - ''
          url: '{$GITLAB.URL}/-/metrics{$GITLAB.HEALTH.TOKEN}'
          tags:
            - tag: component
              value: raw
        - uuid: 3ff4d9793af94d339ca225aaf9200554
          name: 'HTTP requests rate, 4xx'
          type: DEPENDENT
          key: gitlab.http.requests.4xx.rate
          value_type: FLOAT
          units: rps
          description: 'Number of handle failures of requests with code 4XX.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="http_requests_total" && @.labels.status =~ ''4..'' )].value.sum()'
              error_handler: DISCARD_VALUE
            - type: CHANGE_PER_SECOND
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: requests
            - tag: http-code
              value: 4xx
        - uuid: d0fa18012d6a4b0ba6620b0ef6cb9aef
          name: 'HTTP requests rate, 5xx'
          type: DEPENDENT
          key: gitlab.http.requests.5xx.rate
          value_type: FLOAT
          units: rps
          description: 'Number of handle failures of requests with HTTP-code 5xx.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="http_requests_total" && @.labels.status =~ ''5..'' )].value.sum()'
              error_handler: DISCARD_VALUE
            - type: CHANGE_PER_SECOND
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: requests
            - tag: http-code
              value: 5xx
          triggers:
            - uuid: 7021e3b0b49a4990a1d8ce356b7ae130
              expression: 'min(/GitLab by HTTP/gitlab.http.requests.5xx.rate,5m)>{$GITLAB.HTTP.FAIL.MAX.WARN}'
              name: 'Too many HTTP requests failures'
              event_name: 'Too many HTTP requests failures (over {$GITLAB.HTTP.FAIL.MAX.WARN} for 5m)'
              priority: WARNING
              description: '"Too many requests failed on GitLab instance with 5xx HTTP code"'
              tags:
                - tag: scope
                  value: availability
        - uuid: 2d739e4bedb24b50ab6adfdfdeb39da9
          name: 'HTTP requests rate, total'
          type: DEPENDENT
          key: gitlab.http.requests.rate
          value_type: FLOAT
          units: rps
          description: 'Number of requests received into the system.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="http_requests_total")].value.sum()'
            - type: CHANGE_PER_SECOND
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: requests
        - uuid: c48920e302ff4b9ab16f45b67775b440
          name: 'Application server status'
          type: HTTP_AGENT
          key: gitlab.liveness
          description: 'Checks whether the application server is running. This probe is used to know if Rails Controllers are not deadlocked due to a multi-threading.'
          valuemap:
            name: 'GitLab healthcheck'
          preprocessing:
            - type: CHECK_NOT_SUPPORTED
              parameters:
                - '-1'
              error_handler: CUSTOM_VALUE
              error_handler_params: '{"status": "failed"}'
            - type: JSONPATH
              parameters:
                - $.status
            - type: BOOL_TO_DECIMAL
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 30m
          url: '{$GITLAB.URL}/-/liveness{$GITLAB.HEALTH.TOKEN}'
          tags:
            - tag: component
              value: health
          triggers:
            - uuid: 2f1eb8d6c89a4d8cbda0e951d3f6a109
              expression: 'last(/GitLab by HTTP/gitlab.liveness)=0'
              name: 'Liveness check was failed'
              priority: HIGH
              description: 'The application server is not running or Rails Controllers are deadlocked.'
              tags:
                - tag: scope
                  value: availability
        - uuid: 7ef7142babfd4bc2b5b25be541c0511f
          name: 'Pipelines: Auto DevOps pipelines, total'
          type: DEPENDENT
          key: gitlab.pipeline.auto_devops_completed.total
          description: 'Counter of completed Auto DevOps pipelines.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="auto_devops_pipelines_completed_total")].value.sum()'
              error_handler: DISCARD_VALUE
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: pipelines
        - uuid: 0ffa0a5c108644508252a03469e4f394
          name: 'Pipelines: Auto DevOps pipelines, failed'
          type: DEPENDENT
          key: gitlab.pipeline.auto_devops_completed_total.failed
          description: 'Counter of completed Auto DevOps pipelines with status "failed".'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="auto_devops_pipelines_completed_total" && @.labels.status == "failed")].value.sum()'
              error_handler: DISCARD_VALUE
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: pipelines
        - uuid: f4265a3167a245c4998958106f6ee265
          name: 'Pipelines: Created, total'
          type: DEPENDENT
          key: gitlab.pipeline.created_total
          description: 'Counter of pipelines created.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="pipelines_created_total")].value.sum()'
              error_handler: DISCARD_VALUE
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: pipelines
        - uuid: 23cb22f8f81e461c86f72a92cdfde7a5
          name: 'Pipelines: CI/CD creation duration'
          type: DEPENDENT
          key: gitlab.pipeline.pipeline_creation
          value_type: FLOAT
          units: s
          description: 'The sum of the time in seconds it takes to create a CI/CD pipeline.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_ci_pipeline_creation_duration_seconds_sum")].value.first()'
              error_handler: DISCARD_VALUE
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: pipelines
        - uuid: 91c3acbb82524244a1ac400587641ffa
          name: 'Pipelines: Pipelines: CI/CD creation count'
          type: DEPENDENT
          key: gitlab.pipeline.pipeline_creation.count
          value_type: FLOAT
          description: 'The count of the time it takes to create a CI/CD pipeline.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_ci_pipeline_creation_duration_seconds_count")].value.first()'
              error_handler: DISCARD_VALUE
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: pipelines
        - uuid: c80453c338814951a9e97d9f37e7d68f
          name: 'Pipelines: Processing events, total'
          type: DEPENDENT
          key: gitlab.pipeline.processing_events_total
          description: 'Total amount of pipeline processing events.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_ci_pipeline_processing_events_total")].value.first()'
              error_handler: DISCARD_VALUE
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: pipelines
        - uuid: 794a8d7f474d490c96e714dac810140d
          name: 'Instance readiness check'
          type: HTTP_AGENT
          key: gitlab.readiness
          description: 'The readiness probe checks whether the GitLab instance is ready to accept traffic via Rails Controllers.'
          valuemap:
            name: 'GitLab healthcheck'
          preprocessing:
            - type: CHECK_NOT_SUPPORTED
              parameters:
                - '-1'
              error_handler: CUSTOM_VALUE
              error_handler_params: '{"master_check":[{"status":"failed"}]}'
            - type: JSONPATH
              parameters:
                - '$.master_check[0].status'
            - type: BOOL_TO_DECIMAL
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 30m
          url: '{$GITLAB.URL}/-/readiness{$GITLAB.HEALTH.TOKEN}'
          tags:
            - tag: component
              value: health
          triggers:
            - uuid: 11ff325698534dcd8bbaa12c86704069
              expression: 'last(/GitLab by HTTP/gitlab.readiness)=0'
              name: 'Gitlab instance is not able to accept traffic'
              priority: HIGH
              dependencies:
                - name: 'Liveness check was failed'
                  expression: 'last(/GitLab by HTTP/gitlab.liveness)=0'
              tags:
                - tag: scope
                  value: availability
        - uuid: 173b8d5e108f471fbf4c1267dcb9cc37
          name: 'Redis: Client exceptions rate, cache'
          type: DEPENDENT
          key: gitlab.redis.client_exceptions.cache.rate
          value_type: FLOAT
          description: 'Number of Redis client exceptions per second. (Instance: cache)'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_redis_client_exceptions_total" && @.labels.storage == "cache")].value.first()'
              error_handler: DISCARD_VALUE
            - type: CHANGE_PER_SECOND
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: redis
          triggers:
            - uuid: a7e460f174fd4e16b2358fd3867390b4
              expression: 'min(/GitLab by HTTP/gitlab.redis.client_exceptions.cache.rate,5m)>{$GITLAB.REDIS.FAIL.MAX.WARN}'
              name: 'Too many Redis cache client exceptions'
              event_name: 'Too many Redis cache client exceptions (over {$GITLAB.REDIS.FAIL.MAX.WARN} for 5m)'
              priority: WARNING
              description: '"Too many  Redis client exceptions during the requests to  Redis instance cache."'
              tags:
                - tag: scope
                  value: availability
        - uuid: 0bff591252dc4cc497527afb1f7d96b2
          name: 'Redis: Client exceptions rate, queues'
          type: DEPENDENT
          key: gitlab.redis.client_exceptions.queues.rate
          value_type: FLOAT
          description: 'Number of Redis client exceptions per second. (Instance: queues)'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_redis_client_exceptions_total" && @.labels.storage == "queues")].value.first()'
              error_handler: DISCARD_VALUE
            - type: CHANGE_PER_SECOND
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: redis
          triggers:
            - uuid: 36ec79901f324f27992ea68274eedb71
              expression: 'min(/GitLab by HTTP/gitlab.redis.client_exceptions.queues.rate,5m)>{$GITLAB.REDIS.FAIL.MAX.WARN}'
              name: 'Too many Redis queues client exceptions'
              event_name: 'Too many Redis queues client exceptions (over {$GITLAB.REDIS.FAIL.MAX.WARN} for 5m)'
              priority: WARNING
              description: '"Too many  Redis client exceptions during the requests to  Redis instance queues."'
              tags:
                - tag: scope
                  value: availability
        - uuid: 800b429ea1d044e6a685bc51706f8547
          name: 'Redis: client exceptions rate, shared_state'
          type: DEPENDENT
          key: gitlab.redis.client_exceptions.shared_state.rate
          value_type: FLOAT
          description: 'Number of Redis client exceptions per second. (Instance: shared_state)'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_redis_client_exceptions_total" && @.labels.storage == "shared_state")].value.first()'
              error_handler: DISCARD_VALUE
            - type: CHANGE_PER_SECOND
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: redis
          triggers:
            - uuid: b475d6ecbc564f9b8f7fe9b24bcdf013
              expression: 'min(/GitLab by HTTP/gitlab.redis.client_exceptions.shared_state.rate,5m)>{$GITLAB.REDIS.FAIL.MAX.WARN}'
              name: 'Too many Redis shared_state client exceptions'
              event_name: 'Too many Redis shared_state client exceptions (over {$GITLAB.REDIS.FAIL.MAX.WARN} for 5m)'
              priority: WARNING
              description: '"Too many  Redis client exceptions during the requests to  Redis instance shared_state."'
              tags:
                - tag: scope
                  value: availability
        - uuid: 7dcc638e1c174dd5975f85551211a3ba
          name: 'Redis: Client requests rate, cache'
          type: DEPENDENT
          key: gitlab.redis.client_requests.cache.rate
          value_type: FLOAT
          units: rps
          description: 'Number of Redis client requests per second. (Instance: cache)'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_redis_client_requests_total" && @.labels.storage == "cache")].value.first()'
              error_handler: DISCARD_VALUE
            - type: CHANGE_PER_SECOND
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: redis
        - uuid: f613303925db46958d181c379e22f942
          name: 'Redis: Client requests rate, queues'
          type: DEPENDENT
          key: gitlab.redis.client_requests.queues.rate
          value_type: FLOAT
          units: rps
          description: 'Number of Redis client requests per second. (Instance: queues)'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_redis_client_requests_total" && @.labels.storage == "queues")].value.first()'
              error_handler: DISCARD_VALUE
            - type: CHANGE_PER_SECOND
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: redis
        - uuid: 3ae46654b46e4c769a7308879bc64890
          name: 'Redis: Client requests rate, shared_state'
          type: DEPENDENT
          key: gitlab.redis.client_requests.shared_state.rate
          value_type: FLOAT
          units: rps
          description: 'Number of Redis client requests per second. (Instance: shared_state)'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_redis_client_requests_total" && @.labels.storage == "shared_state")].value.first()'
              error_handler: DISCARD_VALUE
            - type: CHANGE_PER_SECOND
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: redis
        - uuid: 950d48c3b5034e769b2bf6a7110ece02
          name: 'Ruby: File descriptors opened, avg'
          type: DEPENDENT
          key: gitlab.ruby.file_descriptors.avg
          value_type: FLOAT
          description: 'Average number of opened file descriptors.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="ruby_file_descriptors")].value.avg()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: fds
        - uuid: 67ed35c3f5f444b2b10fb462838758ac
          name: 'Ruby: File descriptors opened, max'
          type: DEPENDENT
          key: gitlab.ruby.file_descriptors.max
          value_type: FLOAT
          description: 'Maximum number of opened file descriptors.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="ruby_file_descriptors")].value.max()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: fds
        - uuid: b1576e2b47bd448293c3e88885bfc87e
          name: 'Ruby: File descriptors opened, min'
          type: DEPENDENT
          key: gitlab.ruby.file_descriptors.min
          value_type: FLOAT
          description: 'Minimum number of opened file descriptors.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="ruby_file_descriptors")].value.min()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: fds
        - uuid: 98feff3bfe0d4a9ea88733ae8fef8769
          name: 'Ruby: CPU  usage per second'
          type: DEPENDENT
          key: gitlab.ruby.process_cpu_seconds.rate
          value_type: FLOAT
          units: s
          description: 'Average CPU time util in seconds.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="ruby_process_cpu_seconds_total")].value.avg()'
              error_handler: DISCARD_VALUE
            - type: CHANGE_PER_SECOND
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: cpu
        - uuid: 91ed44c1738745119e892eadb88b417f
          name: 'Ruby: File descriptors, max'
          type: DEPENDENT
          key: gitlab.ruby.process_max_fds
          value_type: FLOAT
          description: 'Maximum number of open file descriptors per process.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="ruby_process_max_fds")].value.avg()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: fds
        - uuid: 8de84a159b864ed791c07835aa0ec39a
          name: 'Ruby: RSS memory, avg'
          type: DEPENDENT
          key: gitlab.ruby.process_resident_memory_bytes.avg
          value_type: FLOAT
          units: B
          description: 'Average RSS Memory usage in bytes.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="ruby_process_resident_memory_bytes")].value.avg()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: memory
        - uuid: 27285f7d3c344d68b7945edde3cb8ecf
          name: 'Ruby: RSS memory, max'
          type: DEPENDENT
          key: gitlab.ruby.process_resident_memory_bytes.max
          value_type: FLOAT
          units: B
          description: 'Maximum RSS Memory usage in bytes.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="ruby_process_resident_memory_bytes")].value.max()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: memory
        - uuid: 0cf8d21bcb8d4fb7880784dc82ba8229
          name: 'Ruby: RSS memory, min'
          type: DEPENDENT
          key: gitlab.ruby.process_resident_memory_bytes.min
          value_type: FLOAT
          units: B
          description: 'Minimum RSS Memory usage in bytes.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="ruby_process_resident_memory_bytes")].value.min()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: memory
        - uuid: 68267621a5e14494bf57225e71e05ff4
          name: 'Ruby: First process start time'
          type: DEPENDENT
          key: gitlab.ruby.process_start_time_seconds.first
          units: unixtime
          description: 'Minimum UNIX timestamp of ruby processes start time.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="ruby_process_start_time_seconds")].value.min()'
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 3h
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: application
        - uuid: be88084e9b544af68f78c013caf6b59a
          name: 'Ruby: Last process start time'
          type: DEPENDENT
          key: gitlab.ruby.process_start_time_seconds.last
          units: unixtime
          description: 'Maximum UNIX timestamp ruby processes start time.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="ruby_process_start_time_seconds")].value.max()'
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 3h
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: application
        - uuid: f23849bd9716444f8bf65d3964e3be15
          name: 'Ruby: Running_threads'
          type: DEPENDENT
          key: gitlab.ruby.threads_running
          description: 'Number of running Ruby threads.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="gitlab_ruby_threads_running_threads")].value.sum()'
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: system
          triggers:
            - uuid: e24496a9499447b2bbdf70f85bbf2113
              expression: 'nodata(/GitLab by HTTP/gitlab.ruby.threads_running,30m)=1'
              name: 'Failed to fetch info data'
              event_name: 'Failed to fetch info data (or no data for 30m)'
              priority: WARNING
              description: 'Zabbix has not received a metrics data for the last 30 minutes'
              manual_close: 'YES'
              dependencies:
                - name: 'Liveness check was failed'
                  expression: 'last(/GitLab by HTTP/gitlab.liveness)=0'
              tags:
                - tag: scope
                  value: availability
        - uuid: 56af56ccc23d44bcb636871229fbcde2
          name: 'User CAPTCHA logins, total'
          type: DEPENDENT
          key: gitlab.successful_login_captcha_total
          description: 'Counter of successful CAPTCHA attempts during login.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="successful_login_captcha_total")].value.first()'
              error_handler: DISCARD_VALUE
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: sessions
        - uuid: 95deb1dc93d34935930b154d1222c8a4
          name: 'Transactions per second'
          type: DEPENDENT
          key: gitlab.transactions.rate
          value_type: FLOAT
          units: rps
          description: 'Transactions per second (gitlab_transaction_* metrics).'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=~"gitlab_transaction_.*_count_total")].value.sum()'
              error_handler: DISCARD_VALUE
            - type: CHANGE_PER_SECOND
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: transactions
        - uuid: d1a346edc81d487da115105333e8992d
          name: 'Upload file does not exist'
          type: DEPENDENT
          key: gitlab.upload_file_does_not_exist
          description: 'Number of times an upload record could not find its file.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="upload_file_does_not_exist")].value.first()'
              error_handler: DISCARD_VALUE
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: application
        - uuid: 62c9c5a8886e431bb04c40a8045fe207
          name: 'User logins, total'
          type: DEPENDENT
          key: gitlab.user_session_logins_total
          description: 'Counter of how many users have logged in since GitLab was started or restarted.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$[?(@.name=="user_session_logins_total")].value.first()'
              error_handler: DISCARD_VALUE
          master_item:
            key: gitlab.get_metrics
          tags:
            - tag: component
              value: sessions
      discovery_rules:
        - uuid: acd3e31daa8f497bb1ce0f91d104d928
          name: 'Puma metrics discovery'
          type: HTTP_AGENT
          key: gitlab.puma.discovery
          delay: 3h
          description: 'Discovery of Puma specific metrics when Puma is used.'
          item_prototypes:
            - uuid: 6b6ebfe9326247c8a57fb8c96125bcee
              name: 'Active connections'
              type: DEPENDENT
              key: 'gitlab.puma.active_connections[{#SINGLETON}]'
              description: 'Number of puma threads processing a request.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name==''puma_active_connections'')].value.sum()'
              master_item:
                key: gitlab.get_metrics
              tags:
                - tag: component
                  value: puma
            - uuid: 14194f273b4e47d98cfdcbefff64cc68
              name: 'Idle threads'
              type: DEPENDENT
              key: 'gitlab.puma.idle_threads[{#SINGLETON}]'
              description: 'The number of spawned puma threads which are not processing a request.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name==''puma_idle_threads'')].value.sum()'
              master_item:
                key: gitlab.get_metrics
              tags:
                - tag: component
                  value: puma
            - uuid: 33a1be2938e24ce2a3fb650efa4f98d6
              name: 'Killer terminations, total'
              type: DEPENDENT
              key: 'gitlab.puma.killer_terminations_total[{#SINGLETON}]'
              description: 'The number of workers terminated by PumaWorkerKiller.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name==''puma_killer_terminations_total'')].value.sum()'
                  error_handler: DISCARD_VALUE
              master_item:
                key: gitlab.get_metrics
              tags:
                - tag: component
                  value: puma
            - uuid: 7d93438afd73422d90b03e78b1c0f998
              name: 'Max threads'
              type: DEPENDENT
              key: 'gitlab.puma.max_threads[{#SINGLETON}]'
              description: 'The maximum number of puma worker threads.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name==''puma_max_threads'')].value.sum()'
              master_item:
                key: gitlab.get_metrics
              tags:
                - tag: component
                  value: puma
            - uuid: fe381c99c2464e95bac63da2df994b8a
              name: 'Pool capacity'
              type: DEPENDENT
              key: 'gitlab.puma.pool_capacity[{#SINGLETON}]'
              description: 'The number of requests the puma worker is capable of taking right now.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name==''puma_pool_capacity'')].value.sum()'
              master_item:
                key: gitlab.get_metrics
              tags:
                - tag: component
                  value: puma
            - uuid: 8c375d8323f9459a8b2a6254b7afed5b
              name: 'Queued connections'
              type: DEPENDENT
              key: 'gitlab.puma.queued_connections[{#SINGLETON}]'
              description: 'The number of connections in that puma worker''s "todo" set waiting for a worker thread.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name==''puma_queued_connections'')].value.sum()'
              master_item:
                key: gitlab.get_metrics
              tags:
                - tag: component
                  value: puma
              trigger_prototypes:
                - uuid: 356c8dc915d84382b3f8dfe45b901f46
                  expression: 'min(/GitLab by HTTP/gitlab.puma.queued_connections[{#SINGLETON}],15m)>{$GITLAB.PUMA.QUEUE.MAX.WARN}'
                  name: 'Puma is queueing requests'
                  event_name: 'Puma is queueing requests (over {$GITLAB.PUMA.QUEUE.MAX.WARN}% for 15m)'
                  priority: WARNING
                  tags:
                    - tag: scope
                      value: performance
            - uuid: 02b27e8a68884f399a8359ed6967d614
              name: 'Running threads'
              type: DEPENDENT
              key: 'gitlab.puma.running[{#SINGLETON}]'
              description: 'The number of running puma threads.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name==''puma_running'')].value.sum()'
              master_item:
                key: gitlab.get_metrics
              tags:
                - tag: component
                  value: puma
            - uuid: b43e4275dd64427bb6eb4890c556c513
              name: 'Running workers'
              type: DEPENDENT
              key: 'gitlab.puma.running_workers[{#SINGLETON}]'
              description: 'The number of booted puma workers.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name==''puma_running_workers'')].value.sum()'
              master_item:
                key: gitlab.get_metrics
              tags:
                - tag: component
                  value: puma
            - uuid: 0169db2581ba48579edc911cad4b41d7
              name: 'Stale workers'
              type: DEPENDENT
              key: 'gitlab.puma.stale_workers[{#SINGLETON}]'
              description: 'The number of old puma workers.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name==''puma_stale_workers'')].value.sum()'
              master_item:
                key: gitlab.get_metrics
              tags:
                - tag: component
                  value: puma
            - uuid: 19e0149a6de846c7a39b305037469ecb
              name: Workers
              type: DEPENDENT
              key: 'gitlab.puma.workers[{#SINGLETON}]'
              description: 'Total number of puma workers.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name==''puma_workers'')].value.sum()'
              master_item:
                key: gitlab.get_metrics
              tags:
                - tag: component
                  value: puma
          trigger_prototypes:
            - uuid: b69fe81449bd4b6cb6dfddeb333e8898
              expression: 'min(/GitLab by HTTP/gitlab.puma.active_connections[{#SINGLETON}],5m)/last(/GitLab by HTTP/gitlab.puma.max_threads[{#SINGLETON}])*100>{$GITLAB.PUMA.UTILIZATION.MAX.WARN}'
              name: 'Puma instance thread utilization is too high'
              event_name: 'Puma instance thread utilization is too high (over {$GITLAB.PUMA.UTILIZATION.MAX.WARN}% for 5m)'
              priority: WARNING
              tags:
                - tag: scope
                  value: capacity
          url: '{$GITLAB.URL}/-/metrics{$GITLAB.HEALTH.TOKEN}'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - puma_workers
            - type: JAVASCRIPT
              parameters:
                - 'return JSON.stringify(value != "[]" ? [{''{#SINGLETON}'': ''''}] : []);'
        - uuid: 912723d1837641cf9b84996788bd6b54
          name: 'Unicorn metrics discovery'
          type: HTTP_AGENT
          key: gitlab.unicorn.discovery
          delay: 3h
          description: 'DiscoveryUnicorn specific metrics, when Unicorn is used.'
          item_prototypes:
            - uuid: 7461ee7fad7f4597825644b80cce2ec2
              name: 'Unicorn: Active connections'
              type: DEPENDENT
              key: 'gitlab.unicorn.active_connections[{#SINGLETON}]'
              description: 'The number of active Unicorn connections.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name==''unicorn_active_connections'')].value.sum()'
              master_item:
                key: gitlab.get_metrics
              tags:
                - tag: component
                  value: unicorn
            - uuid: 31e0f545c6c6428c8f9f46426cb97ca7
              name: 'Unicorn: Queued connections'
              type: DEPENDENT
              key: 'gitlab.unicorn.queued_connections[{#SINGLETON}]'
              description: 'The number of queued Unicorn connections.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name==''unicorn_queued_connections'')].value.sum()'
              master_item:
                key: gitlab.get_metrics
              tags:
                - tag: component
                  value: unicorn
              trigger_prototypes:
                - uuid: 84142d0996c0420c8b07c7e17d1b9a47
                  expression: 'min(/GitLab by HTTP/gitlab.unicorn.queued_connections[{#SINGLETON}],5m)>{$GITLAB.UNICORN.QUEUE.MAX.WARN}'
                  name: 'Unicorn is queueing requests'
                  event_name: 'Unicorn is queueing requests (over {$GITLAB.UNICORN.QUEUE.MAX.WARN}% for 5m)'
                  priority: WARNING
                  tags:
                    - tag: scope
                      value: performance
            - uuid: 44a12fd548b742069cae53a78f7f8ab0
              name: 'Unicorn: Workers'
              type: DEPENDENT
              key: 'gitlab.unicorn.unicorn_workers[{#SINGLETON}]'
              description: 'The number of Unicorn workers'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name==''unicorn_workers'')].value.sum()'
              master_item:
                key: gitlab.get_metrics
              tags:
                - tag: component
                  value: unicorn
          trigger_prototypes:
            - uuid: 731bf8eb456c49739a3fcd7aec24c7d7
              expression: 'min(/GitLab by HTTP/gitlab.unicorn.active_connections[{#SINGLETON}],5m)/last(/GitLab by HTTP/gitlab.unicorn.unicorn_workers[{#SINGLETON}])*100>{$GITLAB.UNICORN.UTILIZATION.MAX.WARN}'
              name: 'Unicorn worker utilization is too high'
              event_name: 'Unicorn worker utilization is too high (over {$GITLAB.UNICORN.UTILIZATION.MAX.WARN}% for 5m)'
              priority: WARNING
              tags:
                - tag: scope
                  value: capacity
          url: '{$GITLAB.URL}/-/metrics{$GITLAB.HEALTH.TOKEN}'
          preprocessing:
            - type: PROMETHEUS_TO_JSON
              parameters:
                - unicorn_workers
              error_handler: DISCARD_VALUE
            - type: JAVASCRIPT
              parameters:
                - 'return JSON.stringify(value != "[]" ? [{''{#SINGLETON}'': ''''}] : []);'
      tags:
        - tag: class
          value: application
        - tag: target
          value: gitlab
      macros:
        - macro: '{$GITLAB.HEALTH.TOKEN}'
          description: 'The token path for Gitlab health check. Example `?token=your_token`'
        - macro: '{$GITLAB.HTTP.FAIL.MAX.WARN}'
          value: '2'
          description: 'The maximum number of HTTP request failures for a trigger expression.'
        - macro: '{$GITLAB.OPEN.FDS.MAX.WARN}'
          value: '90'
          description: 'The maximum percentage of used file descriptors for a trigger expression.'
        - macro: '{$GITLAB.PUMA.QUEUE.MAX.WARN}'
          value: '1'
          description: 'The maximum number of Puma queued requests for a trigger expression.'
        - macro: '{$GITLAB.PUMA.UTILIZATION.MAX.WARN}'
          value: '90'
          description: 'The maximum percentage of Puma thread utilization for a trigger expression.'
        - macro: '{$GITLAB.REDIS.FAIL.MAX.WARN}'
          value: '2'
          description: 'The maximum number of Redis client exceptions for a trigger expression.'
        - macro: '{$GITLAB.UNICORN.QUEUE.MAX.WARN}'
          value: '1'
          description: 'The maximum number of Unicorn queued requests for a trigger expression.'
        - macro: '{$GITLAB.UNICORN.UTILIZATION.MAX.WARN}'
          value: '90'
          description: 'The maximum percentage of Unicorn workers utilization for a trigger expression.'
        - macro: '{$GITLAB.URL}'
          value: 'http://localhost'
          description: 'URL of a GitLab instance.'
      valuemaps:
        - uuid: 3b40391bb8b6472e9c3fd8e1f001fe04
          name: 'GitLab healthcheck'
          mappings:
            - value: '0'
              newvalue: Failed
            - value: '1'
              newvalue: Ok
  triggers:
    - uuid: 4ac37991b2ca4edd9329fff1e752b05b
      expression: 'min(/GitLab by HTTP/gitlab.ruby.file_descriptors.max,5m)/last(/GitLab by HTTP/gitlab.ruby.process_max_fds)*100>{$GITLAB.OPEN.FDS.MAX.WARN}'
      name: 'Current number of open files is too high'
      event_name: 'Current number of open files is too high (over {$GITLAB.OPEN.FDS.MAX.WARN}% for 5m)'
      priority: WARNING
      tags:
        - tag: scope
          value: capacity
  graphs:
    - uuid: f6c30e56b54e478ea2708e302197b83b
      name: 'GitLab: Database: Connection pool'
      graph_items:
        - color: 199C0D
          item:
            host: 'GitLab by HTTP'
            key: gitlab.database.connection_pool_busy
        - sortorder: '1'
          color: F63100
          item:
            host: 'GitLab by HTTP'
            key: gitlab.database.connection_pool_connections
        - sortorder: '2'
          color: 00611C
          item:
            host: 'GitLab by HTTP'
            key: gitlab.database.connection_pool_dead
        - sortorder: '3'
          color: F7941D
          item:
            host: 'GitLab by HTTP'
            key: gitlab.database.connection_pool_idle
        - sortorder: '4'
          color: FC6EA3
          item:
            host: 'GitLab by HTTP'
            key: gitlab.database.connection_pool_waiting
        - sortorder: '5'
          drawtype: BOLD_LINE
          color: 6C59DC
          item:
            host: 'GitLab by HTTP'
            key: gitlab.database.connection_pool_size
    - uuid: ebffb6f63cf5400ab6a518612c5e857f
      name: 'GitLab: HTTP requests rate'
      graph_items:
        - color: 199C0D
          item:
            host: 'GitLab by HTTP'
            key: gitlab.http.requests.4xx.rate
        - sortorder: '1'
          color: F63100
          item:
            host: 'GitLab by HTTP'
            key: gitlab.http.requests.5xx.rate
        - sortorder: '2'
          color: 00611C
          item:
            host: 'GitLab by HTTP'
            key: gitlab.http.requests.rate
    - uuid: 14d4a4cc843e4c15bd72b680c18ffdd6
      name: 'GitLab: Redis requests rate'
      graph_items:
        - drawtype: BOLD_LINE
          color: 199C0D
          item:
            host: 'GitLab by HTTP'
            key: gitlab.redis.client_requests.shared_state.rate
        - sortorder: '1'
          drawtype: BOLD_LINE
          color: F63100
          item:
            host: 'GitLab by HTTP'
            key: gitlab.redis.client_requests.cache.rate
        - sortorder: '2'
          drawtype: BOLD_LINE
          color: 00611C
          item:
            host: 'GitLab by HTTP'
            key: gitlab.redis.client_requests.queues.rate
        - sortorder: '3'
          color: F7941D
          yaxisside: RIGHT
          item:
            host: 'GitLab by HTTP'
            key: gitlab.redis.client_exceptions.shared_state.rate
        - sortorder: '4'
          color: FC6EA3
          yaxisside: RIGHT
          item:
            host: 'GitLab by HTTP'
            key: gitlab.redis.client_exceptions.cache.rate
        - sortorder: '5'
          color: 6C59DC
          yaxisside: RIGHT
          item:
            host: 'GitLab by HTTP'
            key: gitlab.redis.client_exceptions.queues.rate
    - uuid: 2eafabff82a240258c50a77655f77fd9
      name: 'GitLab: Ruby: File descriptors'
      graph_items:
        - color: 199C0D
          item:
            host: 'GitLab by HTTP'
            key: gitlab.ruby.file_descriptors.avg
        - sortorder: '1'
          color: F63100
          item:
            host: 'GitLab by HTTP'
            key: gitlab.ruby.file_descriptors.max
        - sortorder: '2'
          color: 00611C
          item:
            host: 'GitLab by HTTP'
            key: gitlab.ruby.file_descriptors.min
        - sortorder: '3'
          drawtype: BOLD_LINE
          color: F7941D
          item:
            host: 'GitLab by HTTP'
            key: gitlab.ruby.process_max_fds
    - uuid: 1c6b8a24e76f4b7390e8e8742afbedec
      name: 'GitLab: Ruby: RSS memory'
      graph_items:
        - color: 199C0D
          item:
            host: 'GitLab by HTTP'
            key: gitlab.ruby.process_resident_memory_bytes.avg
        - sortorder: '1'
          color: F63100
          item:
            host: 'GitLab by HTTP'
            key: gitlab.ruby.process_resident_memory_bytes.min
        - sortorder: '2'
          color: 00611C
          item:
            host: 'GitLab by HTTP'
            key: gitlab.ruby.process_resident_memory_bytes.max
