本連載では「まるごとおまかせZabbix」をより便利で有用なサービスとするために日々奮闘中の齊藤(沙)がアークシステム ザビ家の一員として、Zabbix に関する日々の取り組みやナレッジをご紹介していきます!

本サービスの詳細や、Zabbixを活用したソリューションにご興味をお持ちの方がいらっしゃいましたら サービス紹介ページ からお気軽にお問合わせ下さい。


こんにちは!プラットフォーム技術部の齊藤(沙)です。

前回はZabbixが監視設定や履歴データを保管するデータベースの中でも監視項目であるアイテムに関連するテーブルについて確認しました。今回は監視閾値であるトリガーに関連するテーブルについて確認していきます。

Zabbixを知ろう -Zabbixのデータベースについて – トリガー編

私たちアークシステムでは、パフォーマンスの観点からZabbixにおけるデータベースはMariaDB(Mysql)の使用を推奨しています。本記事では、Zabbix3.0、mariadb5.5の環境を用いて確認していきます。

トリガーに関する情報について

主要テーブル一覧

監視データを評価する設定(条件式)であるトリガーに関する情報は主に以下のテーブルに格納されています。

triggersテーブル詳細

まずはトリガーに関する主要な情報が格納されている「triggers」テーブルについて詳しく確認していきます。
以下は「desc triggers;」コマンドの出力結果です。

トリガーはアイテムに紐付く設定ですが、トリガーテーブル内にはitemid等、アイテムと紐付けられそうな情報が見当たりません。

functionsテーブル詳細

トリガー条件式に関する主要な情報が格納されている「functions」テーブルについて詳しく確認していきます。
以下は「desc functions;」コマンドの出力結果です。

itemidが見つかりました。前回の記事で使ったSQLに加えてfunctionsテーブルのitemidを利用して、ホストに紐付くアイテムとトリガーを取得して見たいと思います。

トリガーの取得

SQL文 (‘hosts’ – ‘items’ – ‘hosts(テンプレート)’ – ‘functions’ – ‘triggers’)

以下は実行するSQL文です。

実行結果(‘hosts’ – ‘items’ – ‘hosts(テンプレート)’ – ‘functions’ – ‘triggers’)

以下が実行結果です。

ホストに紐付くテンプレート、テンプレートに内包されているアイテムとトリガーを取得することができました。

やったー!と思いきや内容を良く見るとトリガー条件式(expression)の値が一部数字に置き換わっています。

なんの数字なのか調べてみると「functions」テーブルの「functionid」であることが分かりました。
「functions」テーブル内の「function」、「parameter」に加え、「itemid」も所持しているので、再び「functions」テーブルと、「Items」テーブルを結合すればちゃんとしたトリガー条件式が取得できそうです。

しかしながら「expression」のカラムに全て情報が内包されてしまっているのでjoinでは結合できそうにありません。
どうしよう。。。

トリガー取得 (リトライ)

実行結果(‘hosts’ – ‘items’ – ‘hosts(テンプレート)’ – ‘functions’ – ‘triggers’ – ‘functions’ – ‘items’)

SQLに詳しい先輩の力を拝借して「replace」句を駆使して「functionid」を「itemid」へ「itemid」を「アイテムキー」へと置換を繰り返して無理やりトリガー条件式を出力してみました。
※SQLが非常に煩雑で長くなってしまったのでここではSQL文の記載を割愛させて頂きます。

以下が実行結果です。

 なんとか設定どおりのトリガーキーを取得することができました!

まとめ

今回はトリガーに関する情報が格納されているテーブルと、そのリレーションについて確認しました。
アイテムに比べて、情報の持ち方が特殊で取得できるまでかなり苦労しました(汗)

トリガーの情報をSQLで取得するためには、

・「functions」、「triggers」、「items」テーブルの情報を参照する必要がある
・トリガーキーは単純なテーブルの結合では設定どおりの値を取得できない

という点に留意することが大切だと感じました!

ZabbixDBの情報をSQLを用いて出力して利用する場合はトリガーキーの出力のさせ方に工夫が必要ですね!


アークシステムでは、Zabbixの環境構築や保守サポートを低価格・短納期で実現する「まるごとおまかせZabbix」を提供しています。 本サービスの詳細や、Zabbixを活用したソリューションにご興味をお持ちの方がいらっしゃいましたら サービス紹介ページ からお気軽にお問合わせ下さい。


わたしに♥おまかせ Zabbix 連載一覧


 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter で「株式会社アークシステム」をフォローしよう!

【わたしに♥おまかせ Zabbix⑥】Zabbixのデータベースについて – トリガー編https://devlog.arksystems.co.jp/wp-content/uploads/2018/04/moz-09_ec-1200x630.pnghttps://devlog.arksystems.co.jp/wp-content/uploads/2018/04/moz-09_ec-150x150.pngsachi-saitoまるごとおまかせZabbixプラットフォーム技術部製品紹介システム運用・保守保守,Zabbix,システム監視本連載では「まるごとおまかせZabbix」をより便利で有用なサービスとするために日々奮闘中の齊藤(沙)がアークシステム ザビ家の一員として、Zabbix に関する日々の取り組みやナレッジをご紹介していきます!【わたしに♥おまかせ Zabbix①】Zabbixの構成要素とパラメーターについて 【わたしに♥おまかせ Zabbix②】Zabbixサーバーと内部プロセスについて 【わたしに♥おまかせ Zabbix 号外】Interop Tokyo 2017 Zabbixブースに出展! 【わたしに♥おまかせ Zabbix③】Zabbixの内部プロセスについて-続き 【わたしに♥おまかせ Zabbix④】Zabbixのデータベースについて 【わたしに♥おまかせ Zabbix⑤】Zabbixのデータベースについて – アイテム編 【わたしに♥おまかせ Zabbix⑥】Zabbixのデータベースについて – トリガー編(本記事) 【わたしに♥おまかせ Zabbix 号外】Interop Tokyo 2018 Zabbixブースに連続出展!本サービスの詳細や、Zabbixを活用したソリューションにご興味をお持ちの方がいらっしゃいましたら サービス紹介ページ からお気軽にお問合わせ下さい。こんにちは!プラットフォーム技術部の齊藤(沙)です。 前回はZabbixが監視設定や履歴データを保管するデータベースの中でも監視項目であるアイテムに関連するテーブルについて確認しました。今回は監視閾値であるトリガーに関連するテーブルについて確認していきます。 Zabbixを知ろう -Zabbixのデータベースについて – トリガー編 私たちアークシステムでは、パフォーマンスの観点からZabbixにおけるデータベースはMariaDB(Mysql)の使用を推奨しています。本記事では、Zabbix3.0、mariadb5.5の環境を用いて確認していきます。 トリガーに関する情報について 主要テーブル一覧 監視データを評価する設定(条件式)であるトリガーに関する情報は主に以下のテーブルに格納されています。triggersテーブル詳細 まずはトリガーに関する主要な情報が格納されている「triggers」テーブルについて詳しく確認していきます。 以下は「desc triggers;」コマンドの出力結果です。トリガーはアイテムに紐付く設定ですが、トリガーテーブル内にはitemid等、アイテムと紐付けられそうな情報が見当たりません。 functionsテーブル詳細 トリガー条件式に関する主要な情報が格納されている「functions」テーブルについて詳しく確認していきます。 以下は「desc functions;」コマンドの出力結果です。itemidが見つかりました。前回の記事で使ったSQLに加えてfunctionsテーブルのitemidを利用して、ホストに紐付くアイテムとトリガーを取得して見たいと思います。 トリガーの取得 SQL文 (‘hosts’ – ‘items’ – ‘hosts(テンプレート)' - 'functions' - 'triggers') 以下は実行するSQL文です。実行結果(‘hosts’ – ‘items’ – ‘hosts(テンプレート)' - 'functions' - 'triggers') 以下が実行結果です。ホストに紐付くテンプレート、テンプレートに内包されているアイテムとトリガーを取得することができました。 やったー!と思いきや内容を良く見るとトリガー条件式(expression)の値が一部数字に置き換わっています。 なんの数字なのか調べてみると「functions」テーブルの「functionid」であることが分かりました。 「functions」テーブル内の「function」、「parameter」に加え、「itemid」も所持しているので、再び「functions」テーブルと、「Items」テーブルを結合すればちゃんとしたトリガー条件式が取得できそうです。 しかしながら「expression」のカラムに全て情報が内包されてしまっているのでjoinでは結合できそうにありません。 どうしよう。。。 トリガー取得...ARK Solution Development Division Developers Blog.