Plugin Nginx Munin tidak menunjukkan data

9

Saya ingin memantau statistik NGinx melalui Munin tetapi plugin Nginx tidak menunjukkan data. Apakah mungkin untuk mendiagnosis mengapa hanya satu dari plugin munin nginx yang tampaknya berfungsi?

nginx munin

Server berjalan pada CentOS 5.3

Miko
sumber

Jawaban:

14

Plugin nginx mengandalkan URL berikut untuk mendapatkan info status:

http://127.0.0.1/nginx_status

Biasanya, nginx tidak memiliki URL ini yang dikonfigurasi untuk menampilkan data status.

Dari dokumentasi plugin, saya melihat bahwa nginx perlu dikonfigurasi untuk menampilkan data status dalam URL spesifik.

Anda perlu mengaktifkan status nginx dengan menambahkan baris berikut ke konfigurasi situs:

 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;
       }
 }

Jangan lupa untuk me-restart server setelah menambahkan konfigurasi ini, dan pastikan URL stus mengembalikan data status.

Untuk dokumentasi lengkap setiap plugin, Anda dapat menjalankan:

munindoc nginx_request

Semoga ini membantu.

Tom Feiner
sumber
1
Catatan: Menjalankan Ubuntu 16.04 memungkinkan nginx seperti yang didokumentasikan di sini tidak cukup dalam kasus saya. Selain itu saya harus apt install libwww-perl timepada node munin untuk masalah yang menyatakan log dengan Use of uninitialized value $LWP::VERSIONpada plugin nginx.
Thomas Urban
Catatan lain: Karena IPv6 didukung pada server hari ini, URL default menggunakan nginx_ * plugins http://localhost/mungkin lebih suka IPv6 dan dengan demikian akan membuat ketidakcocokan konfigurasi nginx yang hanya mengizinkan IPv4 localhost. Dengan memperbaiki URL di /etc/munin/plugin-conf.d/munin-nodeuntuk http://127.0.0.1/nginx_statusakhirnya membuat kerja Plugin.
Thomas Urban
4

Dalam pengalaman saya, plugin ini kemungkinan tidak berfungsi karena kesalahan konfigurasi nginx. Berikut adalah daftar singkat apa yang harus dilakukan dalam kasus ini:

1. Periksa instalasi nginx

Nginx harus dikompilasi dengan modul HttpStubStatusModule . Anda dapat memeriksanya dengan menjalankan perintah berikut (di bawah sudo atau root):

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

Jika Anda melihat output berikut, Anda baik untuk melanjutkan.

with-http_stub_status_module

Jika tidak, Anda harus mengkompilasi ulang nginx dengan modul yang diperlukan diaktifkan atau menginstal dari sumber yang berbeda (Dalam kasus saya, repo Debian default memiliki versi yang tepat).

2. Periksa konfigurasi nginx

Saya berasumsi Anda telah menempatkan dan mengaktifkan konfigurasi yang diperlukan . Untuk melihat apakah itu berfungsi, Anda bisa sshke server dan menjalankannya

wget http://localhost/nginx_status

Jika Anda tidak mendapatkan kesalahan di sini, maka masalahnya adalah konfigurasi plugin. Jika server mengembalikan kesalahan di sini, Anda dapat melakukan debug dengan mengubah konfigurasi:

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

Setelah itu, dalam file /var/log/nginx/status.error.logAnda dapat melihat alasan yang tepat mengapa server mengembalikan kesalahan:

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

Dalam kasus saya (seperti yang Anda lihat dari log) masalahnya adalah client: ::1, sementara konfigurasi hanya mengizinkan akses dari127.0.0.1

Untuk mengatasi masalah ini, Anda dapat mengikuti saran cepharum atau mengubah konfigurasi virtual host:

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;
        }
}

(Perhatikan bahwa saya juga diganti listen: 127.0.0.1dengan port 80 (ipv4 + ipv6) karena yang sebelumnya juga tidak berfungsi)

3. Periksa konfigurasi sistem dan dependensi

Untuk memeriksa apakah plugin itu sendiri berfungsi, jalankan

munin-run nginx_status

(perhatikan bahwa plugin harus "dihidupkan" - symlink harus ada di /etc/munin/plugins- baca manual jika tidak)

Jika Anda mendapatkan kesalahan dengan LWPperpustakaan (misalnya LWP::UserAgentatau LWP::VERSION), sistem Anda kehilangan paket yang diperlukan oleh nginx_statusplugin.

Di Debian / Ubuntu, jalankan

apt install libwww-perl

Di CentOS

yum install perl-libwww-perl

Setelah itu uji coba lagi menggunakan plugin munin-run. Output yang diharapkan (jumlahnya akan berbeda):

total.value 1
reading.value 0
writing.value 1
waiting.value 0
badew
sumber
Berdasarkan pesan kesalahan dalam /var/log/munin-update.log(Layanan nginx_status pada servername / 127.0.0.1: 4949 tidak mengembalikan data untuk label yang menunggu), saya bisa mencari bertahun-tahun untuk mencari tahu yang libwww-perlhilang. Terima kasih banyak atas jawaban yang luas ini.
BurninLeo
2

Mungkin bermanfaat:

cd /etc/munin/plugins
munin-run PLUGINNAME

Selain itu gunakan opsi debug untuk menjalankan munin.

Periksa file plugin untuk setiap jalur kode keras dan verifikasi apakah itu benar untuk sistem Anda:

grep '/' PLUGINNAME

Plugin nginx dapat mengandalkan Nginx yang sedang dikompilasi dengan modul-modul tertentu atau keluaran log dalam format tertentu. Apakah ada halaman dokumentasi untuk plugin?

CarpeNoctem
sumber
2

Kuncinya adalah url di munin config.

Anda akan perlu

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

Catatan

nginx_status

Tidak

nginx-status
Tien Do Xuan
sumber
0

Instal libwww-perl kemudian jalankan perintah munin-run nginx_statusuntuk melihat statistik.
Mulai ulang layanan muni-node.

Izunna Calvin DIke
sumber