cálculo de dias até o disco ficar cheio

9

Usamos grafite para rastrear o histórico de utilização do disco ao longo do tempo. Nosso sistema de alerta examina os dados da grafite para nos alertar quando o espaço livre cai abaixo de um determinado número de blocos.

Gostaria de receber alertas mais inteligentes - o que realmente me interessa é "quanto tempo tenho antes de fazer algo sobre o espaço livre?", Por exemplo, se a tendência mostrar que em 7 dias ficarei sem disco espaço, em seguida, levante um aviso; se for menos de 2 dias, levante um erro.

A interface de painel padrão do Graphite pode ser bastante inteligente com derivativos e faixas de confiança de Holt Winters, mas até agora não encontrei uma maneira de converter isso em métricas acionáveis. Também estou bem em analisar os números de outras maneiras (basta extrair os números brutos da grafite e executar um script para fazer isso).

Uma complicação é que o gráfico não é tranquilo - os arquivos são adicionados e removidos, mas a tendência geral ao longo do tempo é que o uso do espaço em disco aumente; portanto, talvez seja necessário examinar as mínimas locais (se observar a métrica "sem disco") ) e desenhe uma tendência entre as cavidades.

Alguém já fez isso?

Amos Shapira
fonte
qual é a sua infraestrutura? por exemplo, se você é um vmware, pode ver os produtos do Operations Manager, que oferecem esse tipo de visualização preditiva no espaço em disco.
precisa saber é o seguinte
The volume of crap people have to store will expand to fill the disk available.- Old Sysadmin Axiom
voretaq7
Nossos servidores são divididos entre VMs da VMware usando IBM XIV para discos e KVMs usando SDs locais. Não tenho certeza se temos acesso a esse tipo de informação (minha equipe não gerencia o VMware ou o XIV) e prefere uma solução independente do produto.
Amos Shapira

Respostas:

8

Honestamente, "Dias até o preenchimento" é realmente uma péssima métrica - os sistemas de arquivos ficam MUITO ESTÚPIDOS à medida que se aproximam de 100% da utilização.
Eu realmente recomendo usar os limites tradicionais de 85%, 90%, 95% (aviso, alarme e crítico, você realmente precisa corrigir esse NOW, respectivamente) - isso deve fornecer muito tempo de aviso em discos modernos (digamos, uma unidade de 1 TB: 85% de um terabyte ainda deixa muito espaço, mas você está ciente de um problema em potencial; em 90% você deve planejar uma expansão de disco ou alguma outra mitigação e a 95% de um terabyte você tem 50 GB restantes e deve muito bem ter uma correção em movimento).

Isso também garante que seu sistema de arquivos funcione de maneira mais ou menos otimizada: possui bastante espaço livre para lidar com a criação / modificação / movimentação de arquivos grandes.

Se seus discos não forem modernos (ou seu padrão de uso envolver maiores quantidades de dados sendo lançadas no disco), você poderá ajustar facilmente os limites.


Se você ainda usar uma métrica "dias até o total", poderá extrair os dados da grafite e fazer algumas contas nela. As ferramentas de monitoramento da IBM implementam métricas de vários dias até a totalidade, o que pode lhe dar uma idéia de como implementá-la, mas basicamente você está avaliando a taxa de mudança entre dois pontos no histórico.

Por uma questão de sanidade, você pode usar o derivado do Graphite (que fornecerá a taxa de alteração ao longo do tempo) e projetá-lo, mas se você REALMENTE quiser alertas "mais inteligentes", sugiro usar a taxa de alteração diária e semanal (calculada com base no pico de uso do dia / semana).

A projeção específica que você usa (menor taxa de mudança, maior taxa de mudança, taxa média de mudança, média ponderada, etc.) depende do seu ambiente. As ferramentas da IBM oferecem tantas visões diferentes porque é realmente difícil definir um padrão de tamanho único.


Por fim, nenhum algoritmo será muito bom para fazer o tipo de cálculo que você deseja. A utilização do disco é conduzida pelos usuários, e os usuários são a antítese do modelo do Rational Actor: todas as suas previsões podem sair pela janela com uma pessoa maluca decidindo que hoje é o dia em que executarão um despejo de memória do sistema completo para seus diretório inicial. Só porque.

voretaq7
fonte
Obrigado por suas idéias. Eu vejo seus pontos. Eu ainda acho que limiares constantes apenas tentam refletir "quanto tempo eu tenho para remediar?" e sinta-se um pouco justificado pelo seu comentário "ajuste seus limites". Derivados simples de grafite não funcionam porque o gráfico original não é suave. Obrigado pelo ponteiro para as ferramentas da IBM, o que você descreve soa exatamente como o que comecei a pensar (extraia os dois últimos mínimos e calcule a inclinação a partir deles).
Amos Shapira
Certamente, o objetivo de uma métrica de 'dias até o máximo' é que, com limites estáticos de 85/90/95, você não tem idéia de quão rápido o disco está sendo preenchido? Claro, você está ciente de um problema em potencial, mas como você pode saber se possui dias para resolvê-lo ou semanas / meses?
Acho realmente interessante que você tenha essa opinião. Deixe-me enquadrar da seguinte maneira: Sua empresa possui um processo de compras que leva cerca de 6 semanas entre a solicitação inicial de mais discos rígidos até o dia em que esses discos rígidos são realmente instalados nas caixas e a redistribuição de carga começa a ocorrer. Considerando o período de seis semanas em que% de disco você precisa ser notificado para poder instalar um disco a tempo? 80%? 75%? O fato é que você não sabe, a menos que se esforce para calcular a taxa de crescimento.
JHixson
2

Recentemente, lançamos uma solução personalizada para isso usando regressão linear.

Em nosso sistema, a principal fonte de exaustão do disco são os arquivos de log dispersos que não estão sendo rotacionados.

Como esses crescimentos são muito previsíveis, podemos realizar uma regressão linear na utilização do disco (por exemplo, z = numpy.polyfit(times, utilization, 1)) e depois calcular a marca de 100%, dado o modelo linear (por exemplo, (100 - z[1]) / z[0])

A implementação implantada se parece com isso usando ruby ​​e GSL, embora o numpy funcione muito bem também.

A alimentação desses dados médios de utilização de uma semana em intervalos de 90 minutos (112 pontos) conseguiu identificar possíveis candidatos à exaustão do disco sem muito barulho até agora.

A classe na essência é agrupada em uma classe que extrai dados do explorador, alerta para folga e envia alguma telemetria de tempo de execução para o statsd. Vou deixar isso de fora, pois é específico da nossa infraestrutura.

Matschaffer
fonte
Atualizei a resposta com algumas informações agora que a lançamos.
precisa
1
Acabei de encontrar uma pegadinha engraçada com essa abordagem. Também temos alarmes de 90%. Um de nossos anfitriões estava crescendo tão gradualmente que atingiu 90% e acionou o alarme, embora ainda houvesse mais de uma semana antes de atingir 100%, para que o alerta preditivo nunca disparasse;) Acho que devo usar (90 - z[1]) / z[0].
precisa saber é o seguinte