Nginx Munin eklentisi veri göstermiyor


10

Muninx üzerinden NGinx istatistiklerini izlemek istiyorum ancak Nginx eklentileri veri göstermiyor. Munin nginx eklentilerinden sadece birinin neden çalıştığını teşhis etmek mümkün müdür?

nginx munin

Sunucu CentOS 5.3 üzerinde çalışıyor

Yanıtlar:


15

Durum bilgisi almak için nginx eklentileri aşağıdaki URL'yi kullanır:

http://127.0.0.1/nginx_status

Genellikle, nginx bu URL'yi durum verilerini gösterecek şekilde yapılandırmaz.

Eklentilerin belgelerinden, nginx'in durum verilerini belirli bir URL'de gösterecek şekilde yapılandırılması gerektiğini görüyorum.

Sitenin yapılandırmasına aşağıdaki satırları ekleyerek nginx durumunu etkinleştirmeniz gerekir:

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

Bu yapılandırmayı ekledikten sonra sunucuyu yeniden başlatmayı unutmayın ve stus URL'sinin durum verilerini döndürdüğünden emin olun.

Her eklentinin eksiksiz dokümantasyonu için şunları çalıştırabilirsiniz:

munindoc nginx_request

Bu yardımcı olur umarım.


1
Yan not: Burada belgelendiği gibi nginx'i etkinleştirmek için Ubuntu 16.04'ü çalıştırmak benim durumumda yeterli değildi. Ayrıca nginx eklentileri apt install libwww-perl timeile Use of uninitialized value $LWP::VERSIONilgili günlük belirten sorunları için munin düğümleri üzerinde vardı .
Thomas Urban

Başka bir yan not: IPv6 bugün sunucularda desteklendiğinden, varsayılan nginx_ * eklentilerinin URL'si http://localhost/IPv6'yı tercih edebilir ve bu nedenle yalnızca IPv4 yerel ana bilgisayarlara izin veren nginx yapılandırmasıyla eşleşmez. Sonunda eklentinin çalışmasını /etc/munin/plugin-conf.d/munin-nodesağlamak için URL'yi düzelterek http://127.0.0.1/nginx_status.
Thomas Urban

4

Deneyimlerime göre, bu eklentiler muhtemelen nginx yanlış yapılandırması nedeniyle çalışmıyor. Bu durumda ne yapılacağına dair kısa bir liste:

1. nginx kurulumunu kontrol edin

Nginx, HttpStubStatusModule modülü ile derlenmelidir . Aşağıdaki komutu çalıştırarak (sudo veya root altında) bunu kontrol edebilirsiniz:

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

Aşağıdaki çıktıyı görürseniz, devam edebilirsiniz.

with-http_stub_status_module

Aksi takdirde, nginx'i gerekli modül etkin olarak yeniden derlemeniz veya farklı bir kaynaktan yüklemeniz gerekir (Benim durumumda, varsayılan Debian repo doğru sürüme sahipti).

2. nginx yapılandırmasını kontrol edin

Gerekli yapılandırmayı yerleştirip etkinleştirdiğinizi varsayıyorum . Çalışıp çalışmadığını görmek sshiçin sunucunuza gidebilir ve çalıştırabilirsiniz.

wget http://localhost/nginx_status

Burada hata almazsanız, sorun eklenti yapılandırmasıdır. Sunucu burada hata döndürürse, yapılandırmayı değiştirerek hata ayıklayabilirsiniz:

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

Bundan sonra, dosyada /var/log/nginx/status.error.logsunucunun bir hata döndürmesinin nedenini tam olarak görebilirsiniz:

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

Benim durumumda (günlükten de görebileceğiniz gibi) sorun, client: ::1yapılandırma yalnızca127.0.0.1

Sorunu çözmek için cepharum'un önerisini izleyebilir veya sanal ana bilgisayar yapılandırmasını değiştirebilirsiniz:

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.1Bağlantı noktası 80 (ipv4 + ipv6) ile değiştirdiğime dikkat edin çünkü eski de çalışmadı)

3. Sistem yapılandırmasını ve bağımlılıklarını kontrol edin

Eklentinin çalışıp çalışmadığını kontrol etmek için çalıştırın

munin-run nginx_status

(eklentinin "açık" olması gerektiğini unutmayın - adresinde bir sembol bağlantısı bulunmalıdır /etc/munin/plugins- yoksa kılavuzu okuyun )

LWPKitaplıkla ilgili hatalar alırsanız (örn. LWP::UserAgentVeya LWP::VERSION), sisteminizde nginx_statuseklenti için gereken bir paket eksik .

Debian / Ubuntu'da çalıştırın

apt install libwww-perl

CentOS'ta

yum install perl-libwww-perl

Bundan sonra eklentiyi kullanarak tekrar test edin munin-run. Beklenen çıktı (sayılar farklı olacaktır):

total.value 1
reading.value 0
writing.value 1
waiting.value 0

/var/log/munin-update.log(Sunucuadı / 127.0.0.1: 4949 üzerinde hizmet nginx_status hizmetinde etiket beklemek için veri döndürmedi) hata iletilerine dayanarak, bunun libwww-perleksik olduğunu bulmak için yıllarca araştırmış olabilirdim . Bu kapsamlı cevap için çok teşekkürler.
BurninLeo

2

Muhtemelen yardımcı:

cd /etc/munin/plugins
munin-run PLUGINNAME

Ayrıca munin çalıştırmak için hata ayıklama seçeneğini kullanın.

Eklenti dosyasında sabit kodlanmış yollar olup olmadığını kontrol edin ve sisteminiz için doğru olduklarını doğrulayın:

grep '/' PLUGINNAME

Nginx eklentisi Nginx'in belirli modüllerle derlenmesine veya belirli bir formattaki log çıktısına güvenebilir. Eklentiler için herhangi bir belge sayfası var mı?


2

Önemli olan munin config'teki url.

İhtiyacın olacak

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

Not

nginx_status

Değil

nginx-status

0

Libwww-perl programını yükleyin ve munin-run nginx_statusistatistikleri görmek için komutu çalıştırın .
Çok düğümlü hizmeti yeniden başlatın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.