Kubernetes에서 NGINX 메트릭 수집 및 OTel, Prometheus, Grafana 모니터링 구성 가이드

Kubernetes 환경에서 웹 트래픽을 처리하는 핵심 컴포넌트인 NGINX는 서비스의 안정성과 성능을 유지하기 위해 실시간 모니터링이 필수적입니다.
하지만 NGINX OSS는 기본적으로 메트릭 기능이 제한적이며, NGINX Plus는 별도의 Prometheus 모듈을 통해 풍부한 메트릭을 제공합니다.

이 문서에서는 NGINX의 메트릭을 수집하여 OpenTelemetry Collector → Prometheus → Grafana로 전달하고, 이를 시각화하는 엔드 투 엔드(end-to-end) 모니터링 구성 방법을 설명합니다.
또한 NGINX OSS와 NGINX Plus 각각의 배포 방식과 메트릭 처리 구조를 Kubernetes 환경 기준으로 실제 YAML 예제와 함께 다룹니다.

목차


1.환경 구성
2.NGINX 배포
2-1. NGINX Plus 이미지 생성
2-2. NGINX OSS 배포
2-3. NGINX Plus 배포
3. OpenTelemetry Collector 구성
4. Prometheus 구성
5. Grafana 구성 및 대시보드 설정
6. 결론

1. 환경 구성

  • Kubernetes : v1.32.2
  • Prometheus : 3.4.0 
  • NGINX Prometheus Exporter : 1.4
  • NGINX Plus : R34
  • NGINX OSS : 1.27.5

2. NGINX 배포

NGINX OSS의 경우는 자체적으로 Metrics을 제공하지 않기 때문에 NGINX Prometheus Exporter를 사용하여 Metrics을 노출할 수 있습니다. (제한적인 Metrics)

NGINX Plus의 경우 Prometheus 모듈을 제공하고 있기 때문에 Exporter를 사용하지 않고 Metrics을 노출할 수 있습니다. (많은 Metrics)

2-1. NGINX Plus 이미지 생성 (NGINX Plus)

NGINX 상업용 버전(Plus)을 직접 사용해 보시려면 30일 무료 평가판을 신청하거나 NGINX STORE에 연락하여 논의하십시오.

Docker Image를 빌드하여 Prometheus Module을 활성화 합니다.

ARG RELEASE=bookworm
FROM debian:${RELEASE}-slim

LABEL maintainer="NGINX Docker Maintainers <docker-maint@nginx.com>"

# Define NGINX versions for NGINX Plus and NGINX Plus modules
# Uncomment this block and the versioned nginxPackages block in the main RUN
# instruction to install a specific release
# ARG RELEASE
# ENV NGINX_VERSION=32
# ENV NGINX_PKG_RELEASE=1~${RELEASE}
# ENV NJS_VERSION=0.8.4
# ENV NJS_PKG_RELEASE=1~${RELEASE}
# ENV OTEL_VERSION=0.1.0
# ENV OTEL_PKG_RELEASE=1~${RELEASE}
# ENV PKG_RELEASE=1~${RELEASE}

# Download your NGINX license certificate and key from the F5 customer portal (https://account.f5.com) and copy to the build context
RUN --mount=type=secret,id=nginx-crt,dst=nginx-repo.crt \
    --mount=type=secret,id=nginx-key,dst=nginx-repo.key \
    set -x \
# Create nginx user/group first, to be consistent throughout Docker variants
    && groupadd --system --gid 101 nginx \
    && useradd --system --gid nginx --no-create-home --home /nonexistent --comment "nginx user" --shell /bin/false --uid 101 nginx \
    && apt-get update \
    && apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg1 lsb-release \
    && \
    NGINX_GPGKEYS="573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 8540A6F18833A80E9C1653A42FD21310B49F6B46 9E9BE90EACBCDE69FE9B204CBCDCD8A38D88A2B3"; \
    NGINX_GPGKEY_PATH=/usr/share/keyrings/nginx-archive-keyring.gpg; \
    export GNUPGHOME="$(mktemp -d)"; \
    found=''; \
    for NGINX_GPGKEY in $NGINX_GPGKEYS; do \
        for server in \
            hkp://keyserver.ubuntu.com:80 \
            pgp.mit.edu \
        ; do \
            echo "Fetching GPG key $NGINX_GPGKEY from $server"; \
            gpg1 --keyserver "$server" --keyserver-options timeout=10 --recv-keys "$NGINX_GPGKEY" && found=yes && break; \
        done; \
        test -z "$found" && echo >&2 "error: failed to fetch GPG key $NGINX_GPGKEY" && exit 1; \
    done; \
    gpg1 --export "$NGINX_GPGKEYS" > "$NGINX_GPGKEY_PATH" ; \
    rm -rf "$GNUPGHOME"; \
    apt-get remove --purge --auto-remove -y gnupg1 && rm -rf /var/lib/apt/lists/* \
# Install the latest release of NGINX Plus and/or NGINX Plus modules (written and maintained by F5)
# Uncomment any desired module packages to install the latest release or use the versioned package format to specify a release
# For an exhaustive list of supported modules and how to install them, see https://docs.nginx.com/nginx/admin-guide/dynamic-modules/dynamic-modules/
    && nginxPackages=" \
        nginx-plus \
        nginx-plus-module-prometheus \ # NGINX Plus Prometheus 모듈 설치
        # nginx-plus=${NGINX_VERSION}-${NGINX_PKG_RELEASE} \
        # nginx-plus-module-geoip \
        # nginx-plus-module-geoip=${NGINX_VERSION}-${PKG_RELEASE} \
        # nginx-plus-module-image-filter \
        # nginx-plus-module-image-filter=${NGINX_VERSION}-${PKG_RELEASE} \
        # nginx-plus-module-njs \
        # nginx-plus-module-njs=${NGINX_VERSION}+${NJS_VERSION}-${NJS_PKG_RELEASE} \
        nginx-plus-module-otel \
        # nginx-plus-module-otel=${NGINX_VERSION}+${OTEL_VERSION}-${OTEL_PKG_RELEASE} \
        # nginx-plus-module-perl \
        # nginx-plus-module-perl=${NGINX_VERSION}-${PKG_RELEASE} \
        # nginx-plus-module-xslt \
        # nginx-plus-module-xslt=${NGINX_VERSION}-${PKG_RELEASE} \
    " \
    && echo "Acquire::https::pkgs.nginx.com::Verify-Peer \"true\";" > /etc/apt/apt.conf.d/90nginx \
    && echo "Acquire::https::pkgs.nginx.com::Verify-Host \"true\";" >> /etc/apt/apt.conf.d/90nginx \
    && echo "Acquire::https::pkgs.nginx.com::SslCert     \"/etc/ssl/nginx/nginx-repo.crt\";" >> /etc/apt/apt.conf.d/90nginx \
    && echo "Acquire::https::pkgs.nginx.com::SslKey      \"/etc/ssl/nginx/nginx-repo.key\";" >> /etc/apt/apt.conf.d/90nginx \
    && echo "deb [signed-by=$NGINX_GPGKEY_PATH] https://pkgs.nginx.com/plus/debian `lsb_release -cs` nginx-plus\n" > /etc/apt/sources.list.d/nginx-plus.list \
    && mkdir -p /etc/ssl/nginx \
    && cat nginx-repo.crt > /etc/ssl/nginx/nginx-repo.crt \
    && cat nginx-repo.key > /etc/ssl/nginx/nginx-repo.key \
    && apt-get update \
    && apt-get install --no-install-recommends --no-install-suggests -y $nginxPackages curl gettext-base \
    && apt-get remove --purge -y lsb-release \
    && apt-get remove --purge --auto-remove -y && rm -rf /var/lib/apt/lists/* /etc/apt/sources.list.d/nginx-plus.list \
    && rm -rf /etc/apt/apt.conf.d/90nginx /etc/ssl/nginx \
# Forward request logs to Docker log collector
    && ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log

EXPOSE 80

STOPSIGNAL SIGQUIT

CMD ["nginx", "-g", "daemon off;"]

위의 Dockerfile을 저장한 후 빌드하여 이미지를 레지스트리에 배포합니다.

2-2. NGINX OSS 배포

NGINX OSS는 Prometheus 모듈을 사용할 수 없기 때문에 NGINX Prometheus Exporter를 Sidecar 형태로 붙여서 배포합니다.

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    app: nginx
  ports:
    - name: pages
      port: 80
      targetPort: 80
    - name: exporter 
      port: 9113
      targetPort: 9113
  type: NodePort # NodePort로 배포하여 확인합니다.
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
data:
  default.conf: |
    server {
        listen       80;
        access_log  /var/log/nginx/host.access.log  main;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    }
    server {
        listen 8080; 
        location /metrics {
            stub_status; # NGINX 기본 상태를 확인할 수 있는 stub_status를 통해 Exporter에서 해당 정보를 가지고 Metrics 노출할 수 있도록 구성합니다.
        }
    }
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.27.5
          ports:
            - containerPort: 80
          volumeMounts:
            - name: config-volume # NGINX 기본 구성을 Configmap을 이용하여 변경합니다.
              mountPath: /etc/nginx/conf.d/default.conf 
              subPath: default.conf
        - name: nginx-exporter
          image: nginx/nginx-prometheus-exporter:latest
          args:
            - "-nginx.scrape-uri=http://localhost:8080/metrics" # stub_status의 Endpoint를 지정합니다.
          ports:
            - containerPort: 9113 # nginx-exporter에서 사용하는 9113 포트를 지정합니다.
      volumes:
        - name: config-volume
          configMap:
            name: nginx-config

위의 구성을 배포합니다.

kubectl apply -f nginx-oss.yaml -n [namespace]

NGINX OSS의 배포 현황은 아래와 같습니다.

배포가 완료된 후 9113 포트의 /metrics 엔드포인트에 접속하게 되면 NGINX 기본 정보의 Metrics을 확인할 수 있습니다.

2-3. NGINX Plus 배포

NGINX 상업용 버전(Plus)을 직접 사용해 보시려면 30일 무료 평가판을 신청하거나 NGINX STORE에 연락하여 논의하십시오.

NGINX Plus는 구성 전 JWT 라이선스 파일을 Secret으로 지정하여 Deployment에서 가져올 수 있도록 지정해야합니다.

NGINX Plus의 Manifest를 구성합니다.

apiVersion: v1
kind: Service
metadata:
  name: nginx-plus-svc
spec:
  selector:
    app: nginx-plus
  ports:
    - name: pages
      port: 80
      targetPort: 80
    - name: metrics
      port: 8080
      targetPort: 8080
  type: NodePort 
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-plus  
spec:
  replicas: 1 
  selector:
    matchLabels:
      app: nginx-plus
  template:
    metadata:
      labels:
        app: nginx-plus
    spec:
      containers:
        - name: nginx-plus
          image: [NGINX Plus Image]
          ports:
            - containerPort: 80
            - containerPort: 8080
          volumeMounts:
            - name: config-volume
              mountPath: /etc/nginx/nginx.conf
              subPath: nginx.conf
            - name: nginx-plus-license # NGINX Plus의 라이선스 인증용입니다.
              mountPath: /etc/nginx/license.jwt
              subPath: license.jwt
      imagePullSecrets:
        - name: regcred
      volumes:
        - name: config-volume
          configMap:
            name: nginx-conf
        - name: nginx-plus-license
          secret:
            secretName: jwt-secret
    
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-conf
data:
  nginx.conf: |
    load_module modules/ngx_http_js_module.so; # javascript 모듈을 불러옵니다.
    user    nginx;
    worker_processes    auto;

    error_log    /var/log/nginx/error.log notice;
    pid          /var/run/nginx.pid;

    events {
        worker_connections    1024;
    }   

    http {
        include       /etc/nginx/mime.types;
        log_format  main    '$remote_addr - $server_name - $remote_user [$time_local] "$request" '
                    '$status response_body_size : $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for" "$server_port"';
        access_log    /var/log/nginx/access.log  main;
        js_import /usr/share/nginx-plus-module-prometheus/prometheus.js; # prometheus 모듈을 사용하기 위해 prometheus.js을 가져옵니다.
        server {
            listen 80; 
            location / { 
                root /usr/share/nginx/html;
                index index.html index.htm;
            }
        }
        server {
            listen 8080;
            location = /metrics {
                js_content prometheus.metrics; # 해당 endpoint에 메트릭을 활성화합니다.
            }
            location /api {
                api; # Prometheus 모듈을 사용하기 위해 NGINX Plus의 자체 API를 활성화합니다.
            }
       }    
    }   

NGINX Plus를 배포합니다.

kubectl apply -f nginx-plus.yaml -n [namespace]

NGINX Plus 배포 현황은 아래와 같습니다.

NGINX OSS와 달리 NGINX Plus에서는 자체 API를 제공하고 있기 때문에 여러가지 메트릭을 확인할 수 있습니다.

3. OpenTelemetry 구성 및 배포

OpenTelemetry를 배포하여 NGINX의 메트릭을 수집합니다.

apiVersion: v1
kind: ConfigMap
metadata:
  name: otel-collector-conf
  labels:
    app: opentelemetry
data:
  otel-collector-config.yaml: |
    receivers:
      prometheus:
        config:
          scrape_configs:
          - job_name: 'nginx'
            static_configs:
            - targets: ['nginx-plus-svc.nginx-plus.svc.cluster.local:8080']  # NGINX Metrics Kube DNS URL (NGINX Plus)      
           # - targets: ['nginx-svc.nginx.svc.cluster.local:9113'] # NGINX Exporter Metrics KubeDNS URL (NGINX OSS)

    exporters:
      prometheus:
        endpoint: "0.0.0.0:9110" # Prometheus에서 Metrics을 수집할 수 있도록 OpenTelemetry에서 9110 포트로 /metrics 엔드 포인트에서 NGINX 메트릭을 노출합니다.

    processors: # processors를 이용하여 Metrics 데이터를 수정할 수 있습니다. 예제에서는 Metrics 데이터를 수정하지 않았습니다.
      batch:

    service:
      pipelines: # 파이프 라인을 이용하여 NGINX 메트릭을 수집한 후 Prometheus로 전달합니다.
        metrics:
          receivers: [prometheus]
          processors: [batch]
          exporters: [prometheus]

---
apiVersion: v1
kind: Service
metadata:
  name: otel-collector-svc
  labels:
    app: opentelemetry
spec:
  selector:
    app: opentelemetry
  ports:
  - name: export-prometheus # Prometheus에서 수집할 수 있도록 지정합니다.
    port: 9110 
    targetPort: 9110
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: otel-collector
  labels:
    app: opentelemetry
spec:
  selector:
    matchLabels:
      app: opentelemetry
  replicas: 
  template:
    metadata:
      labels:
        app: opentelemetry
    spec:
      containers:
      - command:
          - "/otelcol"
          - "--config=/conf/otel-collector-config.yaml"
        image: otel/opentelemetry-collector:latest
        name: otel-collector
        ports:
        - containerPort: 9110 
        volumeMounts:
        - name: otel-collector-config
          mountPath: /conf/otel-collector-config.yaml
          subPath: otel-collector-config.yaml
      volumes:
      - name: otel-collector-config
        configMap:
          name: otel-collector-conf

OpenTelemetry를 배포합니다.

(NGINX Plus)

(NGINX OSS)

OpenTelemetry의 Port로 /metrics 엔드포인트로 접속하게 된다면 NGINX의 메트릭을 확인할 수 있습니다.

(NGINX Plus)

(NGINX OSS)

OpenTelemetry의 Metrics를 Prometheus가 전달 받아 Grafana로 전달할 수 있도록 Prometheus를 배포합니다.

4. Prometheus 구성 및 배포

Proemtheus를 배포하여 OpenTelemetry의 Metrics를 전달 받을 수 있도록 구성합니다.

apiVersion: v1
kind: Service
metadata:
  name: prometheus-service
spec:
  selector:
    app: prometheus
  ports:
    - port: 9090
      targetPort: 9090
  type: NodePort
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-conf
  labels:
    name: prometheus-conf
data:
  prometheus.yml: |-
    global:
      scrape_interval: 1s # 1초 단위로 Metrics를 가져옵니다.
    scrape_configs:
      - job_name: 'nginx'
        static_configs:
        - targets: ["otel-collector-svc.nginx-plus.svc.cluster.local:9110"] # OpenTelemetry의 KubeDNS URL을 작성합니다. (NGINX Plus)
        - targets: ["otel-collector-svc.nginx-plus.svc.cluster.local:9110"] # OpenTelemetry의 KubeDNS URL을 작성합니다. (NGINX OSS)

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus-deployment
  labels:
    app: prometheus
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prometheus
  template:
    metadata:
      labels:
        app: prometheus
    spec:
      containers:
        - name: prometheus
          image: prom/prometheus
          ports:
            - containerPort: 9090
          volumeMounts:
            - name: prometheus-config
              mountPath: /etc/prometheus/prometheus.yml
              subPath: prometheus.yml
      volumes:
        - name: prometheus-config
          configMap:
            name: prometheus-conf

Promethues를 배포합니다.

(NGINX Plus)

(NGINX OSS)

Prometheus에서 NGINX Metrics을 확인할 수 있습니다.

(NGINX Plus)

(NGINX OSS)

아래와 같이 Prometheus의 쿼리를 통해 Metrics을 확인할 수 있습니다.

(NGINX Plus)

(NGINX OSS)

Grafana를 배포하고 NGINX의 공식 Grafana 대시보드를 이용하여 메트릭을 시각화합니다.

5. Grafana 배포 및 대시보드 추가

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: grafana
  name: grafana
spec:
  selector:
    matchLabels:
      app: grafana
  template:
    metadata:
      labels:
        app: grafana
    spec:
      containers:
        - name: grafana
          image: grafana/grafana:latest
          imagePullPolicy: IfNotPresent
          ports:
          - containerPort: 3000
            name: http-grafana
            protocol: TCP 
---
apiVersion: v1
kind: Service
metadata:
  name: grafana
spec:
  selector:
    app: grafana
  ports:
    - port: 3000
      targetPort: 3000
  type: NodePort 

Grafana를 배포합니다.

Grafana에 접속하여 Prometheus Data Source를 연동합니다. (초기 ID, PW : ADMIN)

Connection -> Data Sources -> Prometheus 로 이동하여 배포했었던 Prometheus의 KubeDNS URL을 등록합니다.

등록완료 후 NGINX의 공식 Dashboard를 이용하여 Kubernetes 환경의 NGINX의 메트릭 시각화하여 확인할 수 있습니다

NGINX OSS Dashboard

NGINX Plus Dashboard

NGINX Plus의 대쉬보드가 안될경우 아래의 수정된 Dashboard를 사용합니다.

NGINX Plus Dashboard (수정)
{
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": {
          "type": "datasource",
          "uid": "grafana"
        },
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "target": {
          "limit": 100,
          "matchAny": false,
          "tags": [],
          "type": "dashboard"
        },
        "type": "dashboard"
      }
    ]
  },
  "description": "Nginx plus native observability, through the dynamic module api output nginx plus real-time status data, including global statistics, ssl status, server / location / upstream status, upstream server active health check results. Enhance the reliability of nginx plus business operation, you can Inherit to any environment, including kubernetes.",
  "editable": true,
  "fiscalYearStartMonth": 0,
  "graphTooltip": 0,
  "id": 3,
  "links": [],
  "panels": [
    {
      "collapsed": false,
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 0
      },
      "id": 40,
      "panels": [],
      "title": "Global Performance",
      "type": "row"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "continuous-RdYlGr"
          },
          "custom": {
            "align": "auto",
            "cellOptions": {
              "type": "auto"
            },
            "filterable": true,
            "inspect": false
          },
          "decimals": 1,
          "mappings": [
            {
              "options": {
                "0": {
                  "index": 1,
                  "text": "Down"
                },
                "1": {
                  "index": 0,
                  "text": "Up"
                }
              },
              "type": "value"
            }
          ],
          "max": 1,
          "min": 0,
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              }
            ]
          },
          "unit": "short"
        },
        "overrides": [
          {
            "matcher": {
              "id": "byName",
              "options": "Status"
            },
            "properties": [
              {
                "id": "custom.cellOptions",
                "value": {
                  "mode": "gradient",
                  "type": "color-background"
                }
              },
              {
                "id": "custom.width",
                "value": 100
              }
            ]
          },
          {
            "matcher": {
              "id": "byName",
              "options": "address"
            },
            "properties": [
              {
                "id": "custom.width",
                "value": 150
              }
            ]
          },
          {
            "matcher": {
              "id": "byName",
              "options": "version"
            },
            "properties": [
              {
                "id": "custom.width",
                "value": 150
              }
            ]
          },
          {
            "matcher": {
              "id": "byName",
              "options": "build"
            },
            "properties": [
              {
                "id": "custom.width",
                "value": 150
              }
            ]
          }
        ]
      },
      "gridPos": {
        "h": 9,
        "w": 8,
        "x": 0,
        "y": 1
      },
      "id": 39,
      "options": {
        "cellHeight": "sm",
        "footer": {
          "countRows": false,
          "enablePagination": false,
          "fields": "",
          "reducer": [
            "sum"
          ],
          "show": false
        },
        "frameIndex": 1,
        "showHeader": true
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(up{ job=\"$job\"}) by (instance) ",
          "format": "table",
          "instant": true,
          "interval": "",
          "legendFormat": "__auto",
          "range": false,
          "refId": "A"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "nginxplus_nginx_config_generation{ job=\"$job\"}",
          "format": "table",
          "hide": false,
          "instant": true,
          "interval": "",
          "legendFormat": "__auto",
          "range": false,
          "refId": "B"
        }
      ],
      "title": "NGINX INSTANCE Status",
      "transformations": [
        {
          "id": "merge",
          "options": {}
        },
        {
          "id": "organize",
          "options": {
            "excludeByName": {
              "Time": true,
              "Value #B": true,
              "__name__": true,
              "job": true,
              "ppid": true,
              "version": false
            },
            "indexByName": {
              "Time": 0,
              "Value #A": 5,
              "Value #B": 9,
              "__name__": 6,
              "address": 4,
              "build": 2,
              "instance": 1,
              "job": 7,
              "ppid": 8,
              "version": 3
            },
            "renameByName": {
              "Time": "",
              "Value": "Status",
              "Value #A": "Status",
              "__name__": "",
              "server": "Server",
              "upstream": "Upstream"
            }
          }
        }
      ],
      "type": "table"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 9,
        "w": 8,
        "x": 8,
        "y": 1
      },
      "id": 47,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "nginxplus_http_requests_current",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Current {{instance}}",
          "range": true,
          "refId": "C"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_http_requests_total{job=\"$job\"}[$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Request/s {{instance}}",
          "range": true,
          "refId": "D"
        }
      ],
      "title": "NGINX INSTANCE HTTP Performance",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 9,
        "w": 8,
        "x": 16,
        "y": 1
      },
      "id": 43,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "nginxplus_connections_active{job=\"$job\"}",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "curConn - {{instance}}",
          "range": true,
          "refId": "G"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_connections_accepted{job=\"$job\"}[$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "CPS {{instance}}",
          "range": true,
          "refId": "A"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_connections_idle{job=\"$job\"}[$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Idle {{instance}}",
          "range": true,
          "refId": "B"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_connections_dropped{job=\"$job\"}[$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Drop - {{instance}}",
          "range": true,
          "refId": "C"
        }
      ],
      "title": "NGINX Plus Connections",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "continuous-RdYlGr"
          },
          "mappings": [],
          "max": 1,
          "min": 0,
          "thresholds": {
            "mode": "percentage",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 5,
        "w": 4,
        "x": 0,
        "y": 10
      },
      "id": 60,
      "options": {
        "colorMode": "value",
        "graphMode": "none",
        "justifyMode": "auto",
        "orientation": "auto",
        "percentChangeColorMode": "standard",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showPercentChange": false,
        "textMode": "auto",
        "wideLayout": true
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "expr": "count(nginxplus_nginx_config_generation_total{job='$job'})",
          "instant": false,
          "range": true,
          "refId": "A"
        }
      ],
      "title": "INSTANCE Counts",
      "type": "stat"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "continuous-RdYlGr"
          },
          "mappings": [],
          "max": 1,
          "min": 0,
          "thresholds": {
            "mode": "percentage",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 5,
        "w": 4,
        "x": 4,
        "y": 10
      },
      "id": 62,
      "options": {
        "colorMode": "value",
        "graphMode": "none",
        "justifyMode": "auto",
        "orientation": "auto",
        "percentChangeColorMode": "standard",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showPercentChange": false,
        "textMode": "auto",
        "wideLayout": true
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "expr": "count(nginxplus_server_zone_requests_total{job='$job'})",
          "instant": false,
          "range": true,
          "refId": "A"
        }
      ],
      "title": "Server Zone Counts",
      "type": "stat"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "continuous-RdYlGr"
          },
          "mappings": [],
          "max": 1,
          "min": 0,
          "thresholds": {
            "mode": "percentage",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 5,
        "w": 4,
        "x": 8,
        "y": 10
      },
      "id": 61,
      "options": {
        "colorMode": "value",
        "graphMode": "none",
        "justifyMode": "auto",
        "orientation": "auto",
        "percentChangeColorMode": "standard",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showPercentChange": false,
        "textMode": "auto",
        "wideLayout": true
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "expr": "count(nginxplus_location_zone_requests_total{job='$job'})",
          "instant": false,
          "range": true,
          "refId": "A"
        }
      ],
      "title": "Location Counts",
      "type": "stat"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "continuous-RdYlGr"
          },
          "mappings": [],
          "max": 1,
          "min": 0,
          "thresholds": {
            "mode": "percentage",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "percentunit"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 5,
        "w": 4,
        "x": 12,
        "y": 10
      },
      "id": 54,
      "options": {
        "colorMode": "value",
        "graphMode": "none",
        "justifyMode": "auto",
        "orientation": "auto",
        "percentChangeColorMode": "standard",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showPercentChange": false,
        "textMode": "auto",
        "wideLayout": true
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "expr": "count(nginxplus_upstream_server_state{job='$job', server=~\".+\", upstream=~\".+\" } == 1) / count(nginxplus_upstream_server_state{job='$job'})",
          "instant": false,
          "range": true,
          "refId": "A"
        }
      ],
      "title": "Upstream Server Availability",
      "type": "stat"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "continuous-RdYlGr"
          },
          "mappings": [],
          "max": 1,
          "min": 0,
          "thresholds": {
            "mode": "percentage",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 5,
        "w": 4,
        "x": 16,
        "y": 10
      },
      "id": 55,
      "options": {
        "colorMode": "value",
        "graphMode": "none",
        "justifyMode": "auto",
        "orientation": "auto",
        "percentChangeColorMode": "standard",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showPercentChange": false,
        "textMode": "auto",
        "wideLayout": true
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "expr": "count(nginxplus_upstream_server_state{job='$job'})",
          "instant": false,
          "range": true,
          "refId": "A"
        }
      ],
      "title": "Upstream Server Counts",
      "type": "stat"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "fixedColor": "semi-dark-red",
            "mode": "fixed"
          },
          "mappings": [],
          "thresholds": {
            "mode": "percentage",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 5,
        "w": 4,
        "x": 20,
        "y": 10
      },
      "id": 59,
      "options": {
        "colorMode": "background_solid",
        "graphMode": "none",
        "justifyMode": "auto",
        "orientation": "auto",
        "percentChangeColorMode": "standard",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showPercentChange": false,
        "textMode": "auto",
        "wideLayout": true
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "expr": "count(nginxplus_upstream_server_state{job='$job'} != 1 )",
          "instant": false,
          "range": true,
          "refId": "A"
        }
      ],
      "title": "Upstream Server Unhealthy",
      "type": "stat"
    },
    {
      "collapsed": false,
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 15
      },
      "id": 48,
      "panels": [],
      "title": "Instance SSL Performance",
      "type": "row"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              }
            ]
          },
          "unit": "TPS"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 9,
        "w": 8,
        "x": 0,
        "y": 16
      },
      "id": 45,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "rate(nginxplus_ssl_handshakes_total{instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Handshakes",
          "range": true,
          "refId": "C"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_ssl_session_reuses{instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Session Reuses",
          "range": true,
          "refId": "D"
        }
      ],
      "title": "SSL Handshake Successfully",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              }
            ]
          },
          "unit": "TPS"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 9,
        "w": 8,
        "x": 8,
        "y": 16
      },
      "id": 46,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "rate(nginxplus_ssl_handshake_timeout_total{instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Handshake Timeout",
          "range": true,
          "refId": "G"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_ssl_handshakes_failed{instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Handshake Failed",
          "range": true,
          "refId": "A"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_ssl_no_common_cipher{instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "No Common Cipher",
          "range": true,
          "refId": "B"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_ssl_no_common_protocol{instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "No Common Prototocol",
          "range": true,
          "refId": "C"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_ssl_peer_rejected_cert{instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Rejected Cert",
          "range": true,
          "refId": "D"
        }
      ],
      "title": "SSL Handshake Failed",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              }
            ]
          },
          "unit": "TPS"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 9,
        "w": 8,
        "x": 16,
        "y": 16
      },
      "id": 49,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "rate(nginxplus_ssl_verify_failures_expired_cert_total{instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "interval": "",
          "legendFormat": "Expired Cert",
          "range": true,
          "refId": "E"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_ssl_verify_failures_no_cert{instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "No Cert",
          "range": true,
          "refId": "F"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_ssl_verify_failures_other{instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Other",
          "range": true,
          "refId": "H"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_ssl_verify_failures_revoked_cert{instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Revoked Cert",
          "range": true,
          "refId": "I"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_ssl_verify_failures_hostname_mismatch{instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Hostname Mismatch",
          "range": true,
          "refId": "J"
        }
      ],
      "title": "SSL Verify Failures",
      "type": "timeseries"
    },
    {
      "collapsed": false,
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 25
      },
      "id": 36,
      "panels": [],
      "title": "Server Status",
      "type": "row"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "fixedColor": "semi-dark-red",
            "mode": "fixed"
          },
          "custom": {
            "align": "auto",
            "cellOptions": {
              "type": "auto"
            },
            "filterable": false,
            "inspect": false
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              }
            ]
          },
          "unit": "short"
        },
        "overrides": [
          {
            "matcher": {
              "id": "byName",
              "options": "4xx"
            },
            "properties": [
              {
                "id": "custom.cellOptions",
                "value": {
                  "mode": "gradient",
                  "type": "color-background"
                }
              }
            ]
          },
          {
            "matcher": {
              "id": "byName",
              "options": "5xx"
            },
            "properties": [
              {
                "id": "custom.cellOptions",
                "value": {
                  "mode": "gradient",
                  "type": "color-background"
                }
              }
            ]
          }
        ]
      },
      "gridPos": {
        "h": 7,
        "w": 24,
        "x": 0,
        "y": 26
      },
      "id": 33,
      "options": {
        "cellHeight": "sm",
        "footer": {
          "countRows": false,
          "enablePagination": false,
          "fields": "",
          "reducer": [
            "sum"
          ],
          "show": false
        },
        "frameIndex": 0,
        "showHeader": true
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_server_zone_responses{server_zone=~\".+\", code=\"1xx\", instance=\"$instance\", job=\"$job\"}[$__range])) by (server_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "A"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_server_zone_responses{server_zone=~\".+\", code=\"2xx\", instance=\"$instance\", job=\"$job\"}[$__range])) by (server_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "B"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_server_zone_responses{server_zone=~\".+\", code=\"3xx\", instance=\"$instance\", job=\"$job\"}[$__range])) by (server_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "C"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_server_zone_responses{server_zone=~\".+\", code=\"4xx\", instance=\"$instance\", job=\"$job\"}[$__range])) by (server_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "D"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_server_zone_responses{server_zone=~\".+\", code=\"5xx\", instance=\"$instance\", job=\"$job\"}[$__range])) by (server_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "E"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_server_zone_requests{server_zone=~\".+\", instance=\"$instance\", job=\"$job\"}[$__range])) by (server_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "F"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_server_zone_requests{server_zone=~\".+\", instance=\"$instance\", job=\"$job\"} [$__rate_interval]) ",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "G"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "nginxplus_server_zone_processing{server_zone=~\".+\", instance=\"$instance\", job=\"$job\"}",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "H"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_server_zone_received{server_zone=~\".+\", instance=\"$instance\", job=\"$job\"}[$__range])) by (server_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "I"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_server_zone_sent{server_zone=~\".+\", instance=\"$instance\", job=\"$job\"}[$__range])) by (server_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "J"
        }
      ],
      "title": "Server Requests / Responses",
      "transformations": [
        {
          "id": "merge",
          "options": {}
        },
        {
          "id": "organize",
          "options": {
            "excludeByName": {
              "Time": true,
              "__name__": true,
              "instance": true,
              "job": true
            },
            "indexByName": {
              "Time": 0,
              "Value #A": 5,
              "Value #B": 6,
              "Value #C": 7,
              "Value #D": 8,
              "Value #E": 9,
              "Value #F": 2,
              "Value #G": 3,
              "Value #H": 4,
              "__name__": 12,
              "instance": 10,
              "job": 11,
              "server_zone": 1
            },
            "renameByName": {
              "Value #A": "1xx",
              "Value #B": "2xx",
              "Value #C": "3xx",
              "Value #D": "4xx",
              "Value #E": "5xx",
              "Value #F": "Total",
              "Value #G": "Req/s",
              "Value #H": "Current",
              "Value #I": "Bytes Recvd",
              "Value #J": "Bytes Send",
              "instance": "",
              "job": "",
              "server_zone": ""
            }
          }
        }
      ],
      "type": "table"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              }
            ]
          },
          "unit": "reqps"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 9,
        "w": 24,
        "x": 0,
        "y": 33
      },
      "id": 34,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "rate(nginxplus_server_zone_requests_total{server_zone=~\".+\", instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "{{server_zone}}",
          "range": true,
          "refId": "G"
        }
      ],
      "title": "Server Zone - HTTP TPS",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 0,
        "y": 42
      },
      "id": 52,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "expr": "sum by (server_zone) (\r\n  rate(nginxplus_server_zone_responses_codes_total{code=~\"1[0-9][0-9]\"}[$__rate_interval])\r\n)",
          "hide": false,
          "instant": false,
          "legendFormat": "1xx - {{server_zone}}",
          "range": true,
          "refId": "A"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "expr": "sum by (server_zone) (\r\n  rate(nginxplus_server_zone_responses_codes_total{code=~\"2[0-9][0-9]\"}[$__rate_interval])\r\n)",
          "hide": false,
          "instant": false,
          "legendFormat": "2xx - {{server_zone}}",
          "range": true,
          "refId": "B"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "expr": "sum by (server_zone) (\r\n  rate(nginxplus_server_zone_responses_codes_total{code=~\"3[0-9][0-9]\"}[$__rate_interval])\r\n)",
          "hide": false,
          "instant": false,
          "legendFormat": "3xx - {{server_zone}}",
          "range": true,
          "refId": "C"
        }
      ],
      "title": "Server Zone - HTTP Response 1xx/2xx/3xx",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "fixedColor": "light-red",
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 25,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "normal"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          }
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 12,
        "y": 42
      },
      "id": 53,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum by (server_zone) (\r\n  rate(nginxplus_server_zone_responses_codes_total{code=~\"4[0-9][0-9]\"}[$__rate_interval])\r\n)",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "4xx - {{server_zone}}",
          "range": true,
          "refId": "D"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum by (server_zone) (\r\n  rate(nginxplus_server_zone_responses_codes_total{code=~\"5[0-9][0-9]\"}[$__rate_interval])\r\n)",
          "hide": false,
          "instant": false,
          "legendFormat": "5xx - {{server_zone}}",
          "range": true,
          "refId": "E"
        }
      ],
      "title": "Server Zone - HTTP Response 4xx/5xx",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              }
            ]
          },
          "unit": "bytes"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 0,
        "y": 50
      },
      "id": 38,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "rate(nginxplus_server_zone_received_total{server_zone=~\".+\"}[$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Bytes recvd {{server_zone}}",
          "range": true,
          "refId": "A"
        }
      ],
      "title": "Server Zone - Traffic In",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              }
            ]
          },
          "unit": "bytes"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 12,
        "y": 50
      },
      "id": 50,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "rate(nginxplus_server_zone_sent_total{server_zone=~\".+\", instance=\"$instance\", job=\"$job\"} [$__rate_interval])",
          "format": "time_series",
          "hide": false,
          "instant": false,
          "legendFormat": "Bytes send {{server_zone}}",
          "range": true,
          "refId": "G"
        }
      ],
      "title": "Server Zone - Traffic Out",
      "type": "timeseries"
    },
    {
      "collapsed": false,
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 58
      },
      "id": 35,
      "panels": [],
      "title": "Location Zone",
      "type": "row"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "fixedColor": "red",
            "mode": "fixed"
          },
          "custom": {
            "align": "auto",
            "cellOptions": {
              "type": "auto"
            },
            "filterable": false,
            "inspect": false
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              }
            ]
          },
          "unit": "short"
        },
        "overrides": [
          {
            "matcher": {
              "id": "byName",
              "options": "4xx"
            },
            "properties": [
              {
                "id": "custom.cellOptions",
                "value": {
                  "mode": "gradient",
                  "type": "color-background"
                }
              }
            ]
          },
          {
            "matcher": {
              "id": "byName",
              "options": "5xx"
            },
            "properties": [
              {
                "id": "custom.cellOptions",
                "value": {
                  "mode": "gradient",
                  "type": "color-background"
                }
              }
            ]
          }
        ]
      },
      "gridPos": {
        "h": 7,
        "w": 24,
        "x": 0,
        "y": 59
      },
      "id": 51,
      "options": {
        "cellHeight": "sm",
        "footer": {
          "countRows": false,
          "enablePagination": false,
          "fields": "",
          "reducer": [
            "sum"
          ],
          "show": false
        },
        "frameIndex": 0,
        "showHeader": true
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_location_zone_responses_total{location_zone=~\".+\", code=\"1xx\", instance=\"$instance\", job=\"$job\"}[$__range])) by (location_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "A"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_location_zone_responses_total{location_zone=~\".+\", code=\"2xx\", instance=\"$instance\", job=\"$job\"}[$__range])) by (location_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "B"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_location_zone_responses_total{location_zone=~\".+\", code=\"3xx\", instance=\"$instance\", job=\"$job\"}[$__range])) by (location_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "C"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_location_zone_responses_total{location_zone=~\".+\", code=\"4xx\", instance=\"$instance\", job=\"$job\"}[$__range])) by (location_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "D"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_location_zone_responses_total{location_zone=~\".+\", code=\"5xx\", instance=\"$instance\", job=\"$job\"}[$__range])) by (location_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "E"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_location_zone_requests_total{location_zone=~\".+\", instance=\"$instance\", job=\"$job\"}[$__range])) by (location_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "F"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "irate(nginxplus_location_zone_requests_total{location_zone=~\".+\", instance=\"$instance\", job=\"$job\"} [$__range]) ",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "G"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_location_zone_received_total{location_zone=~\".+\", instance=\"$instance\", job=\"$job\"}[$__range])) by (location_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "I"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(increase(nginxplus_location_zone_sent_total{location_zone=~\".+\", instance=\"$instance\", job=\"$job\"}[$__range])) by (location_zone)",
          "format": "table",
          "hide": false,
          "instant": true,
          "legendFormat": "__auto",
          "range": false,
          "refId": "J"
        }
      ],
      "title": "Location Requests / Responses",
      "transformations": [
        {
          "id": "merge",
          "options": {}
        },
        {
          "id": "organize",
          "options": {
            "excludeByName": {
              "Time": true,
              "__name__": true,
              "instance": true,
              "job": true
            },
            "indexByName": {
              "Time": 0,
              "Value #A": 4,
              "Value #B": 5,
              "Value #C": 6,
              "Value #D": 7,
              "Value #E": 8,
              "Value #F": 2,
              "Value #G": 3,
              "Value #I": 11,
              "Value #J": 12,
              "instance": 9,
              "job": 10,
              "location_zone": 1
            },
            "renameByName": {
              "Value #A": "1xx",
              "Value #B": "2xx",
              "Value #C": "3xx",
              "Value #D": "4xx",
              "Value #E": "5xx",
              "Value #F": "Total",
              "Value #G": "Req/s",
              "Value #H": "Current",
              "Value #I": "Bytes Recvd",
              "Value #J": "Bytes Send",
              "instance": "",
              "job": "",
              "location_zone": "Location Zone",
              "server_zone": ""
            }
          }
        }
      ],
      "type": "table"
    },
    {
      "collapsed": false,
      "gridPos": {
        "h": 1,
        "w": 24,
        "x": 0,
        "y": 66
      },
      "id": 37,
      "panels": [],
      "title": "Upstream Zone",
      "type": "row"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "continuous-GrYlRd"
          },
          "custom": {
            "align": "auto",
            "cellOptions": {
              "type": "auto"
            },
            "filterable": true,
            "inspect": false
          },
          "decimals": 1,
          "mappings": [
            {
              "options": {
                "1": {
                  "index": 0,
                  "text": "Up"
                },
                "2": {
                  "index": 1,
                  "text": "Draining"
                },
                "3": {
                  "index": 2,
                  "text": "Down"
                },
                "4": {
                  "index": 3,
                  "text": "Unavail"
                },
                "5": {
                  "index": 4,
                  "text": "Checking"
                },
                "6": {
                  "index": 5,
                  "text": "Unhealthy"
                }
              },
              "type": "value"
            }
          ],
          "max": 6,
          "min": 1,
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              }
            ]
          },
          "unit": "short"
        },
        "overrides": [
          {
            "matcher": {
              "id": "byName",
              "options": "Status"
            },
            "properties": [
              {
                "id": "custom.cellOptions",
                "value": {
                  "mode": "gradient",
                  "type": "color-background"
                }
              }
            ]
          }
        ]
      },
      "gridPos": {
        "h": 8,
        "w": 7,
        "x": 0,
        "y": 67
      },
      "id": 16,
      "options": {
        "cellHeight": "sm",
        "footer": {
          "countRows": false,
          "enablePagination": false,
          "fields": "",
          "reducer": [
            "sum"
          ],
          "show": false
        },
        "frameIndex": 1,
        "showHeader": true
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": false,
          "expr": "sum(nginxplus_upstream_server_state{server=~\".+\", upstream=~\".+\", instance=\"$instance\", job=\"$job\"}) by (upstream,server) ",
          "format": "table",
          "instant": true,
          "interval": "",
          "legendFormat": "__auto",
          "range": false,
          "refId": "A"
        }
      ],
      "title": "Upstream Server State (De-duplication)",
      "transformations": [
        {
          "id": "organize",
          "options": {
            "excludeByName": {
              "Time": true
            },
            "indexByName": {
              "Time": 0,
              "Value": 3,
              "server": 2,
              "upstream": 1
            },
            "renameByName": {
              "Time": "",
              "Value": "Status",
              "server": "Server",
              "upstream": "Upstream"
            }
          }
        }
      ],
      "type": "table"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "continuous-RdYlGr"
          },
          "mappings": [],
          "max": 1,
          "min": 0,
          "thresholds": {
            "mode": "percentage",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 4,
        "w": 4,
        "x": 7,
        "y": 67
      },
      "id": 58,
      "options": {
        "colorMode": "value",
        "graphMode": "none",
        "justifyMode": "auto",
        "orientation": "auto",
        "percentChangeColorMode": "standard",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showPercentChange": false,
        "textMode": "auto",
        "wideLayout": true
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "expr": "count(nginxplus_upstream_server_state{job='$job', instance='$instance'})",
          "instant": false,
          "range": true,
          "refId": "A"
        }
      ],
      "title": "Upstream Server Counts",
      "type": "stat"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "continuous-RdYlGr"
          },
          "mappings": [],
          "max": 1,
          "min": 0,
          "thresholds": {
            "mode": "percentage",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "percentunit"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 4,
        "x": 11,
        "y": 67
      },
      "id": 57,
      "options": {
        "colorMode": "value",
        "graphMode": "none",
        "justifyMode": "auto",
        "orientation": "auto",
        "percentChangeColorMode": "standard",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showPercentChange": false,
        "textMode": "auto",
        "wideLayout": true
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "expr": "count(nginxplus_upstream_server_state{job='$job', instance='$instance', server=~\".+\", upstream=~\".+\" } == 1) / count(nginxplus_upstream_server_state{job='$job', instance='$instance'})",
          "instant": false,
          "range": true,
          "refId": "A"
        }
      ],
      "title": "Upstream Server Availability",
      "type": "stat"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          }
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 9,
        "x": 15,
        "y": 67
      },
      "id": 18,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": true,
          "expr": "irate(nginxplus_upstream_server_requests_total{server=~\".+\", upstream=~\".+\", instance=\"$instance\", job=\"$job\"}[$__rate_interval])",
          "interval": "",
          "legendFormat": "{{upstream}} - {{server}}",
          "range": true,
          "refId": "A"
        }
      ],
      "title": "Upstream Server TPS",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "fixedColor": "semi-dark-red",
            "mode": "fixed"
          },
          "mappings": [],
          "thresholds": {
            "mode": "percentage",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "short"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 4,
        "w": 4,
        "x": 7,
        "y": 71
      },
      "id": 56,
      "options": {
        "colorMode": "background_solid",
        "graphMode": "none",
        "justifyMode": "auto",
        "orientation": "auto",
        "percentChangeColorMode": "standard",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showPercentChange": false,
        "textMode": "auto",
        "wideLayout": true
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "expr": "count(nginxplus_upstream_server_state{job='$job', instance='$instance'} != 1 )",
          "instant": false,
          "range": true,
          "refId": "A"
        }
      ],
      "title": "Upstream Server Unhealthy",
      "type": "stat"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "reqps"
        },
        "overrides": [
          {
            "__systemRef": "hideSeriesFrom",
            "matcher": {
              "id": "byNames",
              "options": {
                "mode": "exclude",
                "names": [
                  "2xx - index_8080 - 127.0.0.1:8080"
                ],
                "prefix": "All except:",
                "readOnly": true
              }
            },
            "properties": [
              {
                "id": "custom.hideFrom",
                "value": {
                  "legend": false,
                  "tooltip": false,
                  "viz": true
                }
              }
            ]
          }
        ]
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 0,
        "y": 75
      },
      "id": 22,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": true,
          "expr": "rate(nginxplus_upstream_server_responses_total{code=\"1xx\", server=~\".+\", upstream=~\".+\", instance=\"$instance\", job=\"$job\"}[$__rate_interval])",
          "hide": false,
          "interval": "",
          "legendFormat": "1xx - {{upstream}} - {{server}}",
          "range": true,
          "refId": "B"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": true,
          "expr": "rate(nginxplus_upstream_server_responses_total{code=\"2xx\", server=~\".+\", upstream=~\".+\", instance=\"$instance\", job=\"$job\"}[$__rate_interval])",
          "interval": "",
          "legendFormat": "2xx - {{upstream}} - {{server}}",
          "range": true,
          "refId": "A"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": true,
          "expr": "rate(nginxplus_upstream_server_responses_total{code=\"3xx\", server=~\".+\", upstream=~\".+\", instance=\"$instance\", job=\"$job\"}[$__rate_interval])",
          "hide": false,
          "interval": "",
          "legendFormat": "3xx - {{upstream}} - {{server}}",
          "range": true,
          "refId": "C"
        }
      ],
      "title": "Upstream Server Resp 1xx/2xx/3xx",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 10,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "reqps"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 12,
        "y": 75
      },
      "id": 20,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "multi",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": true,
          "expr": "rate(nginxplus_upstream_server_responses_total{code=\"4xx\", server=~\".+\", upstream=~\".+\", instance=\"$instance\", job=\"$job\"}[$__rate_interval])",
          "hide": false,
          "interval": "",
          "legendFormat": "4xx - {{upstream}} - {{server}}",
          "range": true,
          "refId": "A"
        },
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": true,
          "expr": "rate(nginxplus_upstream_server_responses_total{code=\"5xx\", server=~\".+\", upstream=~\".+\", instance=\"$instance\", job=\"$job\"}[$__rate_interval])",
          "hide": false,
          "interval": "",
          "legendFormat": "5xx - {{upstream}} - {{server}}",
          "range": true,
          "refId": "B"
        }
      ],
      "title": "Upstream Server Resp 4xx/5xx",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "miliseconds",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          }
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 0,
        "y": 83
      },
      "id": 28,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": true,
          "expr": "nginxplus_upstream_server_response_time{server=~\".+\", upstream=~\".+\", instance=\"$instance\", job=\"$job\"}",
          "interval": "",
          "legendFormat": "{{upstream}} - {{server}}",
          "range": true,
          "refId": "A"
        }
      ],
      "title": "Upstream Server Resp Time",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "prometheus",
        "uid": "benbag1zngu80e"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisBorderShow": false,
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "barWidthFactor": 0.6,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          }
        },
        "overrides": []
      },
      "gridPos": {
        "h": 8,
        "w": 12,
        "x": 12,
        "y": 83
      },
      "id": 26,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "right",
          "showLegend": true
        },
        "tooltip": {
          "hideZeros": false,
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "12.0.1",
      "targets": [
        {
          "datasource": {
            "type": "prometheus",
            "uid": "benbag1zngu80e"
          },
          "editorMode": "code",
          "exemplar": true,
          "expr": "rate(nginxplus_upstream_server_fails_total{server=~\".+\", upstream=~\".+\", instance=\"$instance\", job=\"$job\"}[$__rate_interval])",
          "interval": "",
          "legendFormat": "{{upstream}} - {{server}}",
          "range": true,
          "refId": "A"
        }
      ],
      "title": "Upstream Server Fails",
      "type": "timeseries"
    }
  ],
  "preload": false,
  "refresh": "auto",
  "schemaVersion": 41,
  "tags": [],
  "templating": {
    "list": [
      {
        "baseFilters": [],
        "datasource": {
          "type": "prometheus",
          "uid": "e200b1fb-5f1a-4c6e-999c-c661c8421158"
        },
        "filters": [],
        "name": "Filters",
        "type": "adhoc"
      },
      {
        "current": {
          "text": "nginx",
          "value": "nginx"
        },
        "datasource": {
          "type": "prometheus",
          "uid": "benbag1zngu80e"
        },
        "definition": "label_values(up,job)",
        "includeAll": false,
        "label": "job",
        "name": "job",
        "options": [],
        "query": {
          "query": "label_values(up,job)",
          "refId": "PrometheusVariableQueryEditor-VariableQuery"
        },
        "refresh": 1,
        "regex": "nginxplus.*",
        "type": "query"
      },
      {
        "current": {
          "text": "otel-collector-svc.nginx-plus.svc.cluster.local:9110",
          "value": "otel-collector-svc.nginx-plus.svc.cluster.local:9110"
        },
        "datasource": {
          "type": "prometheus",
          "uid": "benbag1zngu80e"
        },
        "definition": "label_values(up{job='$job'},instance)",
        "includeAll": false,
        "label": "instance",
        "name": "instance",
        "options": [],
        "query": {
          "query": "label_values(up{job='$job'},instance)",
          "refId": "PrometheusVariableQueryEditor-VariableQuery"
        },
        "refresh": 1,
        "regex": "",
        "type": "query"
      }
    ]
  },
  "time": {
    "from": "now-5m",
    "to": "now"
  },
  "timepicker": {},
  "timezone": "",
  "title": "NGINX Plus Dashboard",
  "uid": "RizyIIDnk",
  "version": 6
}

NGINX OSS Dashboard

NGINX OSS 대시보드는 인스턴스 상태, 처리된 연결, 현재 연결 상태, 총 요청 수(nginx_http_requests_total)를 5분 기준으로 시각화합니다.

NGINX Plus Dashboard

Nginx Plus는 네이티브 관측 기능을 통해 동적 모듈 API를 사용하여 실시간 상태 데이터를 출력할 수 있습니다.

이 데이터에는 전역 통계, SSL 상태, 서버/로케이션/업스트림 상태, 업스트림 서버의 액티브 헬스 체크 결과 등이 포함됩니다. Kubernetes를 포함한 어떤 환경에서도 적용할 수 있습니다.

6. 결론

OpenTelemetry Collector, Prometheus, Grafana를 함께 사용하면 NGINX 또는 NGINX Plus에서 발생하는 메트릭 데이터를 실시간으로 수집하고, 이를 시각화하여 트래픽 현황, 상태 코드 분포, 연결 수, 업스트림 서버 상태 등을 한눈에 파악할 수 있습니다.

이러한 구성은 Kubernetes 환경에서도 유연하게 적용 가능하며, 서비스 운영의 가시성을 높이고 장애 대응을 보다 빠르게 수행할 수 있도록 도와줍니다.

Kubernetes Monitoring에 관련된 더 많은 정보를 알고싶으시다면 NGINX STORE Kubernetes를 방문해주세요.

NGINX STORE를 통한 솔루션 도입 및 기술지원 무료 상담 신청

* indicates required