2013-05-07 5 views
5

मैं समय के साथ लिनक्स प्रक्रियाओं के सीपीयू और रैम उपयोग को लॉग और ग्राफिक रूप से प्रदर्शित करने का एक तरीका ढूंढ रहा हूं। चूंकि मुझे ऐसा करने के लिए एक सरल उपकरण नहीं मिला (मैंने ज़ब्बिक्स और मुनिन की कोशिश की लेकिन स्थापना विफल रही) मैंनेसीपीयू लॉगिंग और लिनक्स प्रक्रिया के स्मृति उपयोग के लिए शेल स्क्रिप्ट

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

  1. आंकड़े
  2. शीर्ष का उपयोग करता है और awk CPU और स्मृति उपयोग लॉग इन करें।

यहाँ कैसे स्क्रिप्ट की तरह

#!/bin/sh 
#A script to log the cpu and memory usage of linux processes namely - redis, logstash, elasticsearch and kibana 

REDIS_PID=$(ps -ef | grep redis | grep -v grep | awk '{print $2}') 

LOGSTASH_PID=$(ps -ef | grep logstash | grep -v grep | awk '{print $2}') 

ELASTICSEARCH_PID=$(ps -ef | grep elasticsearch | grep -v grep | awk '{print $2}') 

KIBANA_PID=$(ps -ef | grep kibana | grep -v grep | awk '{print $2}') 

LOG_FILE=/var/log/user/usage.log 
echo $LOG_FILE 
top -b | awk -v redis="$REDIS_PID" -v logstash="$LOGSTASH_PID" '/redis|logstash/ {print $1","$9","$10","$12}' 

लग रहा है मैं कैसे

  1. प्रिंट कई प्रक्रियाओं के लिए संसाधन उपयोग करते हैं। अजीब पैटर्न में एकाधिक चर निर्दिष्ट करना काम नहीं कर रहा है। यह के लिए उपयोग प्रिंट पहले पीआईडी ​​(ऊपर लिपि में redis)
  2. प्रिंट वर्तमान टाइमस्टैम्प जब संसाधन उपयोग के साथ साथ संसाधन विवरण (तिथि + "% टी" के माध्यम से)
  3. प्रिंट प्रक्रिया नाम मुद्रण। उपरोक्त मामले में रेडिस, लॉगस्टैश, लोचदार खोज या किबाना
  4. उपरोक्त आदेश आउटपुट को लॉग फ़ाइल में रीडायरेक्ट करें। मैंने कोशिश की> $ LOG_FILE लेकिन यह काम नहीं किया।

विचार/इनपुट?

अग्रिम धन्यवाद।

उत्तर

5

PIDs पता लगाने के लिए आप pgrep का उपयोग कर बहुत अपनी स्क्रिप्ट को आसान बनाने में कर सकते हैं:

REDIS_PID=$(pgrep -f redis) 

LOGSTASH_PID=$(pgrep -f logstash) 

ELASTICSEARCH_PID=$(pgrep -f elasticsearch) 

KIBANA_PID=$(pgrep -f kibana) 

संपादित करें: क्षमा कुछ काम के लिए छोड़ना पड़ा और पूर्ण उत्तर प्रदान नहीं कर सका।

आदेश स्क्रिप्ट निम्नलिखित शीर्ष उत्पादन उपयोग पर कब्जा करने में:

while :; do 
    top -n 1 -b | awk -v redis="$REDIS_PID" -v logstash="$LOGSTASH_PID" 
     '$1 == redis || $1 == logstash {print $1","$9","$10","$12}' >> $LOG_FILE 
    sleep 3 
done 
+0

इस प्रश्न का उत्तर की तुलना में एक पक्ष नोट के अधिक है। –

+0

सहायक लेकिन उत्तर नहीं :) –

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