Plugin Nginx Munin không hiển thị dữ liệu


9

Tôi muốn theo dõi số liệu thống kê NGinx thông qua Munin nhưng các plugin Nginx không hiển thị dữ liệu. Có thể chẩn đoán tại sao chỉ một trong số các plugin nginx munin dường như đang hoạt động?

nginx munin

Máy chủ chạy trên CentOS 5.3

Câu trả lời:


14

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.


1
Lưu ý bên lề: Chạy Ubuntu 16.04 cho phép nginx như tài liệu ở đây là không đủ trong trường hợp của tôi. Ngoài ra, tôi đã phải sử dụng apt install libwww-perl timecác nút munin cho các vấn đề về nhật ký của nó với các Use of uninitialized value $LWP::VERSIONplugin nginx.
Thomas đô thị

Một lưu ý khác: Vì IPv6 được hỗ trợ trên các máy chủ ngày nay, URL mặc định của các plugin nginx_ * sử dụng 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_statuscuối cùng làm cho plugin hoạt động.
Thomas Urban

4

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:

1. Kiểm tra cài đặt nginx

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).

2. Kiểm tra cấu hình nginx

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.logbạ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.1bằng cổng 80 (ipv4 + ipv6) vì trước đây cũng không hoạt động)

3. Kiểm tra cấu hình hệ thống và phụ thuộc

Để 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 LWPthư viện (ví dụ LWP::UserAgenthoặ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_statusplugin.

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

Dựa trên các thông báo lỗi trong /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-perlbị thiếu. Cảm ơn rất nhiều cho câu trả lời rộng rãi này.
BurninLeo

2

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?


2

Đ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

0

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.