जवाबों:
स्थिति की जानकारी प्राप्त करने के लिए 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
उम्मीद है की यह मदद करेगा।
http://localhost/
IPv6 पसंद किया जा सकता है और इस प्रकार nginx कॉन्फ़िगरेशन को बेमेल करने जा रहा है जो IPv4 लोकलहोस्ट को अनुमति दे रहा है। URL को ठीक करके अंततः प्लगइन को काम /etc/munin/plugin-conf.d/munin-node
करने के लिए http://127.0.0.1/nginx_status
बनाया गया है।
मेरे अनुभव में, ये प्लगिन nginx मिसकॉन्फ़िगरेशन के कारण काम नहीं कर रहे हैं। इस मामले में क्या करना है, इसकी एक संक्षिप्त सूची यहां दी गई है:
Nginx को HttpStubStatusModule मॉड्यूल के साथ संकलित किया जाना चाहिए । आप निम्न आदेश (sudo या रूट के तहत) चलाकर देख सकते हैं:
nginx -V 2>&1 | grep -o with-http_stub_status_module
यदि आप निम्नलिखित आउटपुट देखते हैं, तो आप आगे बढ़ सकते हैं।
with-http_stub_status_module
अन्यथा, आपको आवश्यक मॉड्यूल के साथ 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) से प्रतिस्थापित किया था क्योंकि पूर्व में भी काम नहीं किया गया था)
यह जांचने के लिए कि क्या प्लगइन स्वयं काम कर रहा है, चलाएं
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
था कि गायब था। इस व्यापक उत्तर के लिए बहुत बहुत धन्यवाद।
संभवतः सहायक:
cd /etc/munin/plugins
munin-run PLUGINNAME
इसके अतिरिक्त डिबग विकल्प का उपयोग मुनिन-रन के लिए करें।
किसी भी कठिन कोडित पथ के लिए प्लगइन फ़ाइल की जाँच करें और सत्यापित करें कि वे आपके सिस्टम के लिए सही हैं:
grep '/' PLUGINNAME
Nginx प्लगइन Nginx पर कुछ मॉड्यूल या एक निश्चित प्रारूप में लॉग आउटपुट के साथ संकलित होने पर भरोसा कर सकता है। क्या प्लगइन्स के लिए कोई प्रलेखन पृष्ठ है?
मुनिन विन्यास में मुख्य बात यूआरएल है।
आपको चाहिये होगा
[nginx*]
env.url http://localhost/nginx_status
ध्यान दें
nginx_status
नहीं
nginx-status
Libwww-perl स्थापित करें फिर munin-run nginx_status
आँकड़े देखने के लिए कमांड चलाएँ ।
मुनि-नोड सेवा को पुनरारंभ करें।
apt install libwww-perl time
साथ अपने लॉग बताते मुद्दों के लिए मुनिन नोड्स पर थाUse of uninitialized value $LWP::VERSION
।