हाल ही में, एक सौदेबाजी का "लालच" करते हुए, मैंने सर्वर को अलीबाबा क्लाउड इंटरनेशनल एडिशन हांगकांग वीपीएस होस्ट में बदल दिया। यहां जाने के बाद सबसे बड़ी अनुभूति गति में सुधार नहीं है - क्योंकि मूल रूप से उपयोग किया जाने वाला कोरियाई केडेटासेंटर वीपीएस भी दूरसंचार नेटवर्क पर पहुंचने पर बहुत तेज़ है - लेकिन अलीबाबा क्लाउड वीपीएस होस्ट का प्रदर्शन अन्य वीपीएस होस्ट की तुलना में वास्तव में अच्छा है। 1GB यह थोड़ा कमजोर है.

मैंने अलीबाबा क्लाउड हांगकांग वीपीएस के सिस्टम लोड को स्कैन करने के लिए बस एक टूल का उपयोग किया और सिस्टम लोड बढ़ता रहा। कभी-कभी मुझे पता चला कि जब मैं पृष्ठभूमि में एक लेख लिख रहा था तो मैं इसे नहीं खोल सका। मैंने सर्वर लॉग खोला और बहुत सारे असामान्य आईपी पाए, जैसे पोर्ट स्कैनिंग, एसक्यूएल इंजेक्शन, "लापता" वेबसाइट बैकअप फ़ाइलें, और एबी तनाव परीक्षण... संक्षेप में, कई असामान्य मानव पहुंच व्यवहार थे।

लॉग में आईपी व्यवहार का विश्लेषण करना एक थका देने वाला काम है, खासकर जब लॉग सैकड़ों एमबी से अधिक हो, और उन्हें टेक्स्ट फ़ाइलों के रूप में खोलना बहुत धीमा है। यह आलेख दो उत्कृष्ट सर्वर लॉग विश्लेषण उपकरण साझा करेगा: ngxtop और GoAccess। ngxtop Nginx लॉग फ़ाइलों का विश्लेषण करता है और शीर्ष कमांड के समान इंटरफ़ेस का उपयोग करके उन्हें वास्तविक समय में प्रदर्शित करता है।

ngxtop पिछली लॉग फ़ाइलों का विश्लेषण कर सकता है, और वास्तविक समय में सर्वर लॉग की निगरानी भी कर सकता है। आप लॉग में सबसे अधिक देखे जाने वाले आईपी पते, 403/500/404 त्रुटियों, अनुरोधित पेज रैंकिंग आदि का उपयोग करने की तरह ही तुरंत पता लगा सकते हैं। शीर्ष आदेश. ngxtop एक हल्का उपकरण है, जबकि GoAccess एक शक्तिशाली लॉग सांख्यिकी उपकरण की तरह है।

GoAccess न केवल ग्राफिक्स और टेक्स्ट में समृद्ध है, बल्कि तेज़ भी है, लॉग रिकॉर्ड पार्सिंग गति 8W प्रति सेकंड है, और वेबसॉकेट हर 10 सेकंड में आंकड़ों को ताज़ा करता है। GoAccess में न केवल एक कमांड लाइन इंटरफ़ेस है, बल्कि यह एक HTML वेब पेज भी उत्पन्न कर सकता है, जिससे आप लॉग में आगंतुकों की संख्या, अनुरोधित फ़ाइलें, 404 और अन्य त्रुटियां, उपयोगकर्ता स्थान, ब्राउज़र, ऑपरेटिंग सिस्टम, स्रोत यूआरएल, सहजता से देख सकते हैं। HTTP स्थिति कोड, आदि।

सर्वर लॉग विश्लेषण उपकरण: ngxtop और GoAccess - अपवादों के स्रोत को तुरंत ढूंढने के लिए वास्तविक समय की निगरानी और दृश्य प्रबंधन

संक्षेप में, ngxtop और GoAccess अपाचे और Nginx जैसे सर्वर लॉग का विश्लेषण करने के लिए दो शक्तिशाली उपकरण हैं। एक बार जब आप इन दो सॉफ़्टवेयर में महारत हासिल कर लेते हैं, तो सर्वर के लिए "संभावित" खतरनाक आईपी का खुलासा किया जा सकता है। एक वेबमास्टर के रूप में, एक और सॉफ्टवेयर का उपयोग करना सीखने का मतलब है कि आप दूसरे सर्वर का खर्च बचा सकते हैं, जैसे:

  1. किसी भी वेबसाइट से RSS और WeChat सार्वजनिक खाता अपडेट प्राप्त करने के लिए Huginn का उपयोग करें - एक वन-स्टॉप सूचना पढ़ने वाला प्लेटफ़ॉर्म बनाएं
  2. लिनक्स वीपीएस गूगल ड्राइव और ड्रॉपबॉक्स को माउंट करता है-वीपीएस होस्ट डेटा सिंक्रनाइज़ेशन और बैकअप का एहसास करता है
  3. वीपीएस सर्वर की प्रामाणिकता का पता लगाने में आपकी मदद करने के लिए तीन निःशुल्क उपकरण - वीपीएस होस्ट प्रदर्शन और गति परीक्षण विधियां

PS: 21 अक्टूबर, 2017 को अपडेट किया गया, जो मित्र अलीबाबा क्लाउड हांगकांग वीपीएस का उपयोग करने में रुचि रखते हैं, वे पहले मेरी समीक्षा पढ़ सकते हैं: अलीबाबा क्लाउड अंतर्राष्ट्रीय संस्करण हांगकांग कंप्यूटर कक्ष की गति और प्रदर्शन मूल्यांकन - तेज़ लेकिन डिस्क आईओ और मेमोरी यह अड़चन है। यदि आप भी वीपीएस सर्वर नेटवर्क की स्थिरता की निगरानी करना चाहते हैं, तो आप इस टूल का उपयोग कर सकते हैं: स्मोकपिंग इंस्टॉलेशन और कॉन्फ़िगरेशन - विज़ुअल मास्टर/स्लेव परिनियोजन के लिए एक निःशुल्क ओपन सोर्स नेटवर्क प्रदर्शन मॉनिटरिंग टूल।

1. ngxtop की स्थापना और उपयोग

1.1 एनजीएक्सटॉप इंस्टालेशन

प्रोजेक्ट मुखपृष्ठ:

  1. HTTPS://GitHub.com/Lebinhong/वह छोटा शीर्ष

ngxtop, Nginx सर्वर लॉग के लिए उपयुक्त है। ngxtop को निम्नलिखित कमांड के साथ स्थापित किया जा सकता है:

Fedora:yum install python-pip
CentOS/RHEL需先安装EPEL,安装完后:yum install python-pip
Debian/Ubuntu:apt-get install python-pip

pip install ngxtop

या आप इसे सीधे स्रोत से इंस्टॉल कर सकते हैं:

wget https://github.com/lebinh/ngxtop/archive/master.zip -O ngxtop-master.zip
unzip ngxtop-master.zip
cd ngxtop-master
python setup.py install

1.2  एनजीएक्सटॉप उपयोग

ngxtop का मूल उपयोग इस प्रकार है:

gxtop [选项]
ngxtop [选项] (print|top|avg|sum) <变量>
ngxtop info

विकल्पों में निम्नलिखित पैरामीटर हैं:

-l : लॉग फ़ाइल का पूरा पथ निर्दिष्ट करें (Nginx या Apache2)

-f : लॉग प्रारूप

-नो-फ़ॉलो: वास्तविक समय में लॉग फ़ाइल में नए जोड़े गए लॉग को संसाधित करने के बजाय वर्तमान में लिखी गई लॉग फ़ाइल को संसाधित करें

-t : अद्यतन आवृत्ति

-एन: लाइन नंबर प्रदर्शित करें

-o : सॉर्टिंग नियम (डिफ़ॉल्ट एक्सेस काउंट है)

-ए ..., -ए ...: आउटपुट में अभिव्यक्तियाँ जोड़ें (आम तौर पर समग्र अभिव्यक्तियाँ जैसे कि योग, औसत, न्यूनतम, अधिकतम, आदि)।

-v: आउटपुट विस्तृत जानकारी

-i: केवल वही रिकॉर्ड संसाधित करें जो नियमों से मेल खाते हों

-c <file> या –config <file> nginx कॉन्फ़िगरेशन फ़ाइल को निर्दिष्ट करता है और स्वचालित रूप से लॉग प्रारूप का विश्लेषण करता है

-i <फ़िल्टर-अभिव्यक्ति> या –फ़िल्टर <फ़िल्टर-अभिव्यक्ति> अभिव्यक्ति को संतुष्ट करने वाले फ़िल्टर संसाधित किए जाएंगे

-p <फ़िल्टर-एक्सप्रेशन> या – प्री-फ़िल्टर <फ़िल्टर-एक्सप्रेशन> प्री-पार्सिंग चरण में जाँच करने के लिए इन-फ़िल्टर एक्सप्रेशन।

ngxtop के वेरिएबल हैं: remote_addr, दूरदराज_उपयोगकर्ता, time_local, अनुरोध, request_path, स्थिति, body_bytes_sent, http_referer, http_user_agent। इसका उपयोग मुख्य रूप से आईपी एड्रेस, रिक्वेस्ट पाथ, HTTP स्टेटस, रेफरर, यूजर_एजेंट आदि का विश्लेषण करने के लिए किया जाता है।

1.3  एनजीएक्सटॉप उदाहरण

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

404 त्रुटियों के लिए शीर्ष दस अनुरोध URL खोजें। कमांड कोड:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow top request_path --filter 'status == 404'

प्रभाव इस प्रकार है:

सर्वाधिक देखे गए शीर्ष दस आईपी पतों का पता लगाएं। कमांड कोड:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow --group-by remote_addr

प्रभाव इस प्रकार है:

शीर्ष दस ट्रैफ़िक आईपी पते का पता लगाएं। कमांड कोड:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow --order-by 'avg(bytes_sent) * count'

400 से ऊपर त्रुटि कोड ढूंढें और अनुरोध, स्थिति और http_referer प्रदर्शित करें। कमांड कोड:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow -i 'status >= 400' print request status http_referer

स्टेटस कोड 200 और wzfou से शुरू होने वाले request_path के साथ शीर्ष 10 औसत बाइट्स_सेंट मान खोजें। कमांड कोड:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow avg bytes_sent --filter 'status == 200 and request_path.startswith("wzfou")'

उपरोक्त आदेशों के माध्यम से, आप मूल रूप से कुछ असामान्य अनुरोधों के आईपी पते को तुरंत लॉक कर सकते हैं। डिफ़ॉल्ट रूप से, ngxtop पहले 10 रिकॉर्ड प्रदर्शित करेगा। आप प्रदर्शित संख्या को नियंत्रित करने के लिए पैरामीटर -n xxx जोड़ सकते हैं। आदेश इस प्रकार है:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow --group-by remote_addr -n 20

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

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --group-by remote_addr

प्रभाव इस प्रकार है:

2. GoAccess की स्थापना और उपयोग

2.1  गोएक्सेस इंस्टालेशन

गोएक्सेस आधिकारिक वेबसाइट:

  1. HTTPS://go access.IO/

GoAccess Apache, Nginx, Amazon S3, Elastic Load Balanceing, और CloudFront जैसे सर्वर लॉग के विश्लेषण का समर्थन करता है। इंस्टॉलेशन कमांड इस प्रकार है:

apt-get install libncursesw5-dev libgeoip-dev
wget http://tar.goaccess.io/goaccess-1.2.tar.gz
tar -xzvf goaccess-1.2.tar.gz
cd goaccess-1.2/
./configure --enable-utf8 --enable-geoip=legacy
make
make install

अपनी आवश्यकताओं के आधार पर, आप GoAccess स्थापित करते समय कॉन्फ़िगरेशन विकल्पों को समायोजित कर सकते हैं। निम्नलिखित नुसार:

--enable-debug डिबग फ़्लैग के साथ संकलित करें और कंपाइलर अनुकूलन बंद करें।
--enable-utf8 वाइड कैरेक्टर सपोर्ट। Ncursesw मॉड्यूल पर निर्भर करता है।
--enable-geoip=<legacy|mmdb> जियोलोकेशन समर्थन। मैक्समाइंड जियोआईपी मॉड्यूल पर निर्भर करता है। लिगेसी मूल जियोआईपी डेटाबेस का उपयोग करेगी। एमएमडीबी उन्नत जियोआईपी2 डेटाबेस का उपयोग करेगा।
--enable-tcb=<memhash|btree> टोक्यो कैबिनेट भंडारण समर्थन। मेम्हैश टोक्यो कैबिनेट के इन-मेमोरी हैश डेटाबेस का उपयोग करेगा। btree टोक्यो कैबिनेट के ऑन-डिस्क B+Tree डेटाबेस का उपयोग करेगा।
-disable-zlib B+Tree डेटाबेस पर zlib संपीड़न के उपयोग को अक्षम करता है।
--disable-bzip B+Tree डेटाबेस पर bzip2 कम्प्रेशन के उपयोग को अक्षम करें।
--with-getline पूर्ण लाइन अनुरोधों को पार्स करने के लिए गतिशील रूप से विस्तारित लाइन बफर का उपयोग करने के लिए का कारण बनता है, अन्यथा एक निश्चित आकार (4096) बफर का उपयोग किया जाएगा।
--with-openssl OpenSSL का समर्थन करने के लिए GoAccess और उसके WebSocket सर्वर के बीच संचार सक्षम करता है।

2.2  गोएक्सेस उपयोग

GoAccess सिंटैक्स इस प्रकार है:

goaccess [filename] [ options ... ] [-c][-M][-H][-q][-d][...]

आमतौर पर उपयोग किए जाने वाले मापदंडों का वर्णन इस प्रकार है:

-f –लॉग-फ़ाइल=<लॉगफ़ाइल>

इनपुट लॉग फ़ाइल का पथ निर्दिष्ट करें. यदि कॉन्फ़िगरेशन फ़ाइल में एक इनपुट फ़ाइल निर्दिष्ट की जाती है, तो इसे -f पैरामीटर के माध्यम से कमांड लाइन पर निर्दिष्ट एक से अधिक प्राथमिकता दी जाती है।

-एल-लॉग-डीबग=<फ़ाइलनाम>

सभी डिबगिंग जानकारी निर्दिष्ट फ़ाइल में भेजें। कॉन्फ़िगरेशन विकल्पों को --enable-debug निर्दिष्ट करने की आवश्यकता है

-पी-कॉन्फिग-फ़ाइल=<कॉन्फिगफ़ाइल>

एक कस्टम कॉन्फ़िगरेशन फ़ाइल का उपयोग करने के लिए निर्दिष्ट करता है। यदि यह पैरामीटर सेट है, तो इसकी प्राथमिकता वैश्विक कॉन्फ़िगरेशन फ़ाइल (यदि कोई हो) से अधिक होगी।

–अमान्य-अनुरोध=<फ़ाइल नाम>

निर्दिष्ट फ़ाइल में अमान्य अनुरोध लॉग करें।

--नो-ग्लोबल-कॉन्फ़िगरेशन

वैश्विक कॉन्फ़िगरेशन फ़ाइलों को लोड करना अक्षम करें। संभावित निर्देशिकाएं /usr/etc/, /etc/ या /usr/local/etc/ होनी चाहिए, जब तक कि ./configure चलाते समय निर्दिष्ट न किया जाए --sysconfdir=/dir.

-ए-एजेंट-सूची

UserAgent सूची खोलें. चालू होने पर, पार्सिंग गति कम हो जाएगी.

-डी-आउटपुट-रिज़ॉल्वर के साथ

HTML या JSON रिपोर्ट आउटपुट करते समय आईपी रिज़ॉल्यूशन सक्षम करें।

-ई-बहिष्कृत-आईपी <आईपी|आईपी-रेंज>

IPv4 या IPv6 पता बहिष्कृत करें. आईपी ​​​​सेग्मेंट (स्टार्ट-एंड) का प्रतिनिधित्व करने के लिए कनेक्टर्स का उपयोग करें।

-एच -http-प्रोटोकॉल=<हां|नहीं>

HTTP अनुरोध प्रोटोकॉल स्विच। एक अनुरोध फ़ील्ड बनाया जाएगा जिसमें अनुरोध प्रोटोकॉल + वास्तविक अनुरोध शामिल होगा।

-एम -http-विधि=<हां|नहीं>

HTTP अनुरोध विधि स्विच। एक अनुरोध फ़ील्ड बनाई जाएगी जिसमें अनुरोध विधि + वास्तविक अनुरोध शामिल होगा।

-o –आउटपुट=<json|csv>

आउटपुट स्वरूप निर्धारित करने के लिए प्रत्यय का उपयोग करके दी गई फ़ाइल को मानक आउटपुट पर पुनर्निर्देशित करें:

-क्यू-नो-क्वेरी-स्ट्रिंग

अनुरोधित क्वेरी स्ट्रिंग पर ध्यान न दें. वह है: www.google.com/page.htm?query => www.google.com/page.htm
नोट: क्वेरी स्ट्रिंग को हटाने से मेमोरी की खपत बहुत कम हो जाएगी, खासकर टाइमस्टैम्प अनुरोधों के लिए।

-आर-नो-टर्म-रिज़ॉल्वर

टर्मिनल आउटपुट के दौरान आईपी रिज़ॉल्यूशन अक्षम करें।

-444-as-404

गैर-मानक स्थिति 444 को 404 के रूप में संभालें।

-4xx-से-अद्वितीय-गणना

अद्वितीय विज़िटरों की संख्या में 4xx क्लाइंट त्रुटियों की संख्या जोड़ें।

-सभी-स्थैतिक-फ़ाइलें

क्वेरी स्ट्रिंग वाली स्थिर फ़ाइलों की गणना करें।

–दिनांक-विशेष=<दिनांक|घंटा>

दिनांक प्रदर्शन प्रारूप सेट करें, एक मानक दिनांक प्रारूप (डिफ़ॉल्ट) है, और दूसरा दिनांक के साथ जोड़े गए घंटों वाला प्रारूप है।
केवल अतिथि पैनल में मान्य। प्रति घंटे के स्तर पर विज़िटर डेटा का विश्लेषण करने के लिए उपयोगी। प्रदर्शन प्रारूप उदाहरण: 18/दिसंबर/2010:19

--डबल डिकोड

डबल-एन्कोडेड मान को डीकोड करें। जिसमें यूजरएजेंट, रिक्वेस्ट और रेफरर शामिल हैं।

–सक्षम-पैनल=<पैनल>

निर्दिष्ट पैनल खोलें. पैनल सूची:

–घंटा-कल्पना=<घंटा|मिनट>

समय का प्रदर्शन प्रारूप सेट करें, एक मानक समय प्रारूप (डिफ़ॉल्ट) है, और दूसरा समय के साथ जोड़े गए मिनटों वाला प्रारूप है (प्रत्येक दस मिनट)।
का उपयोग समय वितरण पैनल के लिए किया जाता है। विशिष्ट समय अवधि के दौरान ट्रैफ़िक स्पाइक्स का विश्लेषण करने के लिए उपयोगी।

-अनदेखा-क्रॉलर

क्रॉलर्स पर ध्यान न दें.

–अनदेखा-पैनल=<पैनल>

निर्दिष्ट पैनल पर ध्यान न दें. पैनल सूची:

–अनदेखा-रेफ़रर=<रेफ़रर>

आँकड़ों के स्रोत पर ध्यान न दें. वाइल्डकार्ड समर्थित हैं. उदाहरण के लिए: *.domain.com ww?.domain.*

–अनदेखा-स्थिति=<स्थिति>

पार्सिंग पर ध्यान न दें या एक या अधिक स्थिति कोड प्रदर्शित करें। यदि एकाधिक स्थिति कोड हैं, तो एक समय में एक को निर्दिष्ट करने के लिए इस पैरामीटर का उपयोग करें।

–संख्या-परीक्षण=<संख्या>

परीक्षण पंक्तियों की संख्या निर्धारित करें, अर्थात दिए गए लॉग/दिनांक/समय प्रारूप का उपयोग करके एक्सेस लॉग का परीक्षण करें। डिफ़ॉल्ट मान 10 पंक्तियाँ है. यदि 0 पर सेट किया गया है, तो पार्सर कोई परीक्षण नहीं करेगा और सीधे पूरी फ़ाइल को पार्स कर देगा। यदि कोई पंक्ति संख्या तक पहुंचने से पहले दिए गए लॉग/दिनांक/समय प्रारूप से मेल खाती है, तो पार्सर लॉग फ़ाइल को वैध मानेगा, अन्यथा GoAccess EXIT_FAILURE लौटाएगा और प्रासंगिक त्रुटि संदेश प्रदर्शित करेगा।

-प्रक्रिया-और-निकास

लॉग को पार्स करें और बाहर निकलते समय डेटा आउटपुट न करें। मुख्य रूप से तब उपयोग किया जाता है जब आप केवल रिपोर्ट आउटपुट किए बिना डिस्क डेटाबेस में डेटा जोड़ना चाहते हैं।

-रियल-ओएस

वास्तविक ऑपरेटिंग सिस्टम नाम प्रदर्शित करें. उदाहरण के लिए: विंडोज़ एक्सपी, स्नो लेपर्ड।

-सॉर्ट-पैनल=<पैनल,फ़ील्ड,ऑर्डर>

एस प्रारंभिक लोडिंग के दौरान पैनलों को सॉर्ट करता है। विकल्पों को अल्पविराम से अलग करके क्रमबद्ध करें। विकल्प प्रारूप का उपयोग करते हैं: पैनल, मीट्रिक, ऑर्डर

--स्थैतिक-फ़ाइल <एक्सटेंशन>

स्थिर फ़ाइल प्रत्यय जोड़ें. उदाहरण के लिए: .mp3. प्रत्यय नाम केस-संवेदी होते हैं.

-जी-एसटीडी-जियोआईपी

मानक जियोआईपी डेटाबेस, कम मेमोरी फ़ुटप्रिंट।

-जियोआईपी-डेटाबेस <जियोसिटीफाइल>

जियोआईपी डेटाबेस पथ सेट करें। उदाहरण के लिए: जियोलाइटसिटी.डैट। इसे स्थानीय रूप से maxmind.com से डाउनलोड करना होगा। समर्थन IPv4 और IPv6 दोनों के लिए उपलब्ध है। ध्यान दें: --geoip-city-data, --geoip-database के लिए एक उपनाम है।
नोट: यदि जियोआईपी2 का उपयोग कर रहे हैं, तो आपको मैक्समाइंड से शहर/देश डेटाबेस डाउनलोड करना होगा और इसे --geoip-database के माध्यम से सेट करना होगा।

GoAccess लॉग प्रारूप। GoAccess में सर्वर लॉग फॉर्मेट सेट करने के लिए एक पैरामीटर भी है: -लॉग-फॉर्मेट <लॉगफॉर्मेट>। पैरामीटर लॉग-प्रारूप के बाद एक स्पेस कैरेक्टर या टैब डिलीमीटर (t) आता है, जिसका उपयोग लॉग स्ट्रिंग प्रारूप को निर्दिष्ट करने के लिए किया जाता है।

यदि आप नीचे दी गई तालिका में पूर्वनिर्धारित लॉग प्रारूप नाम का उपयोग कर रहे हैं, तो इसे सीधे GoAccess लॉग/दिनांक/समय प्रारूप में एक चर के रूप में उपयोग किया जा सकता है।

COMBINED     | 联合日志格式
VCOMBINED    | 支持虚拟主机的联合日志格式
COMMON       | 通用日志格式
VCOMMON      | 支持虚拟主机的通用日志格式
W3C          | W3C 扩展日志格式
SQUID        | Native Squid 日志格式
CLOUDFRONT   | 亚马逊 CloudFront Web 分布式系统
CLOUDSTORAGE | 谷歌云存储
AWSELB       | 亚马逊弹性负载均衡
AWSS3        | 亚马逊简单存储服务 (S3)

2.3  लॉग फॉर्मेट कैसे सेट करें

सबसे पहले, देखें कि आपका log_format क्या है। log_format निर्देश इस प्रकार है:

सिंटैक्स: log_format नाम स्ट्रिंग...;
डिफ़ॉल्ट मान: log_format संयुक्त "...";
कॉन्फ़िगरेशन अनुभाग: http

नाम प्रारूप नाम का प्रतिनिधित्व करता है, और स्ट्रिंग समकक्ष प्रारूप का प्रतिनिधित्व करता है। log_format में एक डिफ़ॉल्ट संयुक्त लॉग प्रारूप है जिसे सेट करने की आवश्यकता नहीं है, जो अपाचे के संयुक्त लॉग प्रारूप के बराबर है, जैसा कि नीचे दिखाया गया है:

log_format  combined  '$remote_addr - $remote_user  [$time_local]  '
                                   ' "$request"  $status  $body_bytes_sent  '
                                   ' "$http_referer"  "$http_user_agent" ';

बेशक, आप अपनी आवश्यकताओं के अनुसार वह जानकारी भी जोड़ सकते हैं जिसे सर्वर लॉग को प्राप्त करने की आवश्यकता है। लॉग प्रारूप में निम्नलिखित चर की अनुमति है:

remote_addr, $http_x_forwarded_for 记录客户端IP地址
remote_user 记录客户端用户名称
request 记录请求的URL和HTTP协议
status 记录请求状态
body_bytes_sent 发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。
bytes_sent 发送给客户端的总字节数。
connection 连接的序列号。
connection_requests 当前通过一个连接获得的请求数量。
msec 日志写入时间。单位为秒,精度是毫秒。
pipe 如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。
http_referer 记录从哪个页面链接访问过来的
http_user_agent 记录客户端浏览器相关信息
request_length 请求的长度(包括请求行,请求头和请求正文)。
request_time 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
time_iso8601 ISO8601标准格式下的本地时间。
time_local 通用日志格式下的本地时间。

निम्नलिखित log_format सेटिंग का एक उदाहरण है:

http {
 log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                                        '"$status" $body_bytes_sent "$http_referer" '
                                        '"$http_user_agent" "$http_x_forwarded_for" '
                                        '"$gzip_ratio" $request_time $bytes_sent $request_length';
 
 log_format srcache_log '$remote_addr - $remote_user [$time_local] "$request" '
                                '"$status" $body_bytes_sent $request_time $bytes_sent $request_length '
                                '[$upstream_response_time] [$srcache_fetch_status] [$srcache_store_status] [$srcache_expire]';
 
 open_log_file_cache max=1000 inactive=60s;
 
 server {
 server_name ~^(www.)?(.+)$;
 access_log logs/$2-access.log main;
 error_log logs/$2-error.log;
 
 location /srcache {
 access_log logs/access-srcache.log srcache_log;
 }
 }
}

यह GoAccess लॉग प्रारूप और सर्वर लॉग-प्रारूप: के बीच पत्राचार है

%t 匹配time-format格式的时间字段

%d 匹配date-format格式的日期字段

%h host(客户端ip地址,包括ipv4和ipv6)

%r 来自客户端的请求行

%m 请求的方法

%U URL路径

%H 请求协议

%s 服务器响应的状态码

%b 服务器返回的内容大小

%R HTTP请求头的referer字段

%u 用户代理的HTTP请求报头

%D 请求所花费的时间,单位微秒

%T 请求所花费的时间,单位秒

%^ 忽略这一字段

GoAccess लॉग संशोधन उदाहरण:

log_format access '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $http_x_forwarded_for $request_time $upstream_response_time';

GoAccess की डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल goaccess.conf को /usr/local/etc पथ में रखा गया है। डिफ़ॉल्ट प्रारूप है: log-format %h %^[%d: %t %^] "%r" %s %b "%R" "%u"। उपरोक्त सर्वर लॉग प्रारूप का निरीक्षण करें और पाएं कि अधिक प्रतिक्रिया समय $request_time और अपस्ट्रीम प्रतिक्रिया समय $upstream_response_time है।

हम इसे इस प्रकार संशोधित कर सकते हैं:

原来:log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
修改:log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u" %^ %^ %T

अंतिम तीन तत्व %^ %^ %T, %^ का अर्थ है अनदेखा करना, %T का अर्थ है "प्रतिक्रिया समय सेकंड में, मिलीसेकंड तक सटीक"। GoAccess के प्रारूप को संशोधित करके, यह हमारे सर्वर लॉग प्रारूप से मेल खाता है।

2.4  गोएक्सेस उदाहरण

यदि आपका सर्वर सामान्य लॉग प्रारूप, संयुक्त लॉग प्रारूप का उपयोग करता है, जिसमें वर्चुअल होस्ट, W3C प्रारूप और अमेज़ॅन क्लाउडफ्रंट (वितरित डाउनलोड) आदि शामिल हैं, तो लॉग प्रारूप को संशोधित करने की कोई आवश्यकता नहीं है, बस इसे सीधे उपयोग करें। LNMP और Oneinstack दोनों संयुक्त प्रारूप का उपयोग करते हैं।

GoAccess टर्मिनल में लॉग कमांड का विश्लेषण करता है:

goaccess -d -f /data/wwwlogs/wzfou.com_nginx.log --log-format=COMBINED

उपरोक्त आदेश में, -f विश्लेषण किए जाने वाले लॉग /पथ/टू/लॉग को निर्दिष्ट करता है; -लॉग-प्रारूप लॉग प्रारूप, एलएनएमपी डिफ़ॉल्ट प्रारूप है: संयुक्त। दौड़ने के बाद प्रभाव इस प्रकार है:

ऑपरेशन हॉट कुंजियाँ इस प्रकार हैं:

F1 या h मुख्य सहायता पृष्ठ।

F5मुख्य विंडो को फिर से बनाएं।

qप्रोग्राम, वर्तमान विंडो या क्रैश हुए मॉड्यूल से बाहर निकलें।

o या ENTER चयनित मॉड्यूल का विस्तार करता है या एक विंडो खोलता है।

0-9 और Shift + 0 चयनित मॉड्यूल को सक्रिय करें।

jविस्तारित मॉड्यूल में नीचे स्क्रॉल करें।

kविस्तारित मॉड्यूल में ऊपर स्क्रॉल करें।

cरंग योजना सेट करें या बदलें।

^ fवर्तमान मॉड्यूल में एक स्क्रीन को आगे स्क्रॉल करें।

^ bवर्तमान मॉड्यूल में एक स्क्रीन को पीछे की ओर स्क्रॉल करें।

TABटॉगल मॉड्यूल (आगे)।

SHIFT + TABस्विच मॉड्यूल (पीछे की ओर)।

s सक्रिय मॉड्यूल के विकल्पों को क्रमबद्ध करता है।

/ सभी मॉड्यूल में खोज करता है (नियमित अभिव्यक्तियों का समर्थन करता है)।

nवह स्थान ढूंढें जहां अगली घटना घटित होगी।

gपहले विकल्प या स्क्रीन के शीर्ष पर जाएँ।

Gअंतिम विकल्प या स्क्रीन के नीचे जाएं।

यदि आप शीर्ष दस सबसे अधिक देखे गए आईपी पते देखना चाहते हैं, तो मॉड्यूल विवरण खोलने के लिए संख्यात्मक कुंजी 5 दबाएं। जैसा कि नीचे दिया गया है:

कई अन्य डिजिटल संगत मॉड्यूल इस प्रकार हैं:

"प्रति दिन विज़िट" को लक्षित करने के लिए 1 दबाएँ

"सर्वाधिक अनुरोधित URL" पर जाने के लिए 2 दबाएँ

"सर्वाधिक अनुरोधित स्टेटिक फ़ाइलें" पर जाने के लिए 3 दबाएँ

"सर्वाधिक अनुरोधित 404" पर जाने के लिए 4 दबाएँ

"सर्वाधिक अनुरोधित उपयोगकर्ता आईपी" पर जाने के लिए 5 दबाएँ

"उपयोगकर्ता के ऑपरेटिंग सिस्टम" पर जाने के लिए 6 दबाएँ

"उपयोगकर्ता के ब्राउज़र" पर जाने के लिए 7 दबाएँ

प्रति घंटा सांख्यिकी पर जाने के लिए 8 दबाएँ

GoAccess आउटपुट। कमांड इस प्रकार है:

एक HTML रिपोर्ट जनरेट करें:

# goaccess access.log -a -o report.html

JSON रिपोर्ट जनरेट करें:

# goaccess access.log -a -d -o report.json

एक CSV फ़ाइल जनरेट करें:

# goaccess access.log --no-csv-summary -o report.csv

GGoAccess बहुत लचीला है और वास्तविक समय पार्सिंग और फ़िल्टरिंग का समर्थन करता है। उदाहरण के लिए: आपको वास्तविक समय लॉग की निगरानी करके समस्याओं का त्वरित निदान करने की आवश्यकता है:

# tail -f access.log | goaccess -

इससे भी बेहतर, आप पैटर्न मिलान टूल के साथ काम करने के लिए टेल -एफ का भी उपयोग कर सकते हैं, जैसे: grep, awk, sed, आदि।

# tail -f access.log | grep -i --line-buffered 'firefox' | goaccess --log-format=COMBINED -

या आप पाइप खोलकर फ़ाइल को स्क्रैच से पार्स कर सकते हैं और उसी समय एक फ़िल्टर लागू कर सकते हैं:

# tail -f -n +0 access.log | grep --line-buffered 'Firefox' | goaccess -o out.html --real-time-html -

उदाहरण के लिए:

GoAccess को Html पर आउटपुट करें और फिर इसे ब्राउज़र से एक्सेस करें। आप निम्न कमांड का उपयोग कर सकते हैं:

goaccess -d -f /data/wwwlogs/wzfou.com_nginx.log --log-format=COMBINED -a > /data/wwwroot/howsvps.com/wzfou.html

ब्राउज़र से इसे एक्सेस करने का प्रभाव इस प्रकार है (बड़ा करने के लिए क्लिक करें):

GoAccess द्वारा चार्ट आउटपुट बहुत सुंदर हैं, और आप चार्ट में विस्तृत विकल्प भी देख सकते हैं। विवरण के लिए, आप आधिकारिक वेबसाइट पर डेमो भी देख सकते हैं: https://rt.goaccess.io/

GoAccess को Html में आउटपुट करें और वास्तविक समय में इसे रीफ्रेश करें। कमांड इस प्रकार है:

goaccess -d -f /data/wwwlogs/howsvps.com_nginx.log --log-format=COMBINED -a > /data/wwwroot/howsvps.com/wzfou.html --real-time-html --port=9870 --daemonize

उपरोक्त से पता चलता है कि डेमॉन GoAccess शुरू करने के बाद, एक लंबा कनेक्शन स्थापित करने के लिए वेबसॉकेट का उपयोग करता है। यह डिफ़ॉल्ट रूप से पोर्ट 7890 को सुनता है। आप --port पैरामीटर के माध्यम से पोर्ट नंबर निर्दिष्ट कर सकते हैं।

पोर्ट नंबर निर्दिष्ट करने के बाद, इसे अपने वीपीएस फ़ायरवॉल में खोलना याद रखें:

iptables -A INPUT -p tcp -m tcp --dport 9870 -j ACCEPT

3. सारांश

ngxtop सरल खोज आवश्यकताओं के लिए उपयुक्त है, जबकि GoAccess समग्र विश्लेषण पर ध्यान केंद्रित करता है और इसे आंकड़ों के रूप में भी उपयोग किया जा सकता है। यदि आपकी वेबसाइट एसएसएल का उपयोग करती है, तो जब GoAccess वास्तविक समय की निगरानी के लिए HTML पेज आउटपुट करता है, तो कॉन्फ़िगरेशन फ़ाइल goaccess.conf कुंजी में ssl-cert और ssl- को कॉन्फ़िगर करना याद रखें। आइटम।

बेशक, हम समय-समय पर GoAccess से सांख्यिकीय HTML पेज बनाने के लिए कहने के लिए crontab का उपयोग कर सकते हैं, जो सर्वर लॉग की वास्तविक समय की ऑनलाइन निगरानी के बराबर है। कोड इस प्रकार है (हर 5 मिनट में HtmL पेज जेनरेट करें):

*/5 * * * * goaccess -d -f /data/wwwlogs/wzfou.com_nginx.log --log-format=COMBINED -a > /data/wwwroot/wzfou.com/wzfou.html

उन लोगों के लिए जो GoAccess लॉग प्रारूप सेट करना नहीं जानते हैं, आप सीधे ऑनलाइन रूपांतरण टूल का उपयोग कर सकते हैं: https://github.com/stockrt/nginx2goaccess। आदेश देना:

用法: ./nginx2goaccess.sh '<log_format>'

./nginx2goaccess.sh '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'

आउटपुट परिणाम सीधे GoAccess लॉग प्रारूप सेटिंग्स में उपयोग किए जा सकते हैं:

- Generated goaccess config:

time-format %T
date-format %d/%b/%Y
log_format %h - %^ [%d:%t %^] "%r" %s %b "%R" "%u"

उत्तर छोड़ दें