Nginx Munin प्लगइन कोई डेटा नहीं दिखाता है


9

मैं मुनिन के माध्यम से NGinx आँकड़ों की निगरानी करना चाहता हूँ, लेकिन Nginx प्लगइन्स कोई डेटा नहीं दिखाता है। क्या यह निदान करना संभव है कि केवल मुनिन नेग्नेक्स प्लगइन्स में से एक क्यों काम कर रहा है?

नगनेक्स मुनिन

सर्वर CentOS 5.3 पर चलता है

जवाबों:


14

स्थिति की जानकारी प्राप्त करने के लिए nginx प्लगइन्स निम्न URL पर भरोसा करते हैं:

http://127.0.0.1/nginx_status

आमतौर पर, स्थिति डेटा दिखाने के लिए nginx में यह URL कॉन्फ़िगर नहीं है।

प्लगइन्स के दस्तावेज़ीकरण से, मैं देखता हूं कि एक नाज़ुक URL में स्थिति डेटा दिखाने के लिए nginx को कॉन्फ़िगर करने की आवश्यकता है।

साइट के कॉन्फ़िगरेशन में निम्न पंक्तियों को जोड़कर आपको nginx स्थिति को सक्षम करने की आवश्यकता है:

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

इस कॉन्फ़िगरेशन को जोड़ने के बाद सर्वर को पुनरारंभ करना न भूलें, और सुनिश्चित करें कि स्टस URL स्थिति डेटा लौटाता है।

प्रत्येक प्लगइन के पूर्ण प्रलेखन के लिए, आप चला सकते हैं:

munindoc nginx_request

उम्मीद है की यह मदद करेगा।


1
साइड नोट: उबन्टु 16.04 रनिंग के रूप में यहाँ दस्तावेज के रूप में nginx को सक्षम करना मेरे मामले में पर्याप्त नहीं था। इसके अलावा मैं nginx प्लगइन्स के apt install libwww-perl timeसाथ अपने लॉग बताते मुद्दों के लिए मुनिन नोड्स पर था Use of uninitialized value $LWP::VERSION
थॉमस अर्बन

एक अन्य पक्ष नोट: चूंकि IPv6 आज सर्वरों पर समर्थित है, इसलिए nginx_ * के डिफ़ॉल्ट URL का उपयोग करके http://localhost/IPv6 पसंद किया जा सकता है और इस प्रकार nginx कॉन्फ़िगरेशन को बेमेल करने जा रहा है जो IPv4 लोकलहोस्ट को अनुमति दे रहा है। URL को ठीक करके अंततः प्लगइन को काम /etc/munin/plugin-conf.d/munin-nodeकरने के लिए http://127.0.0.1/nginx_statusबनाया गया है।
थॉमस अर्बन

4

मेरे अनुभव में, ये प्लगिन nginx मिसकॉन्फ़िगरेशन के कारण काम नहीं कर रहे हैं। इस मामले में क्या करना है, इसकी एक संक्षिप्त सूची यहां दी गई है:

1. nginx स्थापना की जाँच करें

Nginx को HttpStubStatusModule मॉड्यूल के साथ संकलित किया जाना चाहिए । आप निम्न आदेश (sudo या रूट के तहत) चलाकर देख सकते हैं:

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

यदि आप निम्नलिखित आउटपुट देखते हैं, तो आप आगे बढ़ सकते हैं।

with-http_stub_status_module

अन्यथा, आपको आवश्यक मॉड्यूल के साथ nginx को फिर से संकलित करना होगा या विभिन्न स्रोत से स्थापित करना होगा (मेरे मामले में, डिफ़ॉल्ट डेबियन रेपो का सही संस्करण था)।

2. nginx कॉन्फ़िगरेशन की जाँच करें

मैं मान रहा हूं कि आपने आवश्यक कॉन्फिग को रखा और सक्षम किया है । यह देखने के लिए कि क्या यह काम कर रहा है, आप sshअपने सर्वर पर चला सकते हैं और चला सकते हैं

wget http://localhost/nginx_status

यदि आपको यहां कोई त्रुटि नहीं मिलती है, तो समस्या प्लगइन कॉन्फ़िगरेशन है। यदि सर्वर यहां त्रुटि देता है, तो आप कॉन्फ़िगरेशन को संशोधित करके डीबग कर सकते हैं:

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

उसके बाद, फ़ाइल में /var/log/nginx/status.error.logआप सटीक कारण देख सकते हैं कि सर्वर ने त्रुटि क्यों दी:

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

मेरे मामले में (जैसा कि आप लॉग से देख सकते हैं) समस्या थी client: ::1, जबकि कॉन्फ़िगरेशन से केवल एक्सेस की अनुमति थी127.0.0.1

समस्या को हल करने के लिए, आप या तो सेफरम के सुझाव का पालन ​​कर सकते हैं या वर्चुअल होस्ट कॉन्फ़िगरेशन को संशोधित कर सकते हैं :

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.1पोर्ट 80 (ipv4 + ipv6) से प्रतिस्थापित किया था क्योंकि पूर्व में भी काम नहीं किया गया था)

3. सिस्टम कॉन्फ़िगरेशन और निर्भरता की जाँच करें

यह जांचने के लिए कि क्या प्लगइन स्वयं काम कर रहा है, चलाएं

munin-run nginx_status

(ध्यान दें कि प्लगइन को "चालू होना चाहिए" - एक सिमलिंक में मौजूद होना चाहिए /etc/munin/plugins- यदि नहीं तो मैनुअल पढ़ें )

यदि आपको LWPलाइब्रेरी (जैसे LWP::UserAgentया LWP::VERSION) के साथ त्रुटियां मिलती हैं , तो आपका सिस्टम nginx_statusप्लगइन द्वारा आवश्यक पैकेज को याद कर रहा है ।

डेबियन / Ubuntu पर, चलाएं

apt install libwww-perl

CentOS पर

yum install perl-libwww-perl

इसके बाद प्लगइन का उपयोग करके फिर से परीक्षण करें munin-run। अपेक्षित आउटपुट (संख्या भिन्न होगी):

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

में त्रुटि संदेशों के आधार पर /var/log/munin-update.log(Servername / 127.0.0.1 पर सेवा nginx_status: 4949 लेबल प्रतीक्षा के लिए कोई डेटा नहीं लौटा), मुझे यह पता लगाने के लिए वर्षों तक खोजा जा सकता libwww-perlथा कि गायब था। इस व्यापक उत्तर के लिए बहुत बहुत धन्यवाद।
BurninLeo

2

संभवतः सहायक:

cd /etc/munin/plugins
munin-run PLUGINNAME

इसके अतिरिक्त डिबग विकल्प का उपयोग मुनिन-रन के लिए करें।

किसी भी कठिन कोडित पथ के लिए प्लगइन फ़ाइल की जाँच करें और सत्यापित करें कि वे आपके सिस्टम के लिए सही हैं:

grep '/' PLUGINNAME

Nginx प्लगइन Nginx पर कुछ मॉड्यूल या एक निश्चित प्रारूप में लॉग आउटपुट के साथ संकलित होने पर भरोसा कर सकता है। क्या प्लगइन्स के लिए कोई प्रलेखन पृष्ठ है?


2

मुनिन विन्यास में मुख्य बात यूआरएल है।

आपको चाहिये होगा

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

ध्यान दें

nginx_status

नहीं

nginx-status

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.