Nginx Munin 플러그인에 데이터가 표시되지 않습니다


9

Munin을 통해 NGinx 통계를 모니터링하고 싶지만 Nginx 플러그인에는 데이터가 표시되지 않습니다. munin nginx 플러그인 중 하나만 작동하는 것으로 보이는 이유를 진단 할 수 있습니까?

nginx 무닌

서버는 CentOS 5.3에서 실행됩니다.

답변:


14

nginx 플러그인은 상태 정보를 얻기 위해 다음 URL을 사용합니다.

http://127.0.0.1/nginx_status

일반적으로 nginx에는이 URL에 상태 데이터를 표시하도록 구성되어 있지 않습니다.

플러그인 문서에서 nginx가 특정 URL에 상태 데이터를 표시하도록 구성해야한다는 것을 알았습니다.

사이트 구성에 다음 줄을 추가하여 nginx 상태를 활성화해야합니다.

 server {
       listen 127.0.0.1;
       server_name localhost;
       location /nginx_status {
               stub_status on;
               access_log   off;
               allow 127.0.0.1;
               deny all;
       }
 }

이 구성을 추가 한 후 서버를 다시 시작하고 stus URL이 상태 데이터를 리턴하는지 확인하십시오.

각 플러그인의 전체 설명서를 보려면 다음을 실행할 수 있습니다.

munindoc nginx_request

도움이 되었기를 바랍니다.


1
참고 사항 : 여기에 설명 된대로 nginx를 활성화하는 Ubuntu 16.04를 실행하는 것만으로는 충분하지 않습니다. 또한 nginx 플러그인 apt install libwww-perl time과 관련된 문제를 기록하기 위해 munin 노드에 있어야했습니다 Use of uninitialized value $LWP::VERSION.
Thomas Urban

또 다른 참고 사항 : 오늘날 IPv6가 서버에서 지원되기 때문에 사용 http://localhost/하는 nginx_ * 플러그인의 기본 URL은 IPv6을 선호하므로 IPv4 로컬 호스트 만 허용하는 nginx 구성이 일치하지 않을 것입니다. 플러그인을 작동 /etc/munin/plugin-conf.d/munin-node시키기 위해 URL을 수정함으로써 http://127.0.0.1/nginx_status.
Thomas Urban

4

내 경험상 이러한 플러그인은 nginx 구성 오류로 인해 작동하지 않을 수 있습니다. 이 경우 수행 할 작업에 대한 간략한 목록은 다음과 같습니다.

1. nginx 설치 확인

Nginx는 HttpStubStatusModule 모듈 로 컴파일해야합니다 . sudo 또는 root에서 다음 명령을 실행하여이를 확인할 수 있습니다.

nginx -V 2>&1 | grep -o with-http_stub_status_module

다음과 같은 출력이 표시되면 계속 진행하는 것이 좋습니다.

with-http_stub_status_module

그렇지 않으면 필요한 모듈이 활성화 된 상태에서 nginx를 다시 컴파일하거나 다른 소스에서 설치해야합니다 (제 경우에는 기본 데비안 저장소가 올바른 버전을 가졌습니다).

2. nginx 구성 확인

필요한 구성을 배치하고 활성화했다고 가정합니다 . 작동하는지 확인하려면 ssh서버로 이동하여 실행할 수 있습니다.

wget http://localhost/nginx_status

여기에 오류가 없으면 문제는 플러그인 구성입니다. 서버가 여기에 오류를 반환하면 구성을 수정하여 디버깅 할 수 있습니다.

location /nginx_status {
    stub_status on;
    access_log   off;
    error_log    /var/log/nginx/status.error.log;
    allow 127.0.0.1;
    deny all;
}

그런 다음 파일에서 /var/log/nginx/status.error.log서버가 오류를 반환 한 정확한 이유를 확인할 수 있습니다.

[error] 2203#0: *1442 access forbidden by rule, client: ::1, server: localhost, request: "GET /nginx_status HTTP/1.1", host: "localhost"

필자의 경우 (로그에서 볼 수 있듯이) 문제는 client: ::1이며 구성은 액세스 만 허용했습니다.127.0.0.1

이 문제를 해결하려면 cepharum의 제안을 따르 거나 가상 호스트 구성을 수정하십시오.

server {
        listen 80;
        listen [::]:80;
        server_name localhost;

        location /nginx_status {
                stub_status on;
                access_log off;
                allow 127.0.0.1;
                allow ::1;
                deny all;
        }
}

( listen: 127.0.0.1이전 포트가 작동하지 않았기 때문에 포트 80 (ipv4 + ipv6)으로 교체되었다는 통지 )

3. 시스템 구성 및 종속성 확인

플러그인 자체가 작동하는지 확인하려면 다음을 실행하십시오.

munin-run nginx_status

(플러그인은 "켜져 있어야합니다"-심볼릭 링크가 있어야합니다. 그렇지 않으면 설명서를/etc/munin/plugins 읽으십시오. )

LWP라이브러리 오류 (예 : LWP::UserAgent또는 LWP::VERSION) 가 발생하면 시스템에 nginx_status플러그인에 필요한 패키지가없는 것 입니다.

데비안 / 우분투에서 다음을 실행하십시오.

apt install libwww-perl

CentOS에서

yum install perl-libwww-perl

그 후를 사용하여 플러그인을 다시 테스트하십시오 munin-run. 예상 출력 (번호가 다름) :

total.value 1
reading.value 0
writing.value 1
waiting.value 0

/var/log/munin-update.log(servername / 127.0.0.1 : 4949의 서비스 nginx_status에서 레이블 대기에 대한 데이터를 반환하지 않았습니다.) 의 오류 메시지를 기반 libwww-perl으로 누락 된 부분 을 찾기 위해 몇 년 동안 검색했을 수 있습니다 . 이 광범위한 답변에 감사드립니다.
BurninLeo

2

아마도 도움이 될 것입니다 :

cd /etc/munin/plugins
munin-run PLUGINNAME

또한 디버그 옵션을 사용하여 munin-run을 실행하십시오.

플러그인 파일에 하드 코딩 된 경로가 있는지 확인하고 시스템에 맞는지 확인하십시오.

grep '/' PLUGINNAME

nginx 플러그인은 Nginx가 특정 모듈로 컴파일되거나 특정 형식의 로그 출력에 의존 할 수 있습니다. 플러그인에 대한 설명서 페이지가 있습니까?


2

중요한 것은 munin 구성의 URL입니다.

필요할 것이예요

[nginx*]
env.url http://localhost/nginx_status

노트

nginx_status

아니

nginx-status

0

libwww-perl 을 설치 한 후 명령 munin-run nginx_status을 실행하여 통계를보십시오.
muni-node 서비스를 다시 시작하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.