NGINX Ingress Controller Documentation

Prometheus

Ingress Controller는 Prometheus 형식으로 여러 Metrics을 Expose합니다. 여기에는 NGINX/NGINX Plus 및 Ingress Controller Metrics가 포함됩니다.

목차

1. Metrics 활성화
2. 사용 가능한 Metrics

1. Metrics 활성화

Kubernetes Manifest(배포 또는 DaemonSet)를 사용하여 Ingress Controller를 설치하는 경우 Prometheus Metrics를 활성화하려면 다음을 수행하십시오.

1. -enable-prometheus-metrics Command-Line Argument를 사용하여 Ingress Controller를 실행합니다. 결과적으로 Ingress Controller는 포트 9113의 경로 /metrics(-prometheus-metrics-listen-port Command-Line Argument를 통해 사용자 지정 가능)를 통해 Prometheus 형식의 NGINX 또는 NGINX Plus Metrics을 노출합니다.

2. Prometheus Endpoint에 대해 TLS를 활성화하려면 TLS Secret의 Namespace와 이름으로 -prometheus-tls-secret cli Argument를 구성합니다.

3. Ingress Controller Pod의 템플릿에 있는 Ingress Controller 컨테이너의 포트 목록에 Prometheus 포트를 추가합니다.

- name: prometheus
  containerPort: 9113

4. Ingress Controller Pod의 템플릿에 다음 Argument을 추가하여 Prometheus 가 Ingress Controller 대상을 인식하도록 합니다(Note: Prometheus 가 Pod의 주석을 분석하여 대상을 검색하도록 구성되었다고 가정함).

annotations:
    prometheus.io/scrape: "true"
    prometheus.io/port: "9113"
    prometheus.io/scheme: http

Helm을 사용하여 Ingress Controller를 설치하는 경우 Prometheus Metrics를 활성화하려면 Helm 차트의 prometheus.* 매개변수를 구성하십시오. Helm 문서로 설치를 참조하십시오.

2. 사용 가능한 Metrics

Ingress controller는 다음 Metrics을 내보냅니다.

  • NGINX/NGINX Plus Metrics:
    • NGINX/NGINX Plus에서 Exporte합니다. Exporte한 Metrics에 대한 자세한 내용은 NGINX Prometheus Exporte 개발자 문서를 참조하세요.
    • Root Repo 폴더에 NGINX Plus Metrics에 대한 Grafana 대시보드가 있습니다.
    • Ingress Controller에서 계산:
      • controller_upstream_server_response_latency_ms_count. NGINX가 Upstream 서버에 대한 연결을 설정한 시점부터 NGINX가 응답 본문의 마지막 바이트를 수신한 시점까지의 Bucket된 응답 시간입니다. Note: Upstream에 대한 Metrics은 트래픽이 Upstream으로 전송될 때까지 사용할 수 없습니다. Metrics은 기본적으로 활성화되어 있지 않습니다. Metrics를 활성화하려면 -enable-latency-metrics Command-Line Argument를 설정합니다.
  • Ingress Controller Metrics
    • controller_nginx_reloads_total. 성공적으로 된 NGINX Reload 수입니다. 여기에는 2개의 가능한 값 Endpoint(Reload한 이유는 Endpoint 업데이트입니다.) 및 other(Ingress 업데이트와 같은 Endpoint 업데이트 이외의 항목으로 인해 Reload됨) Label reason 가 포함됩니다.
    • controller_nginx_reload_errors_total. 실패한 NGINX Reload 수입니다.
    • controller_nginx_last_reload_status. 마지막 NGINX Reload 상태, 0은 다운을 의미하고 1은 업을 의미합니다.
    • controller_nginx_last_reload_milliseconds. 마지막 NGINX Reload 기간(ms)입니다.
    • controller_nginx_worker_processes_total. NGINX Worker Pocesses 수입니다. 이 Metrics에는 old(이전 세대의 종료 프로세스) 또는 current(현재 세대의 프로세스)의 두 가지 가능한 값이 있는 상수 Label generation이 포함됩니다.
    • controller_ingress_resources_total. 처리된 Ingress 리소스의 수입니다. 이 Metrics에는 Ingress 리소스를 해당 유형(일반, Minion 또는 Master)별로 그룹화하는 Label 유형이 포함됩니다. Note: Metrics은 Master가 없는 하수인을 계산하지 않습니다.
    • controller_virtualserver_resources_total. 처리된 VirtualServer 리소스의 수입니다.
    • controller_virtualserverroute_resources_total. 처리된 VirtualServerRoute 리소스의 수입니다. Note: Metrics은 VirtualServer에서 참조가 있는 VirtualServerRoutes만 계산합니다.
    • controller_transportserver_resources_total. 처리된 TransportServer 리소스의 수입니다. 이 Metrics에는 TransportServer 리소스를 해당 유형(통과, tcp 또는 udp)별로 그룹화하는 Label 유형이 포함됩니다.
    • Workqueue Metrics. Note: Workqueue은 Ingress 리소스와 같은 클러스터의 관련 리소스에 대한 변경 사항을 처리하기 위해 Ingress Controller에서 사용하는 Queue입니다. Ingress Controller는 하나의 Queue만 사용합니다. 해당 Queue의 Metrics에는 name="taskQueue" Label이 있습니다.
      • workqueue_depth. Workqueue의 현재 깊이.
      • workqueue_queue_duration_second. 항목이 요청되기 전에 Workqueue에 머무르는 시간(s)입니다.
      • workqueue_work_duration_seconds. Workqueue에서 항목을 처리하는 데 걸리는 시간(s)입니다.

Note: 모든 Metrics에는 nginx_ingress Namespace가 있습니다. 예: nginx_ingress_controller_nginx_reloads_total.

Note: 모든 Metrics에는 Ingress Controller의 클래스로 설정된 Label class가 포함됩니다. 클래스는 -ingress-class Command-Line Argument를 통해 구성됩니다.