Eu gostaria de monitorar a atividade de E/S de disco caso algo ocorra com E/S pesada. Este plugin do Nagios parece simples, onde ele dá exemplos de
Example: Tps, read and write thresholds:
./check_diskstat.sh -d sda -w 200,100000,100000 -c 300,200000,200000
Example: Average queue length threshold:
./check_diskstat.sh -d sda -W 50 -C 100
Pergunta
Como diferentes hosts terão diferentes atividades de E/S ociosas, como posso encontrar bons valores iniciais para usar?
Acho que outra maneira de perguntar o mesmo seria: Quais iostat
argumentos devem ser usados em cada host para ver qual é a E/S de disco "bom estado"?
Os contadores subjacentes estão documentados em https://www.kernel.org/doc/Documentation/block/stat.txt
Definir limites significativos com base no número absoluto de IOPs e setores lidos ou gravados em um dispositivo de bloco (as minúsculas
-w
e as-c
opções) requer um conhecimento prévio dos recursos reais desse dispositivo de bloco específico (por exemplo, comparando-os).Usar o comprimento da fila (maiúsculas
-W
e-C
opções) parece um pouco mais universal. Quando você obtém uma fila de E/S aumentada que é ruim, independentemente da velocidade do armazenamento subjacente, você está enviando mais leituras/gravações do que pode suportar e seus aplicativos ficarão mais lentos.Eu não tenho idéia se os 50 e 100 milissegundos documentados são valores razoáveis ou completamente arbitrários.
Para meus servidores virtuais, usar números absolutos é relativamente fácil, eles são provisionados em sabores com limites específicos e eu só precisaria definir os níveis de aviso/críticos em, por exemplo, 80%, respectivamente, 95% desses limites atribuídos.
Por exemplo, com um sabor de 600 IOPS e 10 MB/s:
Divida o atribuído
disk_read_bytes_sec
edisk_write_bytes_sec
por 512 (o tamanho do setor) para obter os limites em setores que o disco virtual suportará.(10 MB = 10000000 bytes) / 512 = 19531
19531 * 80% = 15624 e 600 * 80% = 480
19531 * 95% = 18749 e 600 * 95% = 570