답변:
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
도움이 되었기를 바랍니다.
http://localhost/
하는 nginx_ * 플러그인의 기본 URL은 IPv6을 선호하므로 IPv4 로컬 호스트 만 허용하는 nginx 구성이 일치하지 않을 것입니다. 플러그인을 작동 /etc/munin/plugin-conf.d/munin-node
시키기 위해 URL을 수정함으로써 http://127.0.0.1/nginx_status
.
내 경험상 이러한 플러그인은 nginx 구성 오류로 인해 작동하지 않을 수 있습니다. 이 경우 수행 할 작업에 대한 간략한 목록은 다음과 같습니다.
Nginx는 HttpStubStatusModule 모듈 로 컴파일해야합니다 . sudo 또는 root에서 다음 명령을 실행하여이를 확인할 수 있습니다.
nginx -V 2>&1 | grep -o with-http_stub_status_module
다음과 같은 출력이 표시되면 계속 진행하는 것이 좋습니다.
with-http_stub_status_module
그렇지 않으면 필요한 모듈이 활성화 된 상태에서 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)으로 교체되었다는 통지 )
플러그인 자체가 작동하는지 확인하려면 다음을 실행하십시오.
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
으로 누락 된 부분 을 찾기 위해 몇 년 동안 검색했을 수 있습니다 . 이 광범위한 답변에 감사드립니다.
libwww-perl 을 설치 한 후 명령 munin-run nginx_status
을 실행하여 통계를보십시오.
muni-node 서비스를 다시 시작하십시오.
apt install libwww-perl time
과 관련된 문제를 기록하기 위해 munin 노드에 있어야했습니다Use of uninitialized value $LWP::VERSION
.