prometheus nginx - vts - exporter 배치 구축 모니터링 nginx

국내 에 서 는 Nginx 를 많이 사용 합 니 다. Nginx 의 모니터링 이 오래된 방안 은 스 크 립 트 를 통 해 nginx 의 status 모듈 의 데 이 터 를 정기 적 으로 수집 하거나 nginx 의 로 그 를 감시 하 는 것 일 수 있 습 니 다.나중에 아 리 의 tengine 은 국내 에서 유행 하기 시 작 했 고 좋 은 lua 모듈 이 많이 탄생 했다.그러나 이러한 모니터링 방안 은 새로운 모니터링 수요 가 있 을 때 스 크 립 트 를 수정 하거나 nginx conf 설정 을 변경 해 야 할 수도 있 고 특별히 편리 하지 않 을 수도 있다.Prometheus 로 nginx 모니터링 을 하면 관련 servername 과 upstream 을 모니터링 할 수 있 습 니 다. Prometheus 의 데이터 라벨 을 사용자 정의 하여 서로 다른 기관실 과 프로젝트 의 nginx 를 모니터링 할 수 있 습 니 다.Nginx 모니터링 은 주로 다음 과 같은 세 가지 모듈 을 사용 합 니 다. nginx - module - vts: Nginx virtual host traffic status module, Nginx 의 모니터링 모듈 은 JSON 형식의 데 이 터 를 제공 할 수 있 습 니 다.nginx-vts-exporter:Simple server that scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption。주로 Nginx 의 모니터링 데 이 터 를 수집 하고 Prometheus 에 모니터링 인터페이스, 기본 포트 번호 9913 을 제공 합 니 다.Prometheus: Nginx - vts - exporter 가 제공 하 는 Nginx 데 이 터 를 모니터링 하고 순차 데이터베이스 에 저장 하 며 PromQL 을 사용 하여 순차 데 이 터 를 조회 하고 취 합 할 수 있 습 니 다.
1. nginx - module - vts 모듈 의 컴 파일 nginxvts_exporter 는 nginx - module - vts 모듈 에 의존 합 니 다. 이 모듈 을 설치 하려 면 다른 의존 이 필요 없습니다.모듈 과 Nginx 버 전의 호환성 은 다음 과 같 습 니 다.
  • 1.15. x (최종 테스트: 1.15.0)
  • 1.14. x (최종 테스트: 1.14.0)
  • 1.13. x (최종 테스트: 1.13.12)
  • 1.12. x (최종 테스트: 1.12.2)
  • 1.11. x (최종 테스트: 1.11.11.10)
  • 1.10. x (최종 테스트: 1.10.3)
  • 1.8. x (최종 테스트: 1.8.0)
  • 1.6. x (최종 테스트: 1.6.3)
  • 1.4. x (최종 테스트: 1.4.7)
  • 초기 버 전 은 테스트 를 거치 지 않 았 다.
    설치 절차:
  • 다운로드 모듈 shell> git clone git://github.com/vozlt/nginx-module-vts.git
  • 컴 파일 설정 은 nginx 컴 파일 시 vts 모듈 --add-module=/path/to/nginx-module-vts 을 추가 하여 공식 패 키 지 를 다운로드 하고 vts 모듈 에 컴 파일 합 니 다. 예 를 들 어
    ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_sysguard_module  --add-module=nginx-module-vts
  • 설치: make && make install 2. Nginx Conf 설정 변경 Nginx Conf 설정, 모니터링 인터페이스 추가 / status /:
    http {
    vhost_traffic_status_zone;
        vhost_traffic_status_filter_by_host on;
    
    ...
    
    server {
    
        ...
    
        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
    }
    }
  • 설정 제안:
  • vhost 필터 열기: vhost_traffic_status_filter_by_host on; 이 기능 을 켜 면 Nginx 에 여러 개의 server 를 설정 합 니 다.name 의 경우 서버 에 따라name 트 래 픽 통 계 를 진행 합 니 다. 그렇지 않 으 면 기본적으로 트 래 픽 을 첫 번 째 server 로 계산 합 니 다.이름 에.
  • 트 래 픽 을 집계 하고 싶 지 않 은 server 구역 에서 vhost 를 사용 하지 않 습 니 다.traffic_status, 설정 예제:
    server {
    ...
    vhost_traffic_status off;
    ...
    }
    nginx 가 server 를 제대로 설정 하지 않 았 다 면name 또는 모니터링 이 필요 없 는 server 에 서 는 이 vhost 에서 통계 모니터링 기능 을 사용 하지 않 는 것 을 권장 합 니 다.그렇지 않 으 면 '127.0.0.1', hostname 등의 도 메 인 네 임 모니터링 정보 가 나 옵 니 다.3. 모니터링 데이터 의 조회 가 vts 모듈 을 설치 한 후에 nginx status 인 터 페 이 스 를 통 해 모니터링 데 이 터 를 볼 수 있 습 니 다. 예 를 들 어:http://127.0.0.1/status:

  • 페이지 맨 아래 에 모니터링 페이지 새로 고침 시간 간격 을 지정 하고 JSON 을 클릭 하면 JSON 형식 으로 출력 할 수 있 습 니 다.
    3. nginx - vts - exporter 의 사용 exporter 는 nginx 성능 지표의 JSON 형식 데 이 터 를 수집 하고 모 은 후에 모니터링 인 터 페 이 스 를 Prometheus 에 노출 합 니 다.
    그것 의 설치 사용 은 매우 간단 하 다. 상 자 를 열 면 바로 사용 할 수 있다.
  • 현재 최신 버 전의 패 키 지 를 다운로드 합 니 다. # wget -c https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.9.1/nginx-vts-exporter-0.9.1.linux-amd64.tar.gz
  • 압축 을 풀 고 실행: # nginx-vts-exporter-0.9.1.linux-amd64/nginx-vts-exporter -nginx.scrape_timeout 10 -nginx.scrape_uri http://127.0.0.1/status/format/json exporter 와 nginx 를 같은 기계 에 설치 하 는 것 을 추천 합 니 다. 같은 호스트 가 아니라면 scrapeuri 는 nginx 호스트 의 주소 로 바 뀌 었 습 니 다.nginx_vts_exporter 의 기본 포트 번호: 9913, 대외 노출 모니터링 인터페이스http://xxx:9913/metrics.

  • 4. Nginx 의 모니터링 데이터 형식
    nginx - vts - exporter 의 데이터 형식 네 임 스페이스 는 기본적으로 "nginx" 로 시작 합 니 다. 주로 다음 과 같은 9 가지 가 있 습 니 다.
    HELP 는 모니터링 항목 에 대한 설명 입 니 다. TYPE 의 형식 은 모니터링 항목 이름 + Prometheus 데이터 형식 입 니 다.
    # HELP nginx_server_bytes request/response bytes
    # TYPE nginx_server_bytes counter
    # HELP nginx_server_cache cache counter
    # TYPE nginx_server_cache counter
    # HELP nginx_server_connections nginx connections
    # TYPE nginx_server_connections gauge
    # HELP nginx_server_requestMsec average of request processing times in milliseconds
    # TYPE nginx_server_requestMsec gauge
    # HELP nginx_server_requests requests counter,       
    # TYPE nginx_server_requests counter
    # HELP nginx_upstream_bytes request/response bytes
    # TYPE nginx_upstream_bytes counter
    # HELP nginx_upstream_requestMsec average of request processing times in milliseconds
    # TYPE nginx_upstream_requestMsec gauge
    # HELP nginx_upstream_requests requests counter,       
    # TYPE nginx_upstream_requests counter
    # HELP nginx_upstream_responseMsec average of only upstream/backend response processing times in milliseconds
    # TYPE nginx_upstream_responseMsec gauge

    5. Nginx 모니터링 Prometheus 의 데이터 집합 에 자주 사용 되 는 모니터링 어 셈 블 리 표현 식: DomainName 대응 nginx conf 의 servername, 여 기 는 서버 에 따라name 과 upstream 은 각각 qps, 2xx / 3xx / 4xx / 5xx 의 상태 코드 감 측 을 실시 하고 nginx 각 백 엔 드 server 의 qps 와 백 엔 드 인터페이스 응답 시간 도 모니터링 할 수 있 습 니 다.
    서버 를 구분 할 필요 가 없다 면name, 표현 식 의 $DomainName 을 별표 로 변경 할 수 있 습 니 다. "* * *" 는 모든 것 을 대표 합 니 다.
  • Nginx 의 QPS: sum(irate(nginx_server_requests{code="total",host=~"$DomainName"}[5m]))
  • 4xx 만 분 율 구하 기 (5xx 유사, code = "5xx"): (sum(irate(nginx_server_requests{code="4xx",host=~"$DomainName"}[5m])) / sum(irate(nginx_server_requests{code="total",host=~"$DomainName"}[5m]))) * 10000
  • upstream 의 QPS (예 를 들 어 group 1 의 qps): sum(irate(nginx_upstream_requests{code="total",upstream="group1"}[5m]))
  • upstream 백 엔 드 server 의 응답 시간 (예 를 들 어 group 1 의 백 엔 드 응답 시간): nginx_upstream_responseMsec{upstream=“group1”}
  • 6. Nginx 모니터링 의 전시 Dashboard 의 전 시 는 당연히 grafana 를 사용 하고 자신 이 표현 식 에 따라 그림 을 그리 면 됩 니 다. 모니터링 그림 은 비슷 합 니 다.

    좋은 웹페이지 즐겨찾기