2010-01-03 11 views
15

मैं ग्रेप का उपयोग पार्स करने के लिए मेरे व्यापार के माध्यम से एप्लिकेशन लॉग, लेकिन यह भावना है कि मैं नेत्रहीन ट्राउल की जरूरत उत्पादन के माध्यम से देखने के लिए आदि क्या हुआलॉग फ़ाइलों को पार्स करने के लिए सबसे अच्छा टूल क्या है?

मैं सोच रहा हूँ अगर पर्ल एक बेहतर विकल्प है में सीमित है? पर्ल के साथ लॉग और स्ट्रिंग पार्सिंग सीखने के लिए कोई अच्छा संसाधन?

मुझे यह भी विश्वास होगा कि पाइथन इसके लिए अच्छा होगा। पर्ल बनाम पायथन बनाम 'grep लिनक्स पर'?

+0

उत्तर के लिए सभी को धन्यवाद। मुझे लगता है कि व्यावहारिक रूप से आईडी को पर्ल या grep के साथ रहना है। पाइथन/रूबी आदि चलाने के लिए परमिट प्राप्त करने वाले उत्पादन बक्से पर ही एक परियोजना में बदल जाएगा। मुझे लगता है कि मैंने अपना समय जीईपी में काम करने के लिए अपने रेगेक्स ज्ञान को अपग्रेड किया था। – user242591

+2

@ कोडरज़ंबेसी: कृपया "बेस्ट" और "बेहतर" को परिभाषित करने के साथ क्या परिभाषित करें? सस्ता? और तेज? बेहतर जीयूआई विकास उपकरण? अधिक विक्रेता समर्थन/आप सबसे अच्छा क्या मतलब है? –

उत्तर

9

अंत में, यह वास्तव में, कितना अर्थ विज्ञान आप की पहचान करना चाहते पर निर्भर करता है कि क्या आपके लॉग आम पैटर्न फिट है, और क्या आप पार्स डेटा के साथ क्या करना चाहते हैं।

यदि आप अपनी जरूरतों को ढूंढने के लिए नियमित अभिव्यक्तियों का उपयोग कर सकते हैं, तो आपके पास बहुत सारे विकल्प हैं। पर्ल एक लोकप्रिय भाषा है और इसमें बहुत ही सुविधाजनक देशी आरई सुविधाएं हैं। मैं व्यक्तिगत रूप से पाइथन के साथ बहुत अधिक आरामदायक महसूस करता हूं और पाते हैं कि आरईएस करने के लिए थोड़ा जोड़ा परेशानी महत्वपूर्ण नहीं है।

आप आरई मिलान से होशियार कुछ करना, या तर्क का एक बहुत चाहते हैं करना चाहते हैं, तो आप अजगर के साथ या यहां तक ​​कि जावा/सी ++/आदि के साथ अधिक सहज हो सकता है। उदाहरण के लिए, पाइथन में लाइन-बाय-लाइन को पढ़ना आसान है और फिर मैचों के लिए विभिन्न पूर्वानुमान कार्यों और प्रतिक्रियाओं को लागू करना आसान है, जो कि आपके पास एक नियम है जिसे आप लागू करना चाहते हैं।

4

सभी स्क्रिप्टिंग भाषाएं अच्छे उम्मीदवार हैं: पर्ल, पायथन, रूबी, PHP, और एडब्ल्यूके इसके लिए ठीक हैं। इन भाषाओं में से किसी एक का उपयोग एक (छोटे) आकार से शुरू होने वाले लॉग पर peering से बेहतर है।

Wearing Ruby Slippers to Work रूबी में ऐसा करने का एक उदाहरण है, क्यों की अनोखी शैली में लिखा है। यहां एक basic example in Perl है। मेरा सुझाव है कि आप इनमें से एक भाषा चुनते हैं और क्रैकिंग शुरू करते हैं।

1

मैं इस list अमूल्य लगता है जब कि एक अजगर के साथ पार्स करने के लिए की आवश्यकता है किसी भी नौकरी के साथ काम कर।

मैं बड़े/जटिल लॉगों को पार्स करने के लिए पर्ल का उपयोग नहीं करता - केवल पठनीयता के लिए (मेरे लिए पर्ल की गति (बड़ी नौकरियां) की गति - लेकिन शायद यह मेरा पर्ल कोड (मुझे सुधारना चाहिए))।

हालांकि यदि grep आपकी आवश्यकताओं को पूरी तरह से उपयुक्त बनाता है - वास्तव में कोई पूर्ण उड़ा पार्सर लिखने में उलझने का कोई कारण नहीं है। सरलतम समाधान आमतौर पर सबसे अच्छा होता है, और grep एक अच्छा उपकरण है।

2

पर्ल पर एक बड़ा फायदा है पाइथन यह है कि टेक्स्ट पार्सिंग करते समय regular expressions का उपयोग सीधे भाषा वाक्यविन्यास के हिस्से के रूप में करने की क्षमता होती है। उदाहरण के लिए:

if ($line =~ m/^Regex/) { 
    ... code goes here 
} 

पर्ल भी प्रदान करती है capture groups सीधे $ 1, $ 2, आदि, यह बहुत ही सरल के साथ काम करने के लिए कर रही है। लॉगफाइल के प्रारूप और ढांचे के आधार पर आप पार्स करने की कोशिश कर रहे हैं, यह काफी उपयोगी साबित हो सकता है (या, यदि इसे निश्चित चौड़ाई फ़ाइल के रूप में पार्स किया जा सकता है या सरल तकनीकों का उपयोग करके, बहुत उपयोगी नहीं है)।

यह सब सिर्फ वाक्यात्मक चीनी, वास्तव में है, और अन्य भाषाओं में भी आप नियमित अभिव्यक्ति और कैप्चर समूहों का उपयोग की अनुमति देते हैं (वास्तव में, लिंक किए गए लेख कैसे पायथन में यह करने के लिए दिखाता है)। आपको बस थोड़ा और कोड लिखना होगा और इसे करने के लिए ऑब्जेक्ट्स को पास करना होगा।

+1

पर्ल के साथ रेगेक्स का उपयोग करने की क्षमता पाइथन पर एक बड़ा फायदा नहीं है, क्योंकि सबसे पहले, पायथन के साथ भी regex है, और दूसरी बात, regex हमेशा बेहतर समाधान नहीं है। – ghostdog74

+1

सीधे उपयोग करने की क्षमता के कारण, दूसरी भाषा की तुलना में पर्ल में रेगेक्स का उपयोग करना अभी भी आसान है। और हां, कभी-कभी रेगेक्स सही समाधान नहीं है, इसलिए मैंने कहा कि 'लॉगफाइल के प्रारूप और संरचना के आधार पर आप' –

+1

चलो पार्सन में रेगेक्स का उपयोग करना मुश्किल नहीं है। यदि आप केवल वाक्यविन्यास पर बहस कर रहे हैं तो आप वास्तव में कुछ भी सार्थक बहस नहीं कर रहे हैं। पर्ल में कुछ रेगेक्स विशेषताएं हैं जो पाइथन समर्थन नहीं करती हैं, लेकिन अधिकांश लोगों को उनकी आवश्यकता होने की संभावना नहीं है। बफर कैप्चर करने के लिए, पाइथन लेबल वाले कैप्चर के साथ खेल से आगे था (जो अब पर्ल भी है)। –

2

Log_Analysis नामक एक पर्ल कार्यक्रम है कि विश्लेषण का एक बहुत और आप के लिए preprocessing करता नहीं है।

1

आपके प्रश्न की एक और संभावित व्याख्या है "क्या कोई ऐसा उपकरण है जो लॉग निगरानी को आसान बनाता है?", और जवाब देने के लिए कि मैं तुम्हें या Splunk पर एक नज़र हो सकता है Log4view है सुझाव है।

+0

स्पोग बहुत निफ्टी भी है: http://sprog.sourceforge.net/ – daotoad

+0

ऑक्टोपूस भी अच्छा है (अस्वीकरण: मेरी परियोजना): http://www.8pussy.org – sebthebert

1
लिनक्स पर

, आप लॉग फ़ाइलें अगर वे आकार में बहुत बड़ा नहीं कर रहे हैं पार्स करने के लिए सिर्फ खोल (bash, ksh आदि) का उपयोग कर सकते अन्य उपकरणों के लिए जाने के लिए आमतौर पर grep और awk हैं। हालांकि, अधिक प्रोग्रामिंग शक्ति के लिए, आमतौर पर अजीब का उपयोग किया जाता है। अगर आपके पास पार्स करने के लिए बड़ी फ़ाइलें हैं, तो

बेशक, पर्ल या पायथन या व्यावहारिक रूप से कोई अन्य फाइल रीडिंग और स्ट्रिंग मैनिपुलेशन क्षमताओं वाली भाषाओं का भी उपयोग किया जा सकता है।

2

प्रोग्रामिंग भाषा सीखने से आपको अन्य स्तर पर लॉग विश्लेषण क्षमताएं मिलेंगी।

पर्ल, रूबी या पायथन जैसी कोई गतिशील या "स्क्रिप्टिंग" भाषा नौकरी करेगी। आपको वास्तव में क्या उपयोग करना चाहिए बाहरी कारकों पर निर्भर करता है। उन चीज़ों में से आपको विचार करना चाहिए:

  • क्या काम पहले से ही उपयुक्त लैंगेज का उपयोग करता है?
  • क्या आप किसी ऐसे व्यक्ति को जानते हैं जो आपको उपयुक्त भाषा में सलाह दे सकता है?
  • प्रत्येक भाषा को थोड़ा सा प्रयास करें और देखें कि कौन सी भाषा आपको बेहतर बनाती है।

व्यक्तिगत रूप से, उपरोक्त कार्य के लिए मैं पर्ल का उपयोग करूंगा। YMMV।

कई कारणों से पर्ल पसंद करने के लिए:

शक्तिशाली एक-लाइनर्स - अगर आप एक असली त्वरित, एक बंद काम करने की ज़रूरत है, पर्ल कुछ वास्तव में महान शॉर्ट-कट प्रदान करता है। एक उदाहरण के लिए perlrun -n देखें

बहु-प्रतिमान भाषा - पर्ल को अनिवार्य, कार्यात्मक और ऑब्जेक्ट उन्मुख प्रोग्रामिंग पद्धतियों के लिए समर्थन है।

सिगिल - वे $foo या @bar जैसे चर पर विराम चिह्नों के प्रमुख अग्रणी हैं। वे इतने परेशान किए बिना हंगेरी नोटेशन की तरह थोड़ा सा हैं।

मूस - एक अविश्वसनीय नई ओओपी प्रणाली जो कोड संरचना और पुन: उपयोग के लिए शक्तिशाली नई ओओ तकनीक प्रदान करती है।

सख्त - use strict प्रगामा कई त्रुटियों को पकड़ता है जो अन्य गतिशील भाषाओं संकलन समय पर चमकते हैं। जब मैं पाइथन या PHP का उपयोग करता हूं तो मुझे बहुत याद आती है।

स्व-अनुशासन - पर्ल आपको लिखने की स्वतंत्रता देता है और जो चाहें, वह कर सकता है। इसका मतलब है कि आपको साफ कोड लिखना सीखना है या आप चोट पहुंचाएंगे। सौभाग्य से, शुरुआत करने में मदद करने के लिए उपकरण हैं। Perl::Critic सर्वोत्तम प्रथाओं के लिए कोड के लिंट-जैसे विश्लेषण करता है।

-2

Nagios Log Monitoring

कारण इस उपकरण का उद्देश्य के लिए सबसे अच्छा है की कोशिश यह है:

यह विदेशी संकुल की कोई स्थापना की आवश्यकता है। जिसका अर्थ है कि, किसी भी पर्ल निर्भरता या किसी भी मूर्ख पैकेज को स्थापित करने की आवश्यकता नहीं है जो आपको परेशान कर सकती है।

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

लॉग आप पार्स करने के लिए चाहते हैं किसी syslog प्रारूप में है, तो आप इस तरह एक आदेश का उपयोग कर सकते हैं:

./NagiosLogMonitor 10.20.40.50:5444 logrobot autofig /opt/jboss/server.log 60m 'INFO' '।'

./NagiosLogMonitor 10.20.40.50:5444 logrobot autonda/opt/jboss: 1 2 -Show

यहां तक ​​कि अगर आपको अपनी प्रवेश एक मान्यता प्राप्त प्रारूप में नहीं है, यह अभी भी कुशलता से निम्न आदेश के साथ नजर रखी जा सकती /server.log 60m 'INFO' '।' 1 2 jbosslogs -ndshow

विशिष्ट तारों के लिए लॉग को पार्स करने के लिए, 'INFO' स्ट्रिंग को उन पैटर्न के साथ प्रतिस्थापित करें जिन्हें आप लॉग में देखना चाहते हैं। यदि आप कई पैटर्न खोजना चाहते हैं, तो उन्हें 'INFO | ERROR | घातक' जैसे निर्दिष्ट करें।

यदि दक्षता और सादगी (और सुरक्षित इंस्टॉल) आपके लिए महत्वपूर्ण हैं, तो यह नागियो उपकरण जाने का तरीका है।

+0

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, यह बेहतर है यहां उत्तर के आवश्यक हिस्सों को शामिल करने और संदर्भ के लिए लिंक प्रदान करने के लिए। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। – Serlite

+0

अद्यतन पोस्ट ... –

संबंधित मुद्दे