何かが重いI/Oを処理する場合に備えて、ディスクI/Oアクティビティを監視したいと思います。 This Nagiosプラグインの継ぎ目は単純で、例を挙げています。
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
質問
ホストが異なればアイドルI/Oアクティビティも異なるため、使用する適切な開始値を見つけるにはどうすればよいですか?
同じことを尋ねる別の方法は次のようになると思います。「良好な状態」のディスクI/Oを確認するために、各ホストでどのiostat
引数を使用する必要がありますか。
基礎となるカウンターは https://www.kernel.org/doc/Documentation/block/stat.txt に記載されています。
ブロックデバイスから読み取られた、またはブロックデバイスに書き込まれたIOPとセクターの絶対数に基づいて意味のあるしきい値を設定するには(小文字の-w
および-c
オプション)、その特定のブロックデバイスの実際の機能に関する事前知識が必要です(たとえば、それらをベンチマークすることによって)。
キューの長さ(大文字の-W
および-C
オプション)の使用は、もう少し普遍的なようです。基になるストレージの速度に関係なく、悪いIOキューが増えると、サポートできるよりも多くの読み取り/書き込みをプッシュし、アプリケーションの速度が低下します。
文書化された50ミリ秒と100ミリ秒が妥当な値なのか、完全に任意の値なのかはわかりません。
絶対数を使用する私の仮想サーバーは比較的簡単で、 特定の制限 のフレーバーでプロビジョニングされ、警告/クリティカルレベルを割り当てられたもののそれぞれ80%または95%に設定するだけで済みます制限。
たとえば、フレーバー600IOPSおよび10MB/sの場合:
割り当てられたdisk_read_bytes_sec
とdisk_write_bytes_sec
を512(セクターサイズ)で除算して、仮想ディスクがサポートするセクターの制限を取得します。 (10 MB = 10000000 bytes) / 512 = 19531
19531 * 80%= 15624および600 * 80%= 480
19531 * 95%= 18749および600 * 95%= 570
./check_diskstat.sh -d vda -w 480,15624,15624 -c 570,18749,18749