Jawaban:
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.
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-node
untuk http://127.0.0.1/nginx_status
akhirnya membuat kerja Plugin.
Dalam pengalaman saya, plugin ini kemungkinan tidak berfungsi karena kesalahan konfigurasi nginx. Berikut adalah daftar singkat apa yang harus dilakukan dalam kasus ini:
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).
Saya berasumsi Anda telah menempatkan dan mengaktifkan konfigurasi yang diperlukan . Untuk melihat apakah itu berfungsi, Anda bisa ssh
ke 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.log
Anda 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.1
dengan port 80 (ipv4 + ipv6) karena yang sebelumnya juga tidak berfungsi)
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 LWP
perpustakaan (misalnya LWP::UserAgent
atau LWP::VERSION
), sistem Anda kehilangan paket yang diperlukan oleh nginx_status
plugin.
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
/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-perl
hilang. Terima kasih banyak atas jawaban yang luas ini.
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?
Kuncinya adalah url di munin config.
Anda akan perlu
[nginx*]
env.url http://localhost/nginx_status
Catatan
nginx_status
Tidak
nginx-status
Instal libwww-perl kemudian jalankan perintah munin-run nginx_status
untuk melihat statistik.
Mulai ulang layanan muni-node.
apt install libwww-perl time
pada node munin untuk masalah yang menyatakan log denganUse of uninitialized value $LWP::VERSION
pada plugin nginx.