Grafitin depolama fısıltısının verilerini silmek istiyorum, ancak grafit belgelerinde hiçbir şey yok.
Yaptığım bir yol, dosyaları /opt/graphite...../whispers/stats...
manuel olarak silmek .
Ama bu sıkıcı, peki bunu nasıl yapacağım?
Grafitin depolama fısıltısının verilerini silmek istiyorum, ancak grafit belgelerinde hiçbir şey yok.
Yaptığım bir yol, dosyaları /opt/graphite...../whispers/stats...
manuel olarak silmek .
Ama bu sıkıcı, peki bunu nasıl yapacağım?
Yanıtlar:
Şu anda, / opt / graphite / storage / whisper / öğesinden dosyaları silmek, fısıltı verilerini temizlemenin doğru yoludur.
İşlemin sıkıcı tarafına gelince, kaldırmaya çalıştığınız belirli bir model varsa, bul komutunu kullanabilirsiniz.
find / opt / graphite / storage / whisper -name loadavg.wsp -sil
.wsp
dosyaları kaldırmak için ?
Sanırım bunun Sunucu Hatası bölgesine giriyor, ancak 30 günden fazla süredir yazılmamış eski ölçümlerimizi silmek için aşağıdaki cron işini ekledim (örn. Atılmış bulut örnekleri):
find /mnt/graphite/storage -mtime +30 | grep -E \ "/mnt/graphite/storage/whisper/collectd/app_name/[^/]*" -o \ | uniq | xargs rm -rf
Bu, geçerli verilere sahip dizinleri siler.
İlk:
find whisperDir -mtime +30 -type f | xargs rm
Ve sonra boş dizinleri silin
find . -type d -empty | xargs rmdir
Bu son adım tekrarlanmalıdır çünkü yeni olabilir boş dizinler bırakılacaktır.
find /opt/graphite/storage/whisper -type f -mtime +120 -name \*.wsp -delete; find /opt/graphite/storage/whisper -depth -type d -empty -delete
İnsanların da belirttiği gibi, gidilecek yol dosyaları kaldırmaktır. Önceki yanıtları genişleterek, maksimum saklama süresini aşan tüm dosyaları kaldıran bu komut dosyasını yaptım. cronjob
Oldukça düzenli olarak çalıştırın .
#!/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
Dikkat edilmesi gereken birkaç bit - whisper-info
çağrı oldukça ağır. Aramaların sayısını azaltmak için MINRET sabitini koydum, böylece 1 günlük olana kadar (24 * 60 * 60 saniye) hiçbir dosya silinmek üzere değerlendirilmeyecek - ihtiyaçlarınıza uyacak şekilde ayarlayın. İşi parçalamak veya genel olarak verimliliğini artırmak için yapılabilecek muhtemelen başka şeyler var, ancak henüz buna ihtiyacım olmadı.
Must specify a directory to clean
bir hata mesajıdır. Böyle olunca doğru yere yazılmalıdır: echo "Must ..." >&2
.