いつもお世話になっております。
表題の件、初歩的な質問で申し訳ございません。 現在、監視システムを他システムからzabbix 2.4.8へ移行しております。
必要なトリガーはほぼ移行し、トリガーの移行漏れが等がないかのチェックの段階になり、チェック方法につきまして、 Web画面からホストを検索し、設定したトリガーを事前に準備してあるリストと 突き合わせる、もしくは全てのホストをxmlにエクスポートして成型する以外に 何らかの方法はございますでしょうか。
ご教示の程よろしくお願い致します。
ZabbixのAPIを使用して、トリガーの一覧を取得することができま す。 ただし、突合せしやすいフォーマットにして出力するためには、 何らかのスクリプトを作成することが必要になると思います。
例えば、ホスト「Zabbix server」に設定されているトリガーの一 覧を取得するときには、以下のような引数でAPIを呼び出して取得 することができます。
{ "jsonrpc": "2.0", "method": "trigger.get", "params": { "host": "Zabbix server", "output": "extend", "expandExpression": "true" }, "auth": "f851f69c054fbcd57dcbe596886b48dc", "id": 1 }
※Zabbix 3.0.7の環境で確認
あと気になったのは、使用されているバージョンが2.4.8というこ とです。 すでにサポートが終了していて不具合や脆弱性の問題が残ったまま となっている可能性がありますので、早急にバージョンアップを検 討されることをお勧めします。
TNK様
お世話になっております。 返信遅くなり申し訳ございません。
API上から一覧を取得できる旨承知しました。
ちなみにSQLのテーブルからトリガー名および条件式を抽出することは 可能でしょうか。
よろしくお願い致します。
>ちなみにSQLのテーブルからトリガー名および条件式を抽出することは >可能でしょうか。
可能といえば可能でしょうが、トリガー名や条件式内のマクロは展開されていないし、条件式の関数の部分はIDになっているので、該当する物を探して置換するという作業が必要で、さらに、関数に使われているアイテムもIDから引っ張ってくる必要があり、かなり大変(というか、面倒)だと思いますよ。 API の "expandExpression": "true" に頼った方が楽です。
DB的には、トリガーのメインデータはtriggers テーブルに保存されています
トリガーで設定されている各条件式は expression カラムにあるのですが "{20197}#1|{20198}<1|{20199}=0|{20200}#0 " "{20056}=0" のような文字列記載となっています
条件式内の {} で括られた数値が functions テーブルの functionid となっていて functions テーブル側に、 ・式で書かれている item の itemid ・last / diff / nodata 等の関数 のような情報が記録されています
このような構造のため、単純なSQLだけではトリガー条件式を GUI等から設定している条件式の表現にすることは難しく、 単純なSQLだけでなく、結果文字列をパースしたうえで別SQLを実行して、 欲しい条件式表現を生成‥といったようなプログラムの介在が不可欠です
正直なところ、直接SQLではなく、API経由のほうが、データの取り回しは ラクになるかと思います‥
heya様 fripper様
お世話になっております。 ご連絡遅くなり申し訳ございません。
DBの担当に確認したところ、やはり ご指摘通りデータの取り回しが複雑なのでSQLから抽出するのは 得策ではないとの結論となりました。
API経由で実施しようと思います。
有難うございました。
アカウント名 T-A
Zabbix関連
TNK - 投稿数: 4753
ZabbixのAPIを使用して、トリガーの一覧を取得することができま
す。
ただし、突合せしやすいフォーマットにして出力するためには、
何らかのスクリプトを作成することが必要になると思います。
例えば、ホスト「Zabbix server」に設定されているトリガーの一
覧を取得するときには、以下のような引数でAPIを呼び出して取得
することができます。
{
"jsonrpc": "2.0",
"method": "trigger.get",
"params":
{
"host": "Zabbix server",
"output": "extend",
"expandExpression": "true"
},
"auth": "f851f69c054fbcd57dcbe596886b48dc",
"id": 1
}
※Zabbix 3.0.7の環境で確認
あと気になったのは、使用されているバージョンが2.4.8というこ
とです。
すでにサポートが終了していて不具合や脆弱性の問題が残ったまま
となっている可能性がありますので、早急にバージョンアップを検
討されることをお勧めします。
T-A - 投稿数: 35
TNK様
お世話になっております。
返信遅くなり申し訳ございません。
API上から一覧を取得できる旨承知しました。
ちなみにSQLのテーブルからトリガー名および条件式を抽出することは
可能でしょうか。
よろしくお願い致します。
heya - 投稿数: 319
>ちなみにSQLのテーブルからトリガー名および条件式を抽出することは
>可能でしょうか。
可能といえば可能でしょうが、トリガー名や条件式内のマクロは展開されていないし、条件式の関数の部分はIDになっているので、該当する物を探して置換するという作業が必要で、さらに、関数に使われているアイテムもIDから引っ張ってくる必要があり、かなり大変(というか、面倒)だと思いますよ。
API の "expandExpression": "true" に頼った方が楽です。
fripper - 投稿数: 495
DB的には、トリガーのメインデータはtriggers テーブルに保存されています
トリガーで設定されている各条件式は expression カラムにあるのですが
"{20197}#1|{20198}<1|{20199}=0|{20200}#0 "
"{20056}=0"
のような文字列記載となっています
条件式内の {} で括られた数値が functions テーブルの functionid となっていて
functions テーブル側に、
・式で書かれている item の itemid
・last / diff / nodata 等の関数
のような情報が記録されています
このような構造のため、単純なSQLだけではトリガー条件式を
GUI等から設定している条件式の表現にすることは難しく、
単純なSQLだけでなく、結果文字列をパースしたうえで別SQLを実行して、
欲しい条件式表現を生成‥といったようなプログラムの介在が不可欠です
正直なところ、直接SQLではなく、API経由のほうが、データの取り回しは
ラクになるかと思います‥
T-A - 投稿数: 35
heya様 fripper様
お世話になっております。
ご連絡遅くなり申し訳ございません。
DBの担当に確認したところ、やはり
ご指摘通りデータの取り回しが複雑なのでSQLから抽出するのは
得策ではないとの結論となりました。
API経由で実施しようと思います。
有難うございました。