CPUの負荷を把握するために、CPU使用率を監視するテンプレートを作成します。CPU負荷が高い主な原因はプログラムの暴走です、この場合は psコマンドや topコマンドでCPUに負荷をかけているプログラムを特定して対処します。また、ディスクI/Oやメモリ不足など他の部分がボトルネックでは無く、CPU負荷のみが高い場合は理想的な状態と言われています。この場合は単純にCPUの性能を上げるか、サーバ台数を増やして負荷分散する対応が考えられます。
CPU使用率は sar コマンドなどで確認することができます。
$ sar Linux 2.6.32-504.el6.x86_64 (lamp) 2014年12月19日 _x86_64_ (2 CPU) 06時00分01秒 CPU %user %nice %system %iowait %steal %idle 06時10分01秒 all 1.54 0.00 0.62 4.74 0.00 93.10 06時20分01秒 all 53.94 0.20 1.09 2.16 0.00 42.62 06時30分01秒 all 19.90 0.00 0.73 3.60 0.00 75.76 06時40分01秒 all 1.46 0.00 0.61 4.67 0.00 93.25
各列の指標
user ユーザモードでCPUが消費された時間の割合 nice niceでスケジューリングの優先度を変更していたプロセスが、ユーザモードでCPUを消費した時間の割合 system システムモードでCPUが消費された時間の割合 iowait CPUがディスクI/O待ちのためにアイドル状態で消費した時間の割合 steal XenなどのOSの仮想化を利用している場合に、ほかの仮装CPUの計算で待たされた時間の割合 idle CPUがディスクI/Oなどで待たされることなく、アイドル状態で消費した時間の割合
※「[Web開発者のための]大規模サービス技術入門」より引用
今回はこの指標の中から user、system、idle の CPU使用率を監視する設定を行います。iowait(CPUのディスクI/O待ち)も重要な指標ですので、次の記事「3-4. CPUのディスクI/O待ち 監視テンプレート設定」で設定します。
もし「A_Template_OS_Linux」テンプレートと「cpu」アプリケーションを作成していない場合は、こちらを参考にして作成しておきましょう。
アイテムの作成
[設定]→[テンプレート] 「A_Template_OS_Linux」行の「アイテム」をクリックします。
下記を設定し「追加」をクリックすればアイテムが作成されます。
---(設定箇所)---------------------------
名前:1010_CPU使用率(user)
タイプ:Zabbixエージェント
キー:system.cpu.util[,user,avg1]
データ型:数値(浮動小数)
単位:%
アプリケーション:cpu
------------------------------
同様に system、idle のCPU使用率監視アイテムを作成します。
---(設定箇所)---------------------------
名前:1011_CPU使用率(system)
タイプ:Zabbixエージェント
キー:system.cpu.util[,system,avg1]
データ型:数値(浮動小数)
単位:%
アプリケーション:cpu
------------------------------
---(設定箇所)---------------------------
名前:1012_CPU使用率(idle)
タイプ:Zabbixエージェント
キー:system.cpu.util[,idle,avg1]
データ型:数値(浮動小数)
単位:%
アプリケーション:cpu
------------------------------
アイテムキー system.cpu.util のパラメータ
system.cpu.util[<cpu>,<type>,<mode>]
cpu - CPU番号(デフォルトは全CPU)
type - 可能な値:
idle, nice, user(デフォルト)、system (Windowsでのデフォルト)、 iowait, interrupt, softirq, stealmode - 可能な値:
avg1 (1分間の平均、デフォルト)、avg5 (5分間の平均)、avg15 (15分以内の平均)
詳細は公式マニュアル 1 Zabbixエージェント | Zabbix Documentaion 2.2 を参照してください。
トリガーの作成
[設定]→[テンプレート] 「A_Template_OS_Linux」行の「トリガー」をクリックします。
下記を設定し「追加」をクリックすればトリガーが作成されます。
---(設定箇所)---------------------------
名前:{HOST.NAME} cpu idle
条件式:{A_Template_OS_Linux:system.cpu.util[,idle,avg1].last()}<10
深刻度:警告
------------------------------
トリガーの名前にはマクロが使用できます。上の設定 {HOST.NAME} はホストの表示名がトリガー名に表示されます。
条件式は、{<テンプレート名>:<アイテムキー>.<トリガー関数>}=<値> の形式です。手入力してもかまいませんが、なかなか複雑な書式ですので、条件式の「追加」ボタンをクリックして対象のアイテムを選択し、関数を選択して「挿入」ボタンをクリックすれば条件式を生成してくれます。
今回設定したトリガー条件式は、CPUの未使用率が10%を下回ったらトリガーが発生します。
▽ サポートされているトリガー関数 | Zabbix Documentaion 2.2
https://www.zabbix.com/documentation/2.2/jp/manual/appendix/triggers/functions
グラフの作成
[設定]→[テンプレート] 「A_Template_OS_Linux」行の「グラフ」をクリックします。
「グラフ」タブを選択し、アイテムの「追加」をクリックします。
グラフに表示したいアイテムを選択し「選択」をクリックします。
下記を設定してアイテムが追加されていることを確認し「追加」をクリックすればグラフが作成されます。
---(設定箇所)---------------------------
名前:cpu
Y軸の最小値:固定 0
Y軸の最大値:固定 100
------------------------------
最後に作成した監視テンプレートの動作確認をして作業完了です。
コメント