Estou usando grafite + statsd. Tentei assim e funciona, mas depois de um tempo o balde é recriado. Alguma ideia de por que e como parar isso?
Davide Vernizzi
1
Como você reinicia o statsd? Não estou encontrando um statsd na lista de processos, mas estou tendo este problema.
Jeff
Deve-se notar que depois de excluir os caminhos não utilizados, o Graphite em si não precisa ser reiniciado. Statsd é um problema separado, vá em frente e reinicie-o, mas o Graphite lidará com caminhos excluídos muito bem. Achei que deveria esclarecer isso porque foi uma pedra de tropeço para mim em algum momento.
Florin Andrei
E quanto a search_index? Também deve ser excluído ou truncado?
mirelon
2
Não há como ver se todos os dados expiraram (por exemplo, maxRetention passou desde a última atualização)? Remover .wsparquivos antigos expirados ?
docwhat
49
Suponho que isso vá para o território de falha de servidor, mas adicionei o seguinte cron job para excluir as nossas métricas antigas que não foram gravadas por mais de 30 dias (por exemplo, de instâncias de nuvem que foram descartadas):
Em quase todos os sistemas Unix modernos, esta deve ser possível condensar usando builtins encontrar - por exemplofind /opt/graphite/storage/whisper -type f -mtime +120 -name \*.wsp -delete; find /opt/graphite/storage/whisper -depth -type d -empty -delete
Chris Adams
4
Para sua informação, no Ubuntu, o caminho é / var / lib / graphite / whisper
knocte
Existe um motivo pelo qual não podemos usar o tmpreaper para fazer isso?
Zeki de
7
Como as pessoas indicaram, remover os arquivos é o caminho a percorrer. Expandindo as respostas anteriores, fiz este script que remove qualquer arquivo que excedeu sua idade máxima de retenção. Execute-o com cronjobbastante regularidade.
#!/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
Algumas coisas a serem observadas - a whisper-infochamada é bastante pesada. Para reduzir o número de chamadas para ele, coloquei a constante MINRET em, de modo que nenhum arquivo seja considerado para exclusão até que tenha 1 dia (24 * 60 * 60 segundos) - ajuste para atender às suas necessidades. Provavelmente, há outras coisas que podem ser feitas para fragmentar o trabalho ou melhorar sua eficiência de modo geral, mas não precisei ainda.
Respostas:
excluir atualmente os arquivos de / opt / graphite / storage / whisper / é a maneira correta de excluir dados whisper.
Quanto ao lado tedioso do processo, você pode usar o comando find se houver um determinado padrão que você está tentando remover.
Pergunta semelhante em answers.launchpad.net/graphite
fonte
.wsp
arquivos antigos expirados ?Suponho que isso vá para o território de falha de servidor, mas adicionei o seguinte cron job para excluir as nossas métricas antigas que não foram gravadas por mais de 30 dias (por exemplo, de instâncias de nuvem que foram descartadas):
Isso excluirá os diretórios que possuem dados válidos.
Primeiro:
E, em seguida, exclua diretórios vazios
Este último passo deve ser repetido, pois podem ser deixados novos diretórios vazios.
fonte
find /opt/graphite/storage/whisper -type f -mtime +120 -name \*.wsp -delete; find /opt/graphite/storage/whisper -depth -type d -empty -delete
Como as pessoas indicaram, remover os arquivos é o caminho a percorrer. Expandindo as respostas anteriores, fiz este script que remove qualquer arquivo que excedeu sua idade máxima de retenção. Execute-o com
cronjob
bastante regularidade.Algumas coisas a serem observadas - a
whisper-info
chamada é bastante pesada. Para reduzir o número de chamadas para ele, coloquei a constante MINRET em, de modo que nenhum arquivo seja considerado para exclusão até que tenha 1 dia (24 * 60 * 60 segundos) - ajuste para atender às suas necessidades. Provavelmente, há outras coisas que podem ser feitas para fragmentar o trabalho ou melhorar sua eficiência de modo geral, mas não precisei ainda.fonte
Must specify a directory to clean
é uma mensagem de erro. Como tal, ele deve ser escrito para o local correto:echo "Must ..." >&2
.