Elastic Compute Service (ECS) は、CPU 使用率やディスク使用率などのリソースを監視するために、インフラストラクチャ監視メトリックとオペレーティングシステム監視メトリックの 2 種類のメトリックを提供します。インフラストラクチャ監視メトリックは、ECS がホストから収集します。このエージェントレス方式は外部からの視点を提供し、プローブをインストールする必要はありません。オペレーティングシステム監視メトリックは、ECS インスタンスにインストールされた CloudMonitor エージェントによって収集されます。このエージェントベース方式は内部からの視点を提供し、オペレーティングシステム内からメトリックを収集します。このトピックでは、これら 2 種類のメトリックの収集方法、シナリオ、および定義について説明します。
インフラストラクチャ監視とオペレーティングシステム監視の違い
比較項目 | インフラストラクチャ監視 | オペレーティングシステム監視 |
監視場所 | 仮想化スタック | 仮想マシンのオペレーティングシステム内 |
収集頻度 | 1 分に 1 回 | 1 秒に 1 回 |
集計出力 | なし | データは 1 秒に 1 回サンプリングされ、15 秒ごとに 1 つのデータポイントに集計されます。最小 (min)、平均 (avg)、最大 (max) の 3 つのメトリックが生成されます。 |
インストール要件 | プローブは不要です。すぐに使用できます。 | CloudMonitor エージェントをインストールする必要があります。 |
長所 |
|
|
短所 |
|
|
一般的なシナリオ | インスタンスのインフラストラクチャ監視は、VM の実行状態の影響を受けません。インスタンスのハングや故障などの障害のトラブルシューティングに適しています。ただし、サンプリング頻度が低いため、パフォーマンスの急激な変動を捉える必要があるシナリオには適していません。 | アプリケーションのパフォーマンス診断、リアルタイムモニタリング、およびアラート。 |
インフラストラクチャ監視
ECS は、ホストからインスタンスのモニタリングデータを収集します。オペレーティングシステム (OS) レベルのプラグインをインストールする必要はありません。この機能はすぐに使用できます。
収集とレポート
ホスト上の収集プローブは、インスタンスに対して 1 分あたり 1 つのデータポイントを収集します。このデータポイントは、その 1 分間の平均使用量を表します。
メトリック
ECS インスタンスのインフラストラクチャ監視データは、1 分の粒度で収集されます。次の表にメトリックを示します。
チャートが 1 分の粒度でデータポイントを表示する場合、最大値、最小値、平均値は同じになります。
メトリック名 | メトリックの説明 | 単位 | MetricName | ディメンション | 統計 |
(ECS) CPU 使用率 | CPU 使用率 | % | CPUUtilization | userId, instanceId | 最大、最小、平均 |
(ECS) インターネット受信帯域幅 (クラシックネットワーク) | インターネット受信トラフィックの平均レート | bit/s | InternetInRate | userId, instanceId | 最大、最小、平均 |
(ECS) プライベートネットワーク受信帯域幅 | プライベートネットワーク受信トラフィックの平均レート | bit/s | IntranetInRate | userId, instanceId | 最大、最小、平均 |
(ECS) インターネット送信帯域幅 (クラシックネットワーク) | インターネット送信トラフィックの平均レート | bit/s | InternetOutRate | userId, instanceId | 最大、最小、平均 |
(ECS) プライベートネットワーク送信帯域幅 | プライベートネットワーク送信トラフィックの平均レート | bit/s | IntranetOutRate | userId, instanceId | 最大、最小、平均 |
(ECS) 全ディスクの読み取り BPS | システムディスクから 1 秒あたりに読み取られる合計バイト数 | Byte/s | DiskReadBPS | userId, instanceId | 最大、最小、平均 |
(ECS) 全ディスクの書き込み BPS | システムディスクに 1 秒あたりに書き込まれる合計バイト数 | Byte/s | DiskWriteBPS | userId, instanceId | 最大、最小、平均 |
(ECS) 全ディスクの読み取り IOPS | 全ディスクの読み取り IOPS | counts/s | DiskReadIOPS | userId, instanceId | 最大、最小、平均 |
(ECS) 全ディスクの書き込み IOPS | 全ディスクの書き込み IOPS | counts/s | DiskWriteIOPS | userId, instanceId | 平均、最小、最大 |
(ECS) IP アドレス別のインターネット受信帯域幅 | インターネット受信帯域幅 | bit/s | VPC_PublicIP_InternetInRate | userId, instanceId, ip | 最大、最小、平均 |
(ECS) IP アドレス別のインターネット送信帯域幅 | インターネット送信帯域幅 | bit/s | VPC_PublicIP_InternetOutRate | userId, instanceId, ip | 最大、最小、平均 |
(ECS) IP アドレス別のインターネット送信帯域幅使用率 | インターネット送信帯域幅の使用量 | % | VPC_PublicIP_InternetOutRate_Percent | userId, instanceId, ip | 平均 |
(ECS) インターネット受信トラフィック (クラシックネットワーク) | インターネット受信トラフィック | Byte | InternetIn | userId, instanceId | 平均、最小、最大、合計 |
(ECS) インターネット送信トラフィック (クラシックネットワーク) | インターネット送信トラフィック | Byte | InternetOut | userId, instanceId | 最大、最小、平均 |
インフラストラクチャ監視データの表示
CloudMonitor コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ホスト監視] ページで、ホスト名をクリックするか、ホストの [操作] 列にある [モニタリングチャート] をクリックします。
[インフラストラクチャ監視] タブをクリックします。
[インフラストラクチャ監視] タブで、対象ホストのインフラストラクチャ監視データを表示できます。また、メトリックのアラートルールを設定したり、アラートを表示したりすることもできます。詳細については、「ホストのアラートルールの作成」および「アラートの表示」をご参照ください。
オペレーティングシステム監視
CloudMonitor は、Alibaba Cloud ホスト (ECS インスタンス) および Alibaba Cloud 以外のホストにインストールされた CloudMonitor エージェントを使用して、幅広い OS レベルのメトリックを収集します。これらのメトリックに対してアラートルールを設定できます。メトリックがアラートルールをトリガーすると、CloudMonitor はアラート通知を送信するため、迅速に問題に対処できます。
前提条件
Alibaba Cloud ホスト (ECS インスタンス) および Alibaba Cloud 以外のホストに CloudMonitor エージェントがインストールされていることを確認してください。
収集とレポート
CloudMonitor ホストプローブは 1 秒に 1 回データをサンプリングします。データは 15 秒ごとに単一のデータポイントに集計されてから、サーバーにレポートされます。各レポートには、15 秒間の 3 つの値が含まれます:min (最小値)、max (最大値)、および avg (平均値)。
メトリック
オペレーティングシステム監視メトリックは、15 秒に 1 回の頻度で収集されます。メトリックは次のように分類されます:
CPU 関連メトリック
Windows
`ntdll` の `NtQuerySystemInformation` 関数を呼び出して、CPU の各部分が費やした時間を取得します。この関数を間隔をあけて 2 回呼び出すことにより、その間隔中に CPU の各部分が費やした時間の割合を計算できます。
Linux
次の表のメトリックの詳細については、
topコマンドの出力を参照してください。
メトリック名
説明
単位
MetricName
ディメンション
統計
説明 (Linux のみ)
(エージェント) cpu.idle
アイドル状態の CPU の割合。
%
cpu_idle
userId, instanceId
最大、最小、平均
CPU がアイドル状態である時間の割合。
(エージェント) cpu.system
カーネル空間で費やされた CPU 時間の割合。
%
cpu_system
userId, instanceId
最大、最小、平均
システムコンテキストスイッチによるオーバーヘッド。このメトリックの値が高い場合は、サーバー上で実行されているプロセスまたはスレッドが多すぎることを示します。
(エージェント) cpu.user
ユーザー空間で費やされた CPU 時間の割合。
%
cpu_user
userId, instanceId
最大、最小、平均
ユーザープロセスによる CPU 消費。
(エージェント) cpu.wait
I/O 操作の待機に費やされた CPU 時間の割合。
%
cpu_wait
userId, instanceId
最大、最小、平均
このメトリックの値が高い場合は、I/O 操作が頻繁に行われていることを示します。
(エージェント) cpu.other
他のタスクに費やされた CPU 時間の割合。
%
cpu_other
userId, instanceId
最大、最小、平均
その他の消費 = Nice + SoftIrq + Irq + Stolen。
(エージェント) cpu.total
消費された CPU の合計割合。
%
cpu_total
userId, instanceId
最大、最小、平均
CPU 使用率 = 1 - Host.cpu.idle
メモリ関連メトリック
Windows
`kernel32.dll` の `GlobalMemoryStatusEx` 関数を呼び出して、32 ビット Windows オペレーティングシステムの物理メモリと仮想メモリの現在の使用状況を取得します。
Linux
次の表のメトリックの詳細については、
freeコマンドの出力を参照してください。データソースは/proc/meminfoです。
メトリック
説明
単位
MetricName
ディメンション
統計
説明 (Linux のみ)
(エージェント) memory.total.space
合計メモリ。
Byte
memory_totalspace
userId, instanceId
最大、最小、平均
サーバー上の合計メモリ量。
これは /proc/meminfo の MemTotal に対応します。
(エージェント) memory.free.space
空きメモリの量。
Byte
memory_freespace
userId, instanceId
最大、最小、平均
システムで利用可能なメモリの量。
これは /proc/meminfo の MemFree に対応します。
(エージェント) memory.used.space
使用済みメモリの量。
Byte
memory_usedspace
userId, instanceId
最大、最小、平均
システムで使用されているメモリの量。
計算方法:total - free。
(エージェント) memory.actualused.space
ユーザーによって消費されたメモリの量。
Byte
memory_actualusedspace
userId, instanceId
最大、最小、平均
計算方法:
/proc/meminfo に MemAvailable が存在する場合:total - MemAvailable
/proc/meminfo に MemAvailable が存在しない場合:used - buffers - cached
説明CentOS 7.2 や Ubuntu 16.04 以降など、新しい Linux カーネルを使用するシステムでは、メモリの推定がより正確になります。MemAvailable の具体的な意味については、この コミットをご参照ください。
(エージェント) memory.free.utilization
空きメモリの割合。
%
memory_freeutilization
userId, instanceId
最大、最小、平均
計算方法:
/proc/meminfo に MemAvailable が存在する場合:(MemAvailable / total) × 100%。
/proc/meminfo に MemAvailable が存在しない場合:((total - actualused) / total) × 100%。
(エージェント) memory.used.utilization
メモリ使用率。
%
memory_usedutilization
userId, instanceId
最大、最小、平均
計算方法:
/proc/meminfo に MemAvailable が存在する場合:((total - MemAvailable) / total) × 100%。
/proc/meminfo に MemAvailable が存在しない場合:((total - free - buffers - cached) / total) × 100%。
システムの平均負荷メトリック
Windows
この監視メトリックは存在しません。
Linux
次の表のメトリックの詳細については、
topコマンドの出力を参照してください。値が高いほど、システムがビジーであることを示します。
メトリック名
説明
単位
MetricName
ディメンション
統計
(エージェント) load.1m
過去 1 分間のシステムの平均負荷。
なし
load_1m
userId, instanceId
最大、最小、平均
(エージェント) load.5m
過去 5 分間のシステムの平均負荷。
なし
load_5m
userId, instanceId
最大、最小、平均
(エージェント) load.15m
過去 15 分間のシステムの平均負荷。
なし
load_15m
userId, instanceId
最大、最小、平均
(エージェント) load.1m.percore
過去 1 分間の CPU コアあたりのシステムの平均負荷。
なし
load_per_core_1m
userId, instanceId
最大、最小、平均
(エージェント) load.5m.percore
過去 5 分間の CPU コアあたりのシステムの平均負荷。
なし
load_per_core_5m
userId, instanceId
最大、最小、平均
(エージェント) load.15m.percore
過去 15 分間の CPU コアあたりのシステムの平均負荷。
なし
load_per_core_15m
userId, instanceId
最大、最小、平均
ディスク関連メトリック
Windows
まず、`Kernel32.dll` の `GetDiskFreeSpaceExA` 関数を呼び出して、利用可能なディスク領域を取得します。これにより、使用済みストレージ領域、ディスク使用率、空きストレージ領域、およびディスクの合計ストレージ領域が提供されます。次に、`RegConnectRegistryA` 関数を呼び出して `HKEY_PERFORMANCE_DATA` レジストリに接続します。最後に、`RegQueryValueExA` 関数を呼び出して、`HKEY_PERFORMANCE_DATA` レジストリからディスク関連のプロパティをクエリします。これらのプロパティには、読み取り回数、書き込み回数、書き込みバイト数、読み取りバイト数、読み取りに費やした時間、書き込みに費やした時間、およびディスク使用時間が含まれます。
Linux
ディスク使用率と inode 使用率の詳細については、
dfコマンドの出力を参照してください。ディスクの読み取りと書き込みの詳細については、iostatコマンドの出力を参照してください。この情報は、次の表のメトリックを理解するのに役立ちます。
メトリック
説明
単位
MetricName
寸法
統計
Host.diskusage.used
使用済みディスクストレージ領域。
Byte
diskusage_used
userId, instanceId, device
最大、最小、平均
Host.diskusage.utilization
一般ユーザーのディスク使用率。
%
diskusage_utilization
userId, instanceId, device
最大、最小、平均
Host.diskusage.free
一般ユーザーとスーパーユーザー向けの空きディスクストレージ領域。
Byte
diskusage_free
userId, instanceId, device
最大、最小、平均
(エージェント) disk.usage.avail_device
一般ユーザー向けの空きディスクストレージ領域。
Byte
diskusage_avail
userId, instanceId, device
最大、最小、平均
Host.diskusage.total
合計ディスクストレージ領域。
Byte
diskusage_total
userId, instanceId, device
最大、最小、平均
(エージェント) disk.read.bps_device
ディスクから 1 秒あたりに読み取られるバイト数。
Byte/s
disk_readbytes
userId, instanceId, device
最大、最小、平均
(エージェント) disk.write.bps_device
ディスクに 1 秒あたりに書き込まれるバイト数。
Byte/s
disk_writebytes
userId, instanceId, device
最大、最小、平均
(エージェント) disk.read.iops_device
ディスクへの 1 秒あたりの読み取りリクエスト数。
counts/s
disk_readiops
userId, instanceId, device
最大、最小、平均
(エージェント) disk.write.iops_device
ディスクへの 1 秒あたりの書き込みリクエスト数。
counts/s
disk_writeiops
userId, instanceId, device
最大、最小、平均
ファイルシステムメトリック
Windows
指定された監視メトリックは存在しません。
Linux
次の表のメトリックの詳細については、
dfコマンドの出力を参照してください。
監視メトリック名
説明
単位
MetricName
ディメンション
統計
説明 (Linux のみ)
(エージェント) fs.inode.utilization_device
inode 使用率。
%
fs_inodeutilization
userId, instanceId, device
最大、最小、平均
Linux システムは、ファイル名を識別するためにファイル名の代わりに inode 番号を使用します。ディスクがいっぱいになっていなくても、すべての inode が割り当てられている場合、ディスク上に新しいファイルを作成することはできません。したがって、inode の使用率を監視する必要があります。inode の数は、ファイルシステム内のファイルの数を表します。多くの小さなファイルがあると、inode の使用率が高くなる可能性があります。
ネットワーク関連メトリック
Windows
まず、`iphlpapi.dll` の `GetAdaptersAddresses` 関数を呼び出して、ローカルマシンのアダプターアドレスを取得します。次に、`GetIfTable` 関数を呼び出して、各インターフェイスのネットワークメトリックを取得します。これらのメトリックには、1 秒あたりの受信ビット数、1 秒あたりの送信ビット数、1 秒あたりの受信パケット数、1 秒あたりの送信パケット数、受信エラーパケット、送信エラーパケットが含まれます。
Linux
TCP 接続数の収集の詳細については、
ssコマンドの出力を参照してください。説明TCP 接続数は、ECS ホストで TCP プロトコルを使用するすべての接続を指します。
デフォルトでは、次の TCP 接続状態が収集されます:TCP_TOTAL (合計接続数)、ESTABLISHED (確立された状態の接続)、および NON_ESTABLISHED (確立されていない状態の接続、これには ESTABLISHED 以外のすべての状態が含まれます)。
次の表のネットワーク関連メトリックの詳細については、
iftopコマンドの出力を参照してください。
メトリック名
説明
単位
MetricName
ディメンション
統計
(エージェント) network.in.rate_device
ネットワークインターフェイスカード (NIC) が 1 秒あたりに受信するビット数。これは NIC のダウンストリーム帯域幅です。
bit/s
networkin_rate
userId, instanceId, device
最大、最小、平均
(エージェント) network.out.rate_device
NIC が 1 秒あたりに送信するビット数。これは NIC のアップストリーム帯域幅です。
bit/s
networkout_rate
userId, instanceId, device
最大、最小、平均
(エージェント) network.in.packages_device
NIC が 1 秒あたりに受信するパケット数。
packets/s
networkin_packages
userId, instanceId, device
最大、最小、平均
(エージェント) network.out.packages_device
NIC が 1 秒あたりに送信するパケット数。
packets/s
networkout_packages
userId, instanceId, device
最大、最小、平均
(エージェント) network.in.errorpackages_device
デバイスドライバによって検出された受信エラーパケットの数。
packets/s
networkin_errorpackages
userId, instanceId, device
最大、最小、平均
(エージェント) network.out.errorpackages_device
デバイスドライバによって検出された送信エラーパケットの数。
packets/s
networkout_errorpackages
userId, instanceId, device
最大、最小、平均
(エージェント) network.tcp.connection_state
さまざまな状態の TCP 接続の数。これには、LISTEN、SYN_SENT、ESTABLISHED、SYN_RECV、FIN_WAIT1、CLOSE_WAIT、FIN_WAIT2、LAST_ACK、TIME_WAIT、CLOSING、および CLOSED が含まれます。
カウント
net_tcpconnection
userId, instanceId, state
最大、最小、平均
上位 5 つのプロセス関連メトリック
Windows
クエリ
まず、`Kernel32.dll` の `OpenProcess` 関数を呼び出してプロセスにアクセスします。`GetProcessTimes` 関数を間隔をあけて 2 回呼び出して、CPU 使用率を計算します。次に、`RegConnectRegistryA` 関数を呼び出して `HKEY_PERFORMANCE_DATA` レジストリに接続します。最後に、`RegQueryValueExA` 関数を呼び出して、レジストリからプロセスプロパティをクエリします。これらのプロパティには、プロセス ID、親プロセス ID、優先度、仮想メモリ、常駐メモリ、共有メモリ、プロセス名、開いているファイルの数、スレッド数、ページフォールト、読み取りバイト数、書き込みバイト数が含まれます。
プロセス数 (Host.process.number)
`OpenProcess` 関数を呼び出してターゲットプロセスを開きます。`NTDLL` の `NtQueryInformationProcess` 関数を呼び出して `RTL_USER_PROCESS_PARAMETERS` 情報を取得します。`ReadProcessMemory` 関数を呼び出してプロセスのコマンドラインを取得します。この操作により、プロセスの引数 (args) とそのルート実行パス (現在の作業ディレクトリ) が取得されます。
`OpenProcessToken` 関数を呼び出してアクセストークンハンドルを取得します。`GetTokenInformation` 関数を呼び出してトークン情報を取得します。`LookupAccountSid` 関数を呼び出して、プロセスユーザー名とユーザーグループを取得します。
各プロセスについて、その引数 (args)、ルート実行パス、ユーザー名、およびユーザーグループがキーワードと照合されます。一致が見つかった場合、カウンターが 1 ずつインクリメントされます。
Linux
プロセスの CPU とメモリの使用率の詳細については、
topコマンドの出力を参照してください。CPU 使用率はマルチコアの使用率を反映します。Host.process.openfile の詳細については、
lsofコマンドの出力を参照してください。Host.process.number の詳細については、
ps aux | grep '<keyword>'コマンドの出力を参照してください。
メトリック
説明
単位
MetricName
ディメンション
統計
注
(エージェント) process.cpu_pid
特定のプロセスによって消費される CPU の割合。
%
process.cpu
userId, instanceId, name, pid
平均
アラートはサポートされていません。
(エージェント) process.memory_pid
特定のプロセスによって消費されるメモリの割合。
%
process.memory
userId, instanceId, name, pid
平均
アラートはサポートされていません。
(エージェント) process.openfile_pid
現在のプロセスによって開かれているファイルの数。
単位
process.openfile
userId, instanceId, name, pid
平均
アラートはサポートされていません。
(エージェント) process.count_processname
指定されたキーワードを持つプロセスの数。
単位
process.number
userId, instanceId, processName
平均
アラートはサポートされていません。
オペレーティングシステム監視データの表示
CloudMonitor コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ホスト監視] ページで、ホスト名をクリックするか、ホストの [操作] 列にある [モニタリングチャート] をクリックします。
[オペレーティングシステム監視] タブで、対象ホストのオペレーティングシステム監視データを表示できます。また、メトリックのアラートルールを設定したり、アラートを表示したりすることもできます。詳細については、「ホストのアラートルールの作成」および「アラートの表示」をご参照ください。