【Zabbix】Linuxサーバ CPU使用率の監視設定

LinuxサーバのCPU使用率の監視設定を検証してみました。

概要

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使用率を高騰させるのは難しいので、usertotalに関するトリガーの動作を確認します。

トリガーを発動させるため、監視対象サーバに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使用率」を指定します。

グラフが表示されていることを確認します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です