2013-06-06 11 views
8

में किसी प्रक्रिया की निगरानी कैसे करें मैं लिनक्स में एक प्रक्रिया को कैसे बेंचमार्क कर सकता हूं? मुझे किसी विशेष प्रक्रिया नाम के लिए "शीर्ष" और "समय" जैसे कुछ की आवश्यकता है (यह एक मल्टीप्रोसेस प्रोग्राम है ताकि कई पीआईडी ​​दिए जाएंगे)?लिनक्स सीपीयू, मेमोरी और समय

इसके अलावा मैं इन प्रक्रियाओं के लिए स्मृति और सीपीयू उपयोग के समय के साथ एक साजिश रखना चाहता हूं न केवल अंतिम संख्या।

कोई विचार?

उत्तर

7

के बाद एक Linux सिस्टम की निगरानी के लिए उपकरण हैं

  1. सिस्टम आदेश है जब आप एक समस्या को दूर करने कर रहे हैं top, free -m, vmstat, iostat, iotop, sar, netstat, आदि जैसे कुछ भी नहीं है इन linux उपयोगिता के पास आता है । ये आदेश आप एक साफ तस्वीर है कि आपके सर्वर
  2. SeaLion अंदर जा रहा है दे: एजेंट सभी आदेशों # 1 (भी उपयोगकर्ता परिभाषित) और इन आदेशों के आउटपुट में उल्लेख किया है कार्यान्वित एक सुंदर वेब इंटरफेस में पहुँचा जा सकता है। यह टूल आसान होता है जब आप सैकड़ों सर्वरों पर डिबगिंग कर रहे हैं क्योंकि इंस्टॉलेशन स्पष्ट है। और इसकी मुफ्त
  3. Nagios: यह सभी निगरानी/चेतावनी उपकरण की जननी है।यह बहुत अनुकूलन है लेकिन शुरुआती लोगों के लिए सेटअप करना बहुत मुश्किल है। वहाँ Nagios वाले प्लग इन को शामिल किया गया कहा जाता उपकरणों के सेट हैं काफी सभी महत्वपूर्ण लिनक्स मीट्रिक
  4. Munin
  5. Server Density: एक cloudbased सशुल्क सेवा है जिसमें महत्वपूर्ण लिनक्स मैट्रिक्स जमा करता है और उपयोगकर्ताओं को स्वयं के प्लगइन्स लिखने की क्षमता देता है।
  6. नया अवशेष: एक और अच्छी तरह से होस्टेड निगरानी सेवा की जानकारी है।
  7. Zabbix
+0

MMonit, यह अनिवार्य है शामिल हैं। सिंगल मॉनिट फ्री है, क्लस्टर एमएमओनीट का भुगतान किया जाता है। – erm3nda

13

मैं आम तौर पर इस प्रकार के काम के लिए एक साधारण लिपि फेंक देता हूं।

proc फाइल सिस्टम (Google 'linux proc.txt') के लिए कर्नेल दस्तावेज़ों पर नज़र डालें।

/proc/stat (proc.txt में सेक्शन 1.8) की पहली पंक्ति आपको संचयी सीपीयू उपयोग आंकड़े (यानी उपयोगकर्ता, अच्छा, सिस्टम, निष्क्रिय, ...) प्रदान करेगी। प्रत्येक प्रक्रिया के लिए, फ़ाइल /proc/$PID/stat (proc.txt में तालिका 1-4) आपको प्रक्रिया-विशिष्ट सीपीयू उपयोग आंकड़े और स्मृति उपयोग आंकड़े दोनों (आरएसएस देखें) प्रदान करेगी।

यदि आप थोड़ा सा Google करते हैं तो आपको इन फ़ाइलों पर बहुत विस्तृत जानकारी मिल जाएगी, और लाइब्रेरी/ऐप्स/कोड स्निपेट्स के पॉइंटर्स होंगे जो आपको आवश्यक मूल्यों को प्राप्त/प्राप्त करने में आपकी सहायता कर सकते हैं। इसे ध्यान में रखते हुए, मैं उच्च स्तरीय रणनीति पर ध्यान केंद्रित करूंगा।

सीपीयू आंकड़ों के लिए, निष्पादन योग्य बनाने के लिए अपनी पसंदीदा स्क्रिप्टिंग भाषा का उपयोग करें जो निगरानी के लिए प्रक्रिया आईडी का एक सेट लेता है। एक निश्चित अंतराल पर (पूर्व: 1 सेकंड) मतदान/प्रत्येक प्रक्रिया और पूरी तरह से सिस्टम के लिए संचयी योग की गणना करें। प्रत्येक मतदान अंतराल के दौरान, सभी परिणामों को एक ही पंक्ति पर stdout पर लिखें।

स्मृति आंकड़ों के लिए, एक समान स्क्रिप्ट लिखें, लेकिन बस प्रति-प्रक्रिया मेमोरी उपयोग लॉग करें। मेमोरी थोड़ा आसान है क्योंकि हम तत्काल तात्कालिक मान प्राप्त करते हैं।

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

./logcpu $(pidof foo) $(pidof bar) > cpustats 
./logmem $(pidof foo) $(pidof bar) > memstats 

इन फ़ाइलों की एक स्प्रेडशीट में सामग्री आयात करें (कुछ अनुप्रयोगों के लिए यह कॉपी/पेस्ट के रूप में आसान है)। सीपीयू के लिए, आप तात्कालिक मूल्यों के बाद कर रहे हैं लेकिन संचयी मान हैं, तो आप इन मूल्यों को प्राप्त करने के लिए कुछ मामूली स्प्रेडशीट काम करने की आवश्यकता होगी (यह सिर्फ डेल्टा 'टी (x + 1) - टी (x)' है)। बेशक आप अपने सीपीयू लॉगर डेल्टा लिख ​​सकते हैं, लेकिन आप स्क्रिप्ट पर थोड़ा और समय बिताएंगे।

अंत में, एक अच्छी साजिश उत्पन्न करने के लिए अपनी स्प्रेडशीट का उपयोग करें।

+0

देखकर की सराहना करते हैं कि/proc/$ पीआईडी ​​यह सब निगरानी डेटा – Paul

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