Câu trả lời:
Các plugin nginx dựa vào URL sau để có được thông tin trạng thái:
http://127.0.0.1/nginx_status
Thông thường, nginx không có cấu hình URL này để hiển thị dữ liệu trạng thái.
Từ tài liệu của các plugin, tôi thấy rằng nginx cần được cấu hình để hiển thị dữ liệu trạng thái trong một URL đặc biệt.
Bạn cần kích hoạt trạng thái nginx bằng cách thêm các dòng sau vào cấu hình của trang:
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;
}
}
Đừng quên khởi động lại máy chủ sau khi thêm cấu hình này và đảm bảo URL stus trả về dữ liệu trạng thái.
Đối với tài liệu đầy đủ của từng plugin, bạn có thể chạy:
munindoc nginx_request
Hi vọng điêu nay co ich.
http://localhost/
có thể thích IPv6 hơn và do đó sẽ không khớp với cấu hình nginx chỉ cho phép IPv4 localhost. Bằng cách sửa URL /etc/munin/plugin-conf.d/munin-node
để http://127.0.0.1/nginx_status
cuối cùng làm cho plugin hoạt động.
Theo kinh nghiệm của tôi, các plugin này có thể không hoạt động do cấu hình sai nginx. Dưới đây là danh sách ngắn những việc cần làm trong trường hợp này:
Nginx phải được biên dịch với mô-đun httpStubStatusModule . Bạn có thể kiểm tra bằng cách chạy lệnh sau (dưới sudo hoặc root):
nginx -V 2>&1 | grep -o with-http_stub_status_module
Nếu bạn thấy đầu ra sau đây, bạn tốt để đi trước.
with-http_stub_status_module
Mặt khác, bạn phải biên dịch lại nginx với mô-đun cần thiết được bật hoặc cài đặt từ các nguồn khác nhau (Trong trường hợp của tôi, repo Debian mặc định có phiên bản phù hợp).
Tôi giả sử bạn đã đặt và kích hoạt cấu hình yêu cầu . Để xem nó có hoạt động không, bạn có thể ssh
đến máy chủ của mình và chạy
wget http://localhost/nginx_status
Nếu bạn không gặp lỗi ở đây, thì vấn đề là cấu hình plugin. Nếu máy chủ trả về lỗi ở đây, bạn có thể gỡ lỗi bằng cách sửa đổi cấu hình:
location /nginx_status {
stub_status on;
access_log off;
error_log /var/log/nginx/status.error.log;
allow 127.0.0.1;
deny all;
}
Sau đó, trong tệp /var/log/nginx/status.error.log
bạn có thể thấy lý do chính xác tại sao máy chủ trả về lỗi:
[error] 2203#0: *1442 access forbidden by rule, client: ::1, server: localhost, request: "GET /nginx_status HTTP/1.1", host: "localhost"
Trong trường hợp của tôi (như bạn có thể thấy từ nhật ký), vấn đề là client: ::1
, trong khi cấu hình chỉ cho phép truy cập từ127.0.0.1
Để giải quyết vấn đề, bạn có thể làm theo đề xuất của cepharum hoặc sửa đổi cấu hình máy chủ ảo:
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;
}
}
(Lưu ý rằng tôi cũng đã thay thế listen: 127.0.0.1
bằng cổng 80 (ipv4 + ipv6) vì trước đây cũng không hoạt động)
Để kiểm tra xem plugin có hoạt động không, hãy chạy
munin-run nginx_status
(lưu ý rằng plugin phải được "bật" - phải có một liên kết tượng trưng tại /etc/munin/plugins
- đọc hướng dẫn nếu không)
Nếu bạn gặp lỗi với LWP
thư viện (ví dụ LWP::UserAgent
hoặc LWP::VERSION
), hệ thống của bạn đang thiếu một gói theo yêu cầu của nginx_status
plugin.
Trên Debian / Ubuntu, hãy chạy
apt install libwww-perl
Trên CentOS
yum install perl-libwww-perl
Sau đó kiểm tra lại plugin bằng cách sử dụng munin-run
. Đầu ra dự kiến (số sẽ khác nhau):
total.value 1
reading.value 0
writing.value 1
waiting.value 0
/var/log/munin-update.log
(Dịch vụ nginx_status trên tên máy chủ / 127.0.0.1: 4949 không trả lại dữ liệu cho việc chờ nhãn), tôi có thể đã tìm kiếm trong nhiều năm để tìm ra điều đó libwww-perl
bị thiếu. Cảm ơn rất nhiều cho câu trả lời rộng rãi này.
Có thể hữu ích:
cd /etc/munin/plugins
munin-run PLUGINNAME
Ngoài ra, sử dụng tùy chọn gỡ lỗi để chạy munin.
Kiểm tra tệp plugin cho bất kỳ đường dẫn được mã hóa cứng nào và xác minh chúng là chính xác cho hệ thống của bạn:
grep '/' PLUGINNAME
Plugin nginx có thể dựa vào Nginx được biên dịch với một số mô-đun hoặc đầu ra nhật ký theo một định dạng nhất định. Có bất kỳ trang tài liệu cho các plugin?
Điều quan trọng là url trong cấu hình munin.
Bạn sẽ cần
[nginx*]
env.url http://localhost/nginx_status
Ghi chú
nginx_status
không phải
nginx-status
Cài đặt libwww-perl sau đó chạy lệnh munin-run nginx_status
để xem số liệu thống kê.
Khởi động lại dịch vụ nút muni.
apt install libwww-perl time
các nút munin cho các vấn đề về nhật ký của nó với cácUse of uninitialized value $LWP::VERSION
plugin nginx.