Grafit fısıltısının verileri nasıl temizlenir?


90

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?


1
sildikten sonra tekrar görünmeleri durumunda, şu diğer soruyu kontrol edin: stackoverflow.com/questions/15501677/…
knocte

Yanıtlar:


73

Ş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

Answers.launchpad.net/graphite üzerinde Benzer Soru


3
Grafit + istatistik kullanıyorum. Bu şekilde denedim ve işe yarıyor ama bir süre sonra kova yeniden yaratılıyor. Neden ve nasıl durdurulacağına dair bir fikriniz var mı?
Davide Vernizzi

1
İstatistikleri nasıl yeniden başlatırsınız? İşlemler listesinde bir istatistik bulamıyorum, ancak bu sorunu yaşıyorum.
Jeff

Kullanılmayan yolları sildikten sonra Graphite'in kendisinin yeniden başlatılmasına gerek olmadığı unutulmamalıdır. Statsd ayrı bir konudur, devam edin ve yeniden başlatın, ancak Graphite silinmiş yollarla gayet iyi ilgilenecektir. Bunu netleştirmem gerektiğini düşündüm çünkü bir noktada benim için tökezleyen bir engeldi.
Florin Andrei

Search_index ne olacak? Ayrıca silinmeli mi yoksa kısaltılmalı mı?
mirelon

2
Tüm verilerin süresinin dolup dolmadığını görmenin bir yolu yok mu (örneğin, maxRetention son güncellemeden bu yana geçti)? Süresi dolan eski .wspdosyaları kaldırmak için ?
docwhat

49

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.


24
Hemen hemen tüm modern Unix sistemlerinde bu, yerleşikleri bulma (ör.find /opt/graphite/storage/whisper -type f -mtime +120 -name \*.wsp -delete; find /opt/graphite/storage/whisper -depth -type d -empty -delete
Chris Adams

4
Bilginize,
ubuntu'da

Bunu yapmak için tmpreaper'ı kullanmamamızın bir nedeni var mı?
Zeki

8

İ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. cronjobOldukç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ı.


nit: Must specify a directory to cleanbir hata mesajıdır. Böyle olunca doğru yere yazılmalıdır: echo "Must ..." >&2.
William Pursell

bu harika tyvm!
xero
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.