ZabbixはディスクIOユーティリティモニタリングを自動的に検出します



Zabbix Automatically Discovers Disk Io Util Monitoring



I. iostat

ZabbixはディスクのIOパフォーマンスを監視するためのテンプレートを提供していないため、自分で作成する必要があります。 Iostatは、主にシステム機器のIO負荷を監視するために使用されます。 iostatを最初に実行すると、システムの起動からのさまざまな統計が表示されます。 iostatを実行すると、コマンドが最後に実行されてからの統計が表示されます。ユーザーは、統計の数と時間を指定することにより、必要な統計を取得できます。したがって、iostatを使用してシステムIO負荷を監視する場合、iostatが結果を直接取得しないでください。ただし、iostat -dxkt 1 2が結果を取得します。そうしないと、取得されたデータが正しくありません。



Iostatの一般的なパラメータの説明
-c#CPU統計のみを表示します。 -dオプションと相互に排他的です。
-d#ディスク統計のみを表示します。 -cオプションと相互に排他的です。
-k#デフォルトのユニットブロックであるK単位で1秒あたりのディスク要求数を表示します。
-t#データを印刷するときは、データを収集する時間を印刷します。
-V#バージョン番号とヘルプ情報を出力します。
-x#output拡張情報。


avg-cpuセグメント:
%user:ユーザーレベルで実行するために使用されたCPUのパーセンテージ。
%nice:nice操作で使用されたCPUのパーセンテージ。
%sys:システムレベル(カーネル)で使用されているCPUの割合。
%iowait:ハードウェアI / Oの待機中にCPUによって使用されたCPUのパーセンテージ。
%idle:CPUアイドル時間のパーセンテージ。
デバイスセグメント:
tps:1秒あたりに送信されたI / O要求の数。
Blk_read / s:1秒あたりに読み取られるブロックの数。
Blk_wrtn / s:1秒あたりに書き込まれるブロックの数。
Blk_read:読み込まれたブロックの総数。
Blk_wrtn:書き込まれたブロックの総数。




rrqm / s:1秒あたりの読み取り要求の数
wrqm / s:マージされた1秒あたりの書き込み要求の数
r / s:1秒あたりに完了した読み取りの数
w / s:1秒あたりの書き込み数
rkB / s:1秒あたりの読み取りデータ(kb)
wkB / s:1秒あたりの書き込みデータ(kb)
avgrq-sz:IOリクエストごとの平均セクターサイズ
avgqu-sz:IO要求ごとの平均キュー長(短いほど良い)
await:各IO要求の平均待機時間(ミリ秒単位)。一般的なシステムIO待機時間は5ms未満である必要があります。 10msを超えると大きくなります。この時間には、キュー時間とサービス時間が含まれます。つまり、一般的に、awaitはsvctmよりも大きくなります。差が小さいほど、キュー時間は短くなります。差が大きいほど、キュー時間が長くなり、システムが停止していることを示します。問題。
r_await:読み取りに費やされた平均時間(ミリ秒)
w_await:平均書き込み時間(ミリ秒)
svctm:平均IO要求処理時間(ミリ秒)、svctmの値が待機に近い場合、I / O待機がほとんどないことを意味し、待機の値がはるかに大きい場合、ディスクパフォ​​ーマンスは非常に良好です。 svctmは、I / Oキューの待機時間が長すぎて、システムで実行されているアプリケーションの速度が低下することを意味します。
%util:IOキューは空ではありません。このパラメーターは、デバイスのビジー状態を示します。一般に、パラメータが100%の場合、デバイスはすでにフルキャパシティで実行されています。

次に、監視側で自動検出および監視ディスクIOスクリプトを記述します

スクリプトディレクトリ/etc/zabbix/zabbix_agentd.d/scripts

1、ディスク検出スクリプト
disk_discovery.sh
#!/ bin / bash
diskarray =( `cat / proc / diskstats | grep -E ' bsd [az] b | bxvd [az] b | bvd [az] b' | awk '{print $ 3}' | sort | uniq 2> / dev / null`)
length = $ {#diskarray [@]}
printf '{ n'
printf ' t' '' data ':['
for((i = 0i<$lengthi++))
行う
printf ' n t t {'
printf '' {#DISK_NAME} ':' $ {diskarray [$ i]} '}'
if [$ i -lt $ [$ length-1]] then
printf '、'
あります
完了
printf ' n t] n'
printf '} n'



2、diskioモニタリングスクリプト
disk_status.sh
#/ bin / sh
デバイス= $ 1
ディスク= $ 2
ケース$ DISK in
rrqm)
iostat -dxkt 1 2 | grep ' b $ Device b' | tail -1 | awk '{print $ 2}'

wrqm)
iostat -dxkt 1 2 | grep ' b $ Device b' | tail -1 | awk '{print $ 3}'

rps)
iostat -dxkt 1 2 | grep ' b $ Device b' | tail -1 | awk '{print $ 4}'

wps)
iostat -dxkt 1 2 | grep ' b $ Device b' | tail -1 | awk '{print $ 5}'

rKBps)
iostat -dxkt 1 2 | grep ' b $ Device b' | tail -1 | awk '{print $ 6}'

wKBps)
iostat -dxkt 1 2 | grep ' b $ Device b' | tail -1 | awk '{print $ 7}'

avgrq-sz)
iostat -dxkt 1 2 | grep ' b $ Device b' | tail -1 | awk '{print $ 8}'

avgqu-sz)
iostat -dxkt 1 2 | grep ' b $ Device b' | tail -1 | awk '{print $ 9}'

待つ)
iostat -dxkt 1 2 | grep ' b $ Device b' | tail -1 | awk '{print $ 10}'

svctm)
iostat -dxkt 1 2 | grep ' b $ Device b' | tail -1 | awk '{print $ 11}'

有用)
iostat -dxkt | grep ' b $ Device b' | tail -1 | awk '{print $ 12}'

esac

3、zabbix設定ファイル
UserParameter = disk.discovery [*]、/ etc / zabbix / zabbix_agentd.d / scripts / disk_discovery.sh
UserParameter = disk.status [*]、/ etc / zabbix / zabbix_agentd.d / scripts / disk_status.sh $ 1 $ 2
4、クライアントサービスを再起動します
5、サーバー側でテストします
zabbix_get -s 192.168.1.211 -k'disk.discovery [*]

第三に、zabbixコンソールの操作

1、構成-テンプレート-テンプレートoslinux-自動検出ルール-検出ルールの作成

2、監視項目のプロトタイプ(キー値[]の値は大文字にする必要があります。大文字にしないと、エラーが報告されます)
アイテムを作成できません:同じキー「diskio.x。[[xxxxxx]]のアイテムは既に存在します

3、グラフィックプロトタイプ(動的な名前を残すためのディスクの名前。それ以外の場合は、次のように報告されます)
zabbix3グラフを作成できません:同じ名前のグラフ「ディスクIO」はすでに存在します