CPU/ログリソース監視について

初めまして。
今ZABBIX導入を検討中で、色々検証しています。
CPU/ログ監視について諸先輩方の知恵をお貸し頂けたらと思います。
環境ですが
Mgr : Fedoracore6
agt : solaris10/Mac OS X

solarisとMACのCPU使用率が5%を越えた際にアラートを表示する
ようにしたいのですが、トリガーの構文が分かりません。
色々試してはみたのですが…
またログファイル監視の方式が分かりません。
例えば1回目の監視で最終行まで読み込んで[error]の文字列を検知したとします。2回目の監視では、1回目の最終行からの追加分を読み込んでいるのでしょうか?それとも最初〜最終行まで読み込んでいるのでしょうか。
よろしくお願い致します。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー kodai の写真

こんにちは。

まず、トリガーについてですが、デフォルトのテンプレートに含まれている設定を参考にされるのが一番良いと思います。それでも動作しない場合、どのような設定をされたのかを教えて頂けるでしょうか。

次に、ログファイルの監視について、まだ正確には確認できていないのですが、前回からの差分を取得するようになっていたと思います。

ユーザー s15_kato の写真

kodai様>
こんにちわ。
トリガーの条件式は下記になります。
[windows]
#Trigger
{zabbix-win2003:system.cpu.util[].last(0)}>90

※cpu使用率が90%超えでエラーを検知する

[mac(unix系)]
Mac(UNIX系)はデフォルトが無いため、Windows条件式を流用してみたのですが、Macはnot supportedとなり、solarisはグラフを見る限りidleを見ているようで、正式な値が取れていないように見受けられます。

次にログファイルですが…
[windows]
#Trigger
{zabbix-win2003:log[c:\test\test.log].str(cpu_error)}=1

echo文で対象文字列を打ち込むと1回目は検知するのですが、その後該当文字列を打ち込んでも検知しなくなってしまいます。
また1回目のエラー検知後すぐ復旧を検知します。

よろしくお願い致します。

ユーザー kodai の写真

> [windows]
> #Trigger
> {zabbix-win2003:system.cpu.util[].last(0)}>90

トリガーの条件式の書式は問題ないようです。このsystem.cpu.util[]は値自体は取得できているでしょうか。おそらく負荷をかけてトリガーがTRUEになるかどうか試されたのだと思いますが、そのときに取得できた値はどのようになっているでしょうか。

また、system.cpu.utilの書式は以下のようになっています。

system.cpu.util[<cpu>,<type>,<mode>]

[]内を省略した場合は、すべてのCPU/user値/1分平均、を取得するようになっています。また、マニュアルではこのアイテムのMACへの対応は?マークになっており、こちらでも検証できる環境がないため、対応しているかどうかが分かりません。アイテムの設定でnot supportedになるようですと、対応していない可能性があります。

英語になりますが、アイテムの書式や対応などはZABBIXのマニュアルを参照してください。
アイテムの書式: http://www.zabbix.com/manual/v1.1/config_items_agent.php
プラットフォーム対応状況: http://www.zabbix.com/manual/v1.1/config_items_supported.php

ログ監視の件ですが、アイテムの設定を教えて頂けるでしょうか。こちらでも同様の条件で試してみます。

ユーザー s15_kato の写真

kodai様>
お世話になっております。

>トリガーの条件式の書式は問題ないようです。
>このsystem.cpu.util[]は値自体は取得できているでしょうか。
>おそらく負荷をかけてトリガーがTRUEになるかどうか
>試されたのだと思いますが、そのときに取得できた値は
>どのようになっているでしょうか。
windowsは95%負荷を掛け、監視側で値は正しく取れましたが、グラフの表記がMAX25%(4分の1)で表示される現象が起きています。
が、windowsマシンはデュアルプロセッサの為に起きてる現象か調査しております。
solarisは5%負荷を掛けたのですが、監視側で取得した値が95であり、ideleを見ているようにも見受けられたのですが、調べた結果違うようでした。
macについては了解です。

windowsログ監視のトリガー&アイテム設定は下記になります。
■トリガー
key : {zabbix-win2003:log[c:\test\test.log].str(cpu_error)}=1
■アイテム
type : ZABBIX Agent (Active)
key :log[c:\test\test.log]
データ形式 : ログ

よろしくお願い致します。

ユーザー kodai の写真

こちらでも調査してみました。

* Windowsのsystem.cpu.util
---------------------------
以下のように設定を変更しながら、値が取得できるかどうか試してみました。(VirtualPC上のWin2003、1CPU)

system.cpu.util[] : ○
system.cpu.util[,system,] : ○
system.cpu.util[0,system,] : ○
system.cpu.util[0,system,avg1] : ○
system.cpu.util[1,system,avg1] : ×(ゼロが取得される)
system.cpu.util[0,user,avg1] : ×
system.cpu.util[0,idle,avg1] : ×
system.cpu.util[0,nice,avg1] : ×

結果として、Windowsではsystemを設定した場合か、何も明記しない場合のみ値が取得できるようで、こちらの環境では取得値、グラフともに正常に表示されています。

1つ気になるのは、system.cpu.util[]と"[]"の中を省略された場合、デフォルトでは全てのCPUが指定されてしまうことです。2CPU以上で利用されている場合、0、1などを指定して正常な値が取得できているか試されてみてはどうでしょうか。

参考までに、データが正常に取得できた時のアイテム設定を書いておきます。

- Type: ZABBIX agent
- Key: system.cpu.util[]
- Type of information: Numeric(float)
- Units: %
- Use multiplier: Do not use

* ログの監視について
---------------------------
トリガーのstr関数は「取得した最後のデータ」を評価します。

ログが複数行あった場合、ZABBIXは各行を順に読み込んでいくため、取得したログの途中の行は一瞬だけ評価され、最後の行は次回にログを取得するまで評価され続けることになります。(ここでいう「取得した最後のデータ」とは、ZABBIXのWebフロントエンドに表示される「LatestData」のことなので、そちらを見て頂くとわかりやすいと思います。)

ログが複数行あり、その途中にstr関数で評価したい行が1行だけあった場合、トリガーはTRUEになった直後に、次の行が読み込まれてFALSEになるため、TRUEの状態になっているのは一瞬だけです。

[Monitoring]=>[Trigger]を見ていると検知しなかったように見えるのですが、[Monitoring]=>[Event]でトリガーの変化の履歴を見ると一瞬だけTRUEになっていたことが分かります。

ご質問では該当ログファイルにどの程度の頻度でログが記録されているかが分からなかったのですが、「1回目のエラー検知後すぐ復旧を検知する」というのは上記のことが原因ではないでしょうか。

ユーザー shige の写真

logに関する質問で新しいスレッド立てるのもどうかと思われたので、
失礼します。

logについてですが、
Type: zabbix agent(active)
Key : log[/var/log/test.log]
Type of information: LOG
Trigger :{localhost:log[/var/log/test.log].str(@もしくは*)}=1
と設定しましたが、
Expression {localhost:log[/var/log/test.log].str(@もしくは*)}=1
does not match to [server.key.func(param)]となり設定できません。

str関数では*や@マークなどの記号では、ひっかけることができないのでしょうか?

記号の文字列などの検知するための構文などあるのでしょうか?

ご存知でしたらご教示ください

よろしくお願いいたします。

ユーザー kodai の写真

条件式str()の"()"に記述できるのは以下の文字です。

- #
- 0-9
- a-z
- A-Z
- _
- /
- .
- ,
- 空白

これ以外の文字を指定した場合、ご質問のとおり、WebフロントエンドのValidationでエラーになります。

ユーザー shige の写真

kodai様
いつもお世話になっております
log監視についてなのですが以下のように設定しました。

Type: zabbix agent(active)
Key : log[/var/log/test.log]
Type of information: LOG
Trigger :{localhost:log[/var/log/test.log].str(test)}=1

上記のような設定を6つのサーバに組み込みんで監視したところ、
監視できているものと監視できていないものがあります。

QueueのZABBIX agnent(active)項をみるとQueueが貯まってしまっていて、更新されていない状況です。

mgrとagentのlogをみても特に出力されていないので、何が原因かわからない状況です。

ほかのprocess監視やfilesystem監視などは正常に更新されています。

原因はなにが考えられるでしょうか?

質問ばかりで恐縮ですがご教示ください

ユーザー kodai の写真

こんにちは。

状況が少し複雑なようですので、いくつかご質問させて頂きたいのですが、

1. 6台すべてのサーバーのOSやZABBIXのバージョンなどの環境は同じだと考えてよろしいでしょうか。

2. Queueの項目が溜まっている、というのは具体的にどのような状況でしょうか。

3. 監視できていないサーバーの設定を単独で動作させても(他の5つのサーバーのログ監視を停止しても)、監視できないことに変わりはないでしょうか。

また、監視ができていないサーバーのZABBIXエージェントと、ZABBIXサーバーのログレベル(DebugLevel)を4(debugging)に設定した状態で同様の監視を行い、ログに参考となる情報が出力されていないか試してみていただけないでしょうか。

ユーザー shige の写真

>kodai様 お世話になっております。

質問にお答えします。

>1. 6台すべてのサーバーのOSやZABBIXのバージョンなどの環境は同じだと考えてよろしいでしょうか。

はい。同じです環境です。
6台ともRHEL ES3 update8で
ZABBIXはzabbix1.1.6を使用しています。

>2. Queueの項目が溜まっている、というのは具体的にどのような状況でしょうか。

QueueのZABBIX agent(active)の5分以上のところに数字がでていて、Detailsを参照するとDescriptionの項に取得できていない、トリガーの名前があります。

>3. 監視できていないサーバーの設定を単独で動作させても(他の5つのサーバーのログ監視を停止しても)、監視できないことに変わりはないでしょうか。

はい、変わりないです。

>また、監視ができていないサーバーのZABBIXエージェントと、ZABBIXサーバーのログレベル(DebugLevel)を4(debugging)に設定した状態で同様の監視を行い、ログに参考となる情報が出力されていないか試してみていただけないでしょうか。

(DebugLevel)を4にしても参考になるような情報はありませんしたが、ZABBIXを一日以上起動していたところ以下のLOGをzabbixサーバのlogには吐きdownしました。

023425:20070314:001355 Query::select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i
.snmp_oid,h.useip,h.ip,i.history,i.lastvalue,i.prevvalue,i.hostid,h.status,i.value_type,h.errors_from,i.snmp_port,i.delta,i.pr
evorgvalue,i.lastclock,i.units,i.multiplier,i.snmpv3_securityname,i.snmpv3_securitylevel,i.snmpv3_authpassphrase,i.snmpv3_priv
passphrase,i.formula,h.available,i.status,i.trapper_hosts,i.logtimefmt,i.valuemapid from hosts h, items i where h.status=0 and
h.hostid=i.hostid and h.host='batch01-log' and i.key_='log[/var/log/wtmp.1]' and i.status=0 and i.type in (2,7)
023425:20070314:001355 Query failed:Lost connection to MySQL server during query [2013]
023408:20070314:001355 One server process died. Shutting down...
023426:20070314:001355 Query::select 0,lastvalue from functions where functionid=14617
023408:20070314:001355 ZABBIX server is down.

わかりにくい説明で申し訳ありませんがよろしくお願いいたします。

ユーザー kodai の写真

>3. 監視できていないサーバーの設定を単独で動作させても(他の5つのサーバーのログ監視を停止しても)、監視できないことに変わりはないでしょうか。

はい、変わりないです。

ということは、監視台数に関係なく、同じ条件にも関わらずログ監視が取得できるサーバーとできないサーバーがあるということになりますね。少し時間はかかると思いますが、こちらでも試してみます。

(DebugLevel)を4にしても参考になるような情報はありませんしたが、ZABBIXを一日以上起動していたところ以下のLOGをzabbixサーバのlogには吐きdownしました。

MySQLへのクエリが正常に行えていないようですね。失敗しているのはselect文なので、ログ監視の取得も問題とは関係がないように思えるのですが...。MySQLサーバーを停止/再起動させた、ということはないでしょうか。

ユーザー shige の写真

返信が遅くなり大変申し訳ございません。

MySQLサーバーを停止/再起動させた、ということはないでしょうか。

MySQLサーバーを停止/再起動はしていません。

ユーザー s15_kato の写真

kodai様>
お世話になっております。
御様環境での検証ありがとうございます。

>データが正常に取得できた時のアイテム設定を書いておきます。
参考にさせて頂きます。

ZABBIX ver 1.1.6にしてみたのですが、光明が見えそうです。
よろしくお願い致します。