
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됨) Labelreason
가 포함됩니다.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
(현재 세대의 프로세스)의 두 가지 가능한 값이 있는 상수 Labelgeneration
이 포함됩니다.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를 통해 구성됩니다.