WindowsサーバでディスクのI/Oを監視してみた

WindowsサーバでディスクのI/Oを監視してみた

はじめに

Windowsサーバでディスクにどのくらいの読み書きがあるのか監視します。

 

監視項目 アイテムキー 説明
ディスクタイム perf_counter[\PhysicalDisk(_Total)\% Disk Time] ディスクに対するI/O要求を処理する時間の割合
ディスク転送時間(R/W) perf_counter[\PhysicalDisk(_Total)\Avg. Disk sec/Transfer] ディスク転送時間の平均秒数。300ms以上が継続する場合はエラー発生の可能性あり
ディスク転送時間(Read) perf_counter[\PhysicalDisk(_Total)\Avg. Disk sec/Read] ディスクからのデータ読み込み時間の平均秒数
ディスク転送時間(Write) perf_counter[\PhysicalDisk(_Total)\Avg. Disk sec/Write] ディスクからのデータ書き込み時間の平均秒数
ディスク速度(R/W) perf_counter[\PhysicalDisk(_Total)\Disk Transfer/sec] ディスクが1秒当たりに処理できる読み書き速度
ディスク速度(Read) perf_counter[\PhysicalDisk(_Total)\Disk Reads/sec] ディスクが1秒当たりに処理できる読み込み速度
ディスク速度(Write) perf_counter[\PhysicalDisk(_Total)\Disk Writes/sec] ディスクが1秒当たりに処理できる書き込み速度
ディスク転送量(R/W) perf_counter[\PhysicalDisk(_Total)\Disk Bytes/sec] ディスクが1秒間の読み書きで転送できるデータ量常に20KByte以下の場合は、ディスクI/Oがボトルネックの可能性あり。
ディスク転送量(Read) perf_counter[\PhysicalDisk(_Total)\Disk Read Bytes/sec] ディスクが1秒間の読み込みで転送できるデータ量
ディスク転送量(Write) perf_counter[\PhysicalDisk(_Total)\Disk Write Bytes/sec] ディスクが1秒間の書き込みで転送できるデータ量
ディスクキュー(Avg) perf_counter[\PhysicalDisk(_Total)\Avg. Disk Queue Length] ディスクのキューに入った読み込みおよび書き込み要求の数の平均値。2以下が望ましい。
ディスクキュー(Read) perf_counter[\PhysicalDisk(_Total)\Avg. Disk Read Queue Length] ディスク読み込み待ちの要求数。2以下が望ましい。
ディスクキュー(Write) perf_counter[\PhysicalDisk(_Total)\Avg. Disk Write Queue Length] ディスク書き込み待ちの要求数。2以下が望ましい。

環境

Zabbixサーバ

OS:CentOS 8.2.2004
Apache:2.4.37
PHP:7.2.25
MariaDB:10.3.17
Zabbix Server:5.0.2
Zabbix Agent:5.0.2

 

検証サーバ

OS:Windows Server2019

操作手順

Zabbixの管理コンソールにサインインします。

 

テンプレートを作成する

左サイドバーから [設定] - [テンプレート] をクリックします。
「テンプレートの作成」ボタンをクリックします。
以下の通り入力します。
テンプレート名:T_Disk_25
グループ:Templates
「追加」ボタンをクリックします。

 

ディスカバリを作成する

テンプレートの「ディスカバリ」をクリックします。
WindowsサーバでディスクのI/Oを監視してみた

 

ディスカバリルールの作成

右上の「ディスカバリルールの作成」ボタンをクリックします。
アイテムの作成画面では、監視したい項目に合わせて設定します。
名前:DiskDiscovery
タイプ:Zabbixエージェント
キー:vfs.fs.discovery
監視間隔:1h

 

メニュー上で「フィルタ」をクリックします。
以下のとおり入力します。
マクロ:{#FSTYPE}
正規表現:@File systems for discovery
「追加」ボタンをクリックします。

 

マクロの「{#FSTYPE}」はファイルシステムのタイプを取得しています。
zabbix_getコマンドで情報を取得します。
# zabbix_get -s IPアドレス -k vfs.fs.discovery
[{"{#FSNAME}":"C:","{#FSTYPE}":"NTFS","{#FSDRIVETYPE}":"fixed"},{"{#FSNAME}":"D:","{#FSTYPE}":"UDF","{#FSDRIVETYPE}":"cdrom"}]

正規表現の@File systems for discoveryは[管理]-[一般設定]-[正規表現] で確認できます。
以下の条件にマッチしたファイルシステムを対象にしています。
^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$

つまり、フィルタを使用することでDVDドライブなどは除外しているということです。

 

アイテムのプロトタイプ作成

「アイテムのプロトタイプの作成」ボタンをクリックします。
アイテムのプロトタイプの作成画面では、監視したい項目に合わせて設定します。
名前:05.ディスクタイム {#FSNAME}
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(* {#FSNAME})\% Disk Time]
データ型:数値 (浮動小数)
単位:%
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

「アイテムのプロトタイプの作成」ボタンをクリックします。
アイテムのプロトタイプの作成画面では、監視したい項目に合わせて設定します。
名前:12.ディスク転送時間 Read {#FSNAME}
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(* {#FSNAME})\Avg. Disk sec/Read]
データ型:数値 (浮動小数)
単位:s
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

「アイテムのプロトタイプの作成」ボタンをクリックします。
アイテムのプロトタイプの作成画面では、監視したい項目に合わせて設定します。
名前:14.ディスク転送時間 Write {#FSNAME}
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(* {#FSNAME})\Avg. Disk sec/Write]
データ型:数値 (浮動小数)
単位:s
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

「アイテムのプロトタイプの作成」ボタンをクリックします。
アイテムのプロトタイプの作成画面では、監視したい項目に合わせて設定します。
名前:22.ディスク速度 Read {#FSNAME}
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(* {#FSNAME})\Disk Reads/sec]
データ型:数値 (浮動小数)
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

「アイテムのプロトタイプの作成」ボタンをクリックします。
アイテムのプロトタイプの作成画面では、監視したい項目に合わせて設定します。
名前:24.ディスク速度 Write {#FSNAME}
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(* {#FSNAME})\Disk Writes/sec]
データ型:数値 (浮動小数)
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

「アイテムのプロトタイプの作成」ボタンをクリックします。
アイテムのプロトタイプの作成画面では、監視したい項目に合わせて設定します。
名前:32.ディスク転送量 Read {#FSNAME}
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(* {#FSNAME})\Disk Read Bytes/sec]
データ型:数値 (浮動小数)
単位:B
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

「アイテムのプロトタイプの作成」ボタンをクリックします。
アイテムのプロトタイプの作成画面では、監視したい項目に合わせて設定します。
名前:34.ディスク転送量 Write {#FSNAME}
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(* {#FSNAME})\Disk Write Bytes/sec]
データ型:数値 (浮動小数)
単位:B
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

「アイテムのプロトタイプの作成」ボタンをクリックします。
アイテムのプロトタイプの作成画面では、監視したい項目に合わせて設定します。
名前:42.ディスクキュー Read {#FSNAME}
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(* {#FSNAME})\Avg. Disk Read Queue Length]
データ型:数値 (浮動小数)
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

「アイテムのプロトタイプの作成」ボタンをクリックします。
アイテムのプロトタイプの作成画面では、監視したい項目に合わせて設定します。
名前:44.ディスクキュー Write {#FSNAME}
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(* {#FSNAME})\Avg. Disk Write Queue Length]
データ型:数値 (浮動小数)
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

アイテムの作成

「アイテムの作成」ボタンをクリックします。
アイテムの作成画面では、監視したい項目に合わせて設定します。
名前:05.ディスクタイム All
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(_Total)\% Disk Time]
データ型:数値 (浮動小数)
単位:%
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

「アイテムの作成」ボタンをクリックします。
アイテムの作成画面では、監視したい項目に合わせて設定します。
名前:10.ディスク転送時間 All
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(_Total)\Avg. Disk sec/Transfer]
データ型:数値 (浮動小数)
単位:s
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

「アイテムの作成」ボタンをクリックします。
アイテムの作成画面では、監視したい項目に合わせて設定します。
名前:20.ディスク速度 All
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(_Total)\Disk Transfers/sec]
データ型:数値 (浮動小数)
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

「アイテムの作成」ボタンをクリックします。
アイテムの作成画面では、監視したい項目に合わせて設定します。
名前:30.ディスク転送量 All
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(_Total)\Disk Bytes/sec]
データ型:数値 (浮動小数)
単位:B
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

「アイテムの作成」ボタンをクリックします。
アイテムの作成画面では、監視したい項目に合わせて設定します。
名前:40.ディスクキュー All
タイプ:Zabbixエージェント
キー:perf_counter[\PhysicalDisk(_Total)\Avg. Disk Queue Length]
データ型:数値 (浮動小数)
単位:%
監視間隔:5m
アプリケーション:Disk I/O
「追加」ボタンをクリックします。

 

テンプレートをホストにリンクする

左サイドバーから [設定] - [ホスト] をクリックします。
作成したテンプレートをリンクするホストを選択します。ここでは「WindowsServer2019」を選択しています。
「テンプレート」をクリックします。
新規テンプレートをリンク欄で、「T_Disk_25」をリンクします。

動作確認

[監視データ]-[最新データ]をクリックします。
ホストは「WindowsServer2019」を選択し、「適用」ボタンをクリックします。

 

ディスクの情報が取得できています。

 

WindowsサーバでディスクのI/Oを監視してみた

トップへ戻る