nginx 백엔드에서 웹서버의 상태를 얻는 방법은 무엇입니까?

nginx 백엔드에서 웹서버의 상태를 얻는 방법은 무엇입니까?

HAProxy에는 백엔드에서 어떤 웹 서버가 작동 중이고 어떤 웹 서버가 다운되었는지 보여주는 매우 멋진 상태 페이지가 있습니다. 몇 가지 문제를 디버깅하려고 하는데 nginx가 작동 중이라고 생각하는 서버와 다운된 것으로 생각하는 서버를 알아야 합니다. 이러한 유형의 정보가 필요할 때 URL을 클릭할 수 있도록 nginx에 대해 구성할 수 있는 웹 페이지나 무언가가 있습니까?

고마워, 딘

답변1

확인하고 싶은 몇 가지 모듈이 있습니다.

답변2

불행히도 이것은 기본적으로 거의 불가능합니다. vanila nginx에는 설계상 업스트림에 대한 전역 상태가 없으므로 이 정보는 모든 작업자 프로세스에 대해 로컬입니다.

이 모듈을 살펴보시면 도움이 될 것 같습니다.http://wiki.nginx.org/NginxHttpHealthcheckModule

답변3

이 답변은 1년 늦었지만 nginx용 ustats 모듈은 매우 인상적입니다.

https://code.google.com/p/ustats/

github으로 옮겼습니다https://github.com/0xc0dec/ustats

불행하게도 1.2 이후에는 유지되지 않는 것 같지만 여전히 작동할 수도 있습니다.

유지관리된 포크를 찾았습니다.https://github.com/nginx-modules/ngx_ustats_module

1.7.2 패치는 여전히 1.7.4에 대해 완벽하게 작동합니다.

답변4

Amazon ELB가 제공하는 간단한 상태 점검을 찾고 있었습니다. LB에 인스턴스를 추가하는 기능, 결함이 있는 인스턴스를 제거하는 상태 확인 메커니즘이 있습니다.

그래서 내 선택은 다음과 같습니다.

  1. https://github.com/yaoweibin/nginx_upstream_check_module
  2. https://github.com/openresty/lua-resty-upstream-healthcheck
  3. Nginx는 또한 수동 상태 점검을 무료로 제공합니다. 그것은 내가 원하는 것을 정확하게 수행합니다. 화려한 모니터링도, 가중치도 없고, 화려한 경로 확인도 없습니다. 서버에 핑을 보내고 200 상태 응답을 확인합니다. 라운드 로빈 방식으로 수행됩니다.

    failure_timeout 매개변수는 지정된 횟수의 실패한 시도가 발생하고 여전히 서버를 사용할 수 없는 것으로 간주해야 하는 시간을 설정합니다. 즉, failure_timeout에 설정된 간격 동안 서버를 사용할 수 없습니다.

    max_fails 매개변수는 서버를 계속 사용할 수 없는 것으로 간주하기 위해 지정된 시간 동안 발생해야 하는 실패한 시도 횟수를 설정합니다.

    예:

    upstream search { server 192.168.215.43:9200 max_fails=3 fail_timeout=10s; server 192.168.171.66:9200 max_fails=3 fail_timeout=10s; }

관련 정보