मैं ग्रेफाइट के स्टोरेज व्हिस्पर के डेटा को हटाना चाहता हूं लेकिन ग्रेफाइट डॉक्स में कुछ भी नहीं है।
एक तरह से मैंने फ़ाइलों को /opt/graphite...../whispers/stats...
मैन्युअल रूप से हटा रहा है ।
लेकिन यह थकाऊ है, तो मैं इसे कैसे करूं?
मैं ग्रेफाइट के स्टोरेज व्हिस्पर के डेटा को हटाना चाहता हूं लेकिन ग्रेफाइट डॉक्स में कुछ भी नहीं है।
एक तरह से मैंने फ़ाइलों को /opt/graphite...../whispers/stats...
मैन्युअल रूप से हटा रहा है ।
लेकिन यह थकाऊ है, तो मैं इसे कैसे करूं?
जवाबों:
वर्तमान में / ऑप्ट / ग्रेफाइट / भंडारण / कानाफूसी से फ़ाइलों को हटाना / कानाफूसी डेटा को हटाने का सही तरीका है।
इस प्रक्रिया के थकाऊ पक्ष के लिए, यदि आप एक निश्चित पैटर्न है जिसे निकालने की कोशिश कर रहे हैं, तो आप खोज कमांड का उपयोग कर सकते हैं।
/ ऑप्ट / ग्रेफाइट / स्टोरेज / कानाफूसी का पता लगाएं, loadavg.wsp -delete
.wsp
फाइलों को हटाने के लिए ?
मुझे लगता है कि यह सर्वर फॉल्ट क्षेत्र में जा रहा है, लेकिन मैंने हमारे पुराने मेट्रिक्स को हटाने के लिए निम्नलिखित क्रॉन जॉब को जोड़ा है जो 30 दिनों के लिए नहीं लिखा गया है (जैसे कि बादल के उदाहरण जो निपट गए हैं):
find /mnt/graphite/storage -mtime +30 | grep -E \ "/mnt/graphite/storage/whisper/collectd/app_name/[^/]*" -o \ | uniq | xargs rm -rf
यह उन निर्देशिकाओं को हटा देगा जिनके पास वैध डेटा है।
प्रथम:
find whisperDir -mtime +30 -type f | xargs rm
और फिर खाली dirs को हटा दें
find . -type d -empty | xargs rmdir
यह अंतिम चरण दोहराया जाना चाहिए, क्योंकि नई खाली निर्देशिकाओं को छोड़ दिया जा सकता है।
find /opt/graphite/storage/whisper -type f -mtime +120 -name \*.wsp -delete; find /opt/graphite/storage/whisper -depth -type d -empty -delete
जैसा कि लोगों ने बताया है, फ़ाइलों को हटाने का तरीका है। पिछले उत्तरों पर विस्तार करते हुए, मैंने यह स्क्रिप्ट बनाई जो किसी भी फ़ाइल को हटा देती है जो उसकी अधिकतम अवधारण आयु को पार कर गई है। इसे cronjob
काफी नियमित रूप से चलाएं ।
#!/bin/bash
d=$1
now=$(date +%s)
MINRET=86400
if [ -z "$d" ]; then
echo "Must specify a directory to clean" >&2
exit 1
fi
find $d -name '*.wsp' | while read w; do
age=$((now - $(stat -c '%Y' "$w")))
if [ $age -gt $MINRET ]; then
retention=$(whisper-info.py $w maxRetention)
if [ $age -gt $retention ]; then
echo "Removing $w ($age > $retention)"
rm $w
fi
fi
done
find $d -empty -type d -delete
बिट्स के बारे में पता होना - whisper-info
कॉल काफी हैवीवेट है। कॉल की संख्या को कम करने के लिए मैंने MINRET को स्थिर रखा है, ताकि किसी भी फ़ाइल को हटाने के लिए तब तक विचार नहीं किया जाएगा जब तक कि यह 1 दिन पुराना न हो (24 * 60 * 60 सेकंड) - अपनी आवश्यकताओं को पूरा करने के लिए समायोजित करें। वहाँ शायद अन्य चीजें हैं जो काम को तेज करने या आमतौर पर इसकी दक्षता में सुधार करने के लिए किया जा सकता है, लेकिन मुझे अभी तक इसकी आवश्यकता नहीं है।
Must specify a directory to clean
एक त्रुटि संदेश है। जैसे, यह सही जगह लिखा जाना चाहिए echo "Must ..." >&2
:।