【Zabbix】Linuxサーバ CPU使用率の監視設定
LinuxサーバのCPU使用率の監視設定を検証してみました。
Contents
概要
CPU使用率で監視すべき項目は、vmstat
コマンドで確認できます。以下の出力結果のうち、cpu
にカテゴライズされているus(user)
、sy(system)
、id(idle)
、wa(iowait)
、st(steal)
を使用します。
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1587484 2232 176004 0 0 2321 83 520 656 4 7 84 6 0
各値の意味には以下のとおりです。(単位: %)
- user: ユーザプロセス(アプリケーション)が使用したCPU時間の割合
- system: システムプロセス(カーネル)が使用したCPU時間の割合
- idle: 使用されていないCPU時間の割合
- iowait: ディスクI/O待ちで使用できなかったCPU時間の割合
- steal: 仮想環境のホストOSにおいて、複数のゲストOS間で実行競合が発生したCPU時間の割合
また、100 - idle
で、トータルのCPU使用時間の割合を求めることができます。
前提条件
- 監視サーバのソフトウェアバージョン
- OS: CentOS 7.7
- 監視ソフト: Zabbix Server 4.4
- 監視対象サーバのソフトウェアバージョン
- OS: CentOS 7.7
- 監視エージェント: Zabbix Agent 4.4
- Zabbix上に監視対象ホストが登録済みであること
設定手順
Linux用テンプレート(新規作成する場合)
まだテンプレートが存在していない場合、Linux用のテンプレートを作成します。既に他設定でテンプレートを作成している場合は、テンプレートの作成は不要です。
ZabbixのWebUIから、[設定]→[テンプレート]→[テンプレートの作成]の順に選択します。
以下のパラメータを入力し、[追加]を押下します。
項目名 | 設定値 |
---|---|
テンプレート名 | Template OS Linux |
グループ | Templates |
「テンプレートを追加しました」が表示されれば、テンプレートの作成は完了です。
アプリケーション
テンプレート内の監視設定をカテゴリ分けするために、アプリケーションを設定します。
ZabbixのWebUIから、[設定]→[テンプレート]の順に選択します。
[フィルター]の[名前]に「Template OS Linux」を入力し、[適用]を押下します。
検索結果から、「Template OS Linux」の行を探し、[アプリケーション]を押下します。
[アプリケーションの作成]を押下します。
以下のパラメータを入力し、[追加]を押下します。
項目名 | 設定値 |
---|---|
名前 | CPU |
「アプリケーションを追加しました」が表示されれば、アプリケーションの作成は完了です。
アイテム
収集対象のCPU使用率に関するデータを、アイテムとして設定します。
ZabbixのWebUIから、[設定]→[テンプレート]の順に選択します。
[フィルター]の[名前]に「Template OS Linux」を入力し、[適用]を押下します。
検索結果から、「Template OS Linux」の行を探し、[アイテム]を押下します。
以降は、各アイテムごとに作成を繰り返し行います。
CPU使用率 (user)
[アイテムの作成]を押下します。
以下パラメータを指定し、[追加]を押下します。指定の無いパラメータは、デフォルトのままで構いません。
項目名 | 設定値 |
---|---|
名前 | CPU使用率 (user) |
タイプ | Zabbixエージェント |
キー | system.cpu.util[,user] |
データ型 | 数値 (浮動小数) |
単位 | % |
監視間隔 | 1m |
ヒストリの保存期間 | 7d |
アプリケーション | CPU |
「アイテムを追加しました」が表示されれば、「CPU使用率 (user)」用アイテムの作成は完了です。
CPU使用率 (system)
「CPU使用率 (user)」アイテムと同様の手順で、以下パラメータのアイテムを作成します。
項目名 | 設定値 |
---|---|
名前 | CPU使用率 (system) |
タイプ | Zabbixエージェント |
キー | system.cpu.util[,system] |
データ型 | 数値 (浮動小数) |
単位 | % |
監視間隔 | 1m |
ヒストリの保存期間 | 7d |
アプリケーション | CPU |
CPU使用率 (idle)
「CPU使用率 (user)」アイテムと同様の手順で、以下パラメータのアイテムを作成します。
項目名 | 設定値 |
---|---|
名前 | CPU使用率 (idle) |
タイプ | Zabbixエージェント |
キー | system.cpu.util[,idle] |
データ型 | 数値 (浮動小数) |
単位 | % |
監視間隔 | 1m |
ヒストリの保存期間 | 7d |
アプリケーション | CPU |
CPU使用率 (iowait)
「CPU使用率 (user)」アイテムと同様の手順で、以下パラメータのアイテムを作成します。
項目名 | 設定値 |
---|---|
名前 | CPU使用率 (iowait) |
タイプ | Zabbixエージェント |
キー | system.cpu.util[,iowait] |
データ型 | 数値 (浮動小数) |
単位 | % |
監視間隔 | 1m |
ヒストリの保存期間 | 7d |
アプリケーション | CPU |
CPU使用率 (steal)
「CPU使用率 (user)」アイテムと同様の手順で、以下パラメータのアイテムを作成します。
項目名 | 設定値 |
---|---|
名前 | CPU使用率 (steal) |
タイプ | Zabbixエージェント |
キー | system.cpu.util[,steal] |
データ型 | 数値 (浮動小数) |
単位 | % |
監視間隔 | 1m |
ヒストリの保存期間 | 7d |
アプリケーション | CPU |
CPU使用率 (total)
「CPU使用率 (user)」アイテムと同様の手順で、以下パラメータのアイテムを作成します。
項目名 | 設定値 |
---|---|
名前 | CPU使用率 (total) |
タイプ | 計算 |
キー | system.cpu.util[total] |
式 | 100-last(“system.cpu.util[,idle]”) |
データ型 | 数値 (浮動小数) |
単位 | % |
監視間隔 | 1m |
ヒストリの保存期間 | 7d |
アプリケーション | CPU |
トリガー
収集したアイテムに対して、異常を判定するためのトリガーを設定します。
ZabbixのWebUIから、[設定]→[テンプレート]の順に選択します。
[フィルター]の[名前]に「Template OS Linux」を入力し、[適用]を押下します。
検索結果から、「Template OS Linux」の行を探し、[トリガー]を押下します。
以降は、各トリガーごとに作成を繰り返し行います。
CPU使用率(user)
[トリガーの作成]を押下します。
以下パラメータを指定し、[追加]を押下します。指定の無いパラメータは、デフォルトのままで構いません。
項目名 | 設定値 |
---|---|
名前 | CPU使用率 (user) 高騰 |
深刻度 | 警告 |
障害の条件式 | {Template OS Linux:system.cpu.util[,user].last(#3)}>=90 |
正常イベントの生成 | 復旧条件式 |
復旧条件式 | {Template OS Linux:system.cpu.util[,user].last(#3)}<80 |
障害イベント生成モード | 単一 |
「トリガーを追加しました」が表示されれば、「CPU使用率 (user)」用トリガーの作成は完了です。
CPU使用率(sys)
「CPU使用率 (user) 高騰」トリガーと同様の手順で、以下パラメータのトリガーを作成します。
項目名 | 設定値 |
---|---|
名前 | CPU使用率 (system) 高騰 |
深刻度 | 警告 |
障害の条件式 | {Template OS Linux:system.cpu.util[,system].last(#3)}>=90 |
正常イベントの生成 | 復旧条件式 |
復旧条件式 | {Template OS Linux:system.cpu.util[,system].last(#3)}<80 |
障害イベント生成モード | 単一 |
CPU使用率(iowait)
「CPU使用率 (user) 高騰」トリガーと同様の手順で、以下パラメータのトリガーを作成します。
項目名 | 設定値 |
---|---|
名前 | CPU使用率 (iowait) 高騰 |
深刻度 | 警告 |
障害の条件式 | {Template OS Linux:system.cpu.util[,iowait].last(#3)}>=90 |
正常イベントの生成 | 復旧条件式 |
復旧条件式 | {Template OS Linux:system.cpu.util[,iowait].last(#3)}<80 |
障害イベント生成モード | 単一 |
CPU使用率(steal)
「CPU使用率 (user) 高騰」トリガーと同様の手順で、以下パラメータのトリガーを作成します。
項目名 | 設定値 |
---|---|
名前 | CPU使用率 (steal) 高騰 |
深刻度 | 警告 |
障害の条件式 | {Template OS Linux:system.cpu.util[,steal].last(#3)}>=90 |
正常イベントの生成 | 復旧条件式 |
復旧条件式 | {Template OS Linux:system.cpu.util[,steal].last(#3)}<80 |
障害イベント生成モード | 単一 |
CPU使用率(total)
「CPU使用率 (user) 高騰」トリガーと同様の手順で、以下パラメータのトリガーを作成します。
項目名 | 設定値 |
---|---|
名前 | CPU使用率 (total) 高騰 |
深刻度 | 警告 |
障害の条件式 | {Template OS Linux:system.cpu.util[total].last(#3)}>=90 |
正常イベントの生成 | 復旧条件式 |
復旧条件式 | {Template OS Linux:system.cpu.util[total].last(#3)}<80 |
障害イベント生成モード | 単一 |
なお、「CPU使用率 (idle)」アイテムは「CPU使用率 (total)」アイテムを計算するために作成したアイテムなので、対応するトリガーは設定しません。
グラフ
CPU使用率
収集したアイテムを可視化するためのグラフを設定します。
ZabbixのWebUIから、[設定]→[テンプレート]→の順に選択します。
[フィルター]の[名前]に「Template OS Linux」を入力し、[適用]を押下します。
検索結果から、「Template OS Linux」の行を探し、[グラフ]を押下します。
[グラフの作成]を押下します。
以下のパラメータを入力します。指定の無いパラメータは、デフォルトのままで構いません。
パラメータを入力後、[アイテム]欄の[追加]を押下します。画面下部の[追加]ボタンではないので注意してください。
項目名 | 設定値 |
---|---|
名前 | CPU使用率 |
以下のアイテムのチェックボックスを選択して[選択]を押下します。
アイテム名 | 関数 |
---|---|
CPU使用率 (user) | 最大 |
CPU使用率 (system) | 最大 |
CPU使用率 (iowait) | 最大 |
CPU使用率 (steal) | 最大 |
CPU使用率 (total) | 最大 |
[アイテム]欄にアイテムが追加された後、[関数]列を「最大」に変更します。
ここまで終わったら、画面下部の[追加]を押下します。
「グラフを追加しました」が表示されれば、グラフの作成は完了です。
ホストへのテンプレートのリンク
作成したテンプレートを、監視対象サーバのホストに適用します。
ZabbixのWebUIから、[設定]→[ホスト]の順に選択します。
[フィルター]の[名前]に、監視対象サーバのホスト名を入力し、[適用]を押下します。今回は、「zbx01」という名前のホストを指定しています。
検索結果から、監視対象サーバの行を探し、ホスト名を押下します。
[テンプレート]タブを押下します。
[新規テンプレートをリンク]欄に「Template OS Linux」を入力します。テンプレートの候補が表示されるので、同名の候補を選択します。
画面下部の[追加]を押下します。
「ホストを更新しました」が表示されれば、ホストへのテンプレートのリンクは完了です。
動作確認
アイテム
監視対象サーバからアイテム値が正常に取得できているか確認します。
ZabbixのWebUIから、[監視データ]→[最新データ]の順に選択します。
[フィルター]の[ホスト]に、監視対象サーバのホスト名を入力します。ホストの候補が表示されるので、同名の候補を選択します。今回は、「zbx01」という名前のホストを指定しています。
[フィルター]の[アプリケーション]に「CPU」を入力します。
[適用]を押下します。
監視対象サーバのCPU使用率に関するアイテムが表示されるので、[最新の値]列に値が表示されていることを確認します。
トリガー
全ての種類のCPU使用率を高騰させるのは難しいので、user
とtotal
に関するトリガーの動作を確認します。
トリガーを発動させるため、監視対象サーバにSSHログインします。yes
コマンドをバックグラウンドで動かしCPUの使用率を上昇させます。
複数のコアを搭載しているCPUの場合、事前に/proc/cpuinfo
の情報からコア数を調べ、その数だけyes
コマンドをバックグラウンドで実行します。
$ cat /proc/cpuinfo | grep 'processor'
processor : 0
processor : 1
$ yes > /dev/null &
$ yes > /dev/null &
今回設定したトリガーの検知条件は、「1分間隔で取得しているCPU使用率が3回連続で90%を超過」なので、3分ほどCPU高騰状態を継続させます。3分間経過したら、kill
コマンドでバックグラウンドジョブを終了します。ここでも、コア数分だけkill
コマンドを実行します。
$ kill %1
$ kill %2
今回設定したトリガーの回復条件は、「1分間隔で取得しているCPU使用率が3回連続で80%未満」なので、kill
コマンド実行後、3分ほど待機します。
ZabbixのWebUIから、[監視データ]→[障害]の順に選択します。
[フィルター]の[表示]に、「ヒストリ」を指定し、[適用]を押下します。
[時間]列に検知時間、[復旧時間]に回復時間、[障害]に検知対象のトリガー名が表示されていることを確認します。
グラフ
アイテム値が正常にグラフに描画できているか確認します。
ZabbixのWebUIから、[監視データ]→[グラフ]の順に選択します。
[ホスト]に監視対象サーバのホスト名を指定します。
[グラフ]に「CPU使用率」を指定します。
グラフが表示されていることを確認します。