システム監視だけではもったいない!Zabbixがあなたにピッタリのお部屋を探します!

Zabbix,Zabbix API,Zabbix Conference

こんにちは。プラットフォーム技術部の渋谷です。

突然ですが、皆様はZabbixをご存じですか?

Zabbixは無料でダウンロード、利用できるオープンソース・ソフトウエアとして開発されているITインフラストラクチャー・コンポーネントの可用性やパフォーマンスを監視するためのエンタープライス向けソフトウエアです。

エンタープライズ向けの監視ソフトウエアとして、高い機能性と柔軟なカスタマイズを可能とする拡張性、すべての機能を無料で利用できるコストパフォーマンスによって日本国内No1のシェアを誇っています。

大規模、小規模、規模を問わずさまざまな監視要件にフィットするため、当社でも運用監視ツールの導入を提案する際には真っ先に選定候補にあがる非常に優れたソフトウエアです。

私自身もZabbixと出会って7年、お仕事としてさまざまなお客様に導入させていただいたり、個人利用として自宅のサーバー監視を担ってもらっていたりと公私に渡ってZabbixに助けてもらっています。そんなZabbix愛好者の私ですが、Zabbixを使えば使うほどさまざまな可能性を感じており、「システム監視だけに利用するのはもったいない!」と感じています。

もっと身近なところでZabbixを活用できるシーンが数多くあるのではないか。
Zabbixを活用することで、皆様のQoLがもっともっと向上するのではないか。

本記事では、そんな思いでZabbixのちょっと違った活用方法を紹介いたします!

また今回の記事では、Zabbixへのホストやアイテムの登録をZabbix APIを用いた外部スクリプトでおこなっています。処理内容に興味がある方は以下の記事もぜひ参照してみてください。

お部屋探しはZabbixで

昨今はコロナ禍で自宅からリモートワークをしている方も多いと思います。私もその中の一人です。リモートワークは通勤から開放されるなど良い点もありますが、家族の生活音が入らないように気を遣ったり、画面への映り込みを避けるためワークスペースの確保が必要です。

しかし残念ながら我が家にそんなスペースはありません。そうなると考えることは一つ。

「そうだ。引っ越しをしよう。」

でも実際に引っ越しをするとなると、理想のお部屋探しは結構大変ですよね。
面倒だなぁと思ったそこのあなた!大丈夫です。Zabbixが自動で探してくれます。

お部屋探しはZabbixで

ということで、Zabbixで理想のお部屋を探してみました!

Zabbixでお部屋探しをしてみた

Zabbixでどのようにしてお部屋探しをするのか、順を追って説明します。

アウトライン

まずは、Zabbixでどのような情報を集めるのか検討します。

今回はお部屋探しサイトからスクレイピングで情報を取得し、Zabbix APIを用いて取得した情報をZabbixへ取り込みます。取得した情報は、物件一覧をホストとして登録し、物件の詳細情報や条件をアイテムとして取得します。

以下はイメージ図です。

物件と物件情報とホストとアイテムに展開

実装に際して、以下の流れで対応をおこないます。

  1. スクレイピング対象サイトの利用規約の確認
  2. スクレイピング対象サイトの仕様確認
  3. スクレイピングで取得したい情報の精査
  4. 物件一覧をスクレイピングし、Zabbixへホスト登録するスクリプトの作成
  5. 物件一覧を取得するためのZabbixテンプレートの作成
  6. 物件の詳細情報をスクレイピングするスクリプトの作成
  7. 物件の詳細情報を取得するためのZabbixテンプレートの作成
  8. Zabbixで物件一覧を取得するためのホストの作成

サイト利用規約の確認

ウェブ上に公開されているサイトによってはスクレイピングによるデータ取得を禁止されている可能性があります。対象サイトの利用規約を十分の確認した上で、スクレイピングが許可されている対象にのみ実施します。

サイト仕様の確認

スクレイピングを実施する対象のサイトによって、持っている情報も、情報の持ち方もまちまちです。どのようなデータをどのような形式で取得できるのか、物件情報を取得する際のキーデータはどれかなどを調査し、スクレイピング処理の仕様を固めます。

取得する情報の精査

スクレイピングを実施する対象サイトの仕様が理解できたら、取得できる情報の中から自身が理想とするお部屋探しに必要な情報がどれか精査します。今回は主に以下のような情報を取得します。

  • 家賃や敷金、管理費などの価格条件
  • 所在地や向きなどの立地条件
  • 間取り、専有面積、築年数などの物件条件

物件一覧を取得しZabbixへホスト登録するスクリプトの作成

スクレイピングにてお部屋探しサイトから物件の一覧を取得し、Zabbixにホスト登録するためのPythonスクリプトを作成します。処理概要は以下のとおりです。

  1. アイテム(外部チェック)キーのパラメーターとして渡される物件一覧の検索条件を受け取る
  2. Zabbix APIを用いてZabbixにログインし、トークン(セッションID)を取得する(Zabbix API: user.login
  3. 物件検索用のURLを1. で受け取ったパラメーターを結合し、作成する
  4. 物件一覧の検索を実施し、結果としてHTMLを受け取る。受け取ったHTMLをスクレイピングする
    1. 物件詳細ページの一意性を担保できるキーを抽出する(ホスト名にする)
    2. 物件詳細ページをスクレイピングするために物件詳細ページのURLを作成する
  5. 既に登録されている物件詳細の一覧を取得する(Zabbix API: host.get
  6. 最新の物件一覧(4.)と既に登録されている物件一覧(5.)を比較する
    1. 最新の物件として存在しないもの(ホスト)を無効にする(Zabbix API: host.update
    2. 新たに物件として増えたもの(ホスト)を登録する(Zabbix API: host.create
      この場合において、ホストインターフェースはダミーデータを用いる。そしてホストのマクロとして、物件詳細ページのURLをセットする(物件詳細用のテンプレートで使用する)
  7. 標準出力に対してJSON形式で物件総数、新規登録数ならびに無効数を出力することで、Zabbix側でアイテムとして認識する
  8. 一連の動作が終わったら正常、異常に関わらずZabbixからログアウトする(Zabbix API: user.logout

スクレイピングには、BeautifulSoup4を用いています。スクリプトを動かす環境では、以下のモジュールをあらかじめインストールしましょう。

# pip install requests
# pip install beautifulsoup4
# pip install lxml
# pip freeze | grep -e requests -e lxml -e beautifulsoup
beautifulsoup4==4.9.3
lxml==4.6.3
requests==2.20.0

このスクリプトが動作することで、監視間隔毎に物件一覧の内容が最新化されます。新しい物件が登録された場合、候補に入れていた物件が成約してしまった場合でも追従します。

物件一覧を取得するためのZabbixテンプレート作成

物件一覧の取得スクリプトをZabbixから実行させるためのテンプレートを作成します。以下はテンプレート内に作成するアイテムのイメージです。

物件一覧を取得するテンプレート、アイテムの設定

物件詳細を取得するスクリプトの作成

物件の詳細情報を取得するためのPythonスクリプトを作成します。こちらは、物件(ホスト)毎に動作します。処理概要は以下の通りです。

  1. アイテム(外部チェック)キーのパラメーターとして渡される物件詳細ページのURLを受け取る
  2. Zabbix APIを用いてZabbixにログインし、トークン(セッションID)を取得する(Zabbix API: user.login
  3. 物件詳細ページのURLを用いてページにアクセスし、結果としてHTMLを受け取る。受け取ったHTMLをスクレイピングする
    1. 物件詳細ページの一意性を担保するキーを抽出する(ホスト名と合致させる)
    2. 物件名や階層を抽出し、ホストの表示名を作成する
    3. 家賃、部屋の設備ならびに物件の各情報を抽出する
  4. ホスト名を用いてZabbixにおけるホストIDを取得する(Zabbix API: host.get
  5. Zabbix上のホスト情報を更新する(Zabbix API: host.update
    1. ホストIDを用い、更新対象を特定する
    2. 表示名を登録する
    3. Zabbix上における絞り込み条件となるタグに家賃、部屋の設備ならびに物件の各情報を設定する
      この場合においてタグ値は256byteまでとなるので、文字列長に注意する
  6. 標準出力に対してJSON形式で家賃、部屋の設備ならびに物件の各情報を出力することで、Zabbix側でアイテムとして認識する
  7. 一連の動作が終わったら正常、異常に関わらずZabbixからログアウトする(Zabbix API: user.logout

このスクリプトが動作すると、監視間隔毎に物件詳細の内容が最新化されます。

物件詳細を取得するためのZabbixテンプレート作成

物件の詳細情報を取得するためのテンプレートを作成します。以下はテンプレート内に作成するアイテムのイメージです。

物件詳細を取得するテンプレート内のアイテム一覧
物件詳細を取得するテンプレート、アイテムの設定
物件詳細を取得するテンプレート、アイテムの設定

物件一覧を取得するためのZabbixホスト作成

いよいよ最後の対応です。物件一覧取得用のスクリプトを実行するため、Zabbix上にダミーホストを作成して物件一覧用のテンプレートとひも付けます。

Zabbixから以下の処理が自動で実行され、物件情報が定期的に追加、削除、更新されます。

  1. 物件一覧の取得
  2. 取得した物件一覧のホスト登録と物件詳細を取得するためのテンプレートとのひも付け
  3. 物件詳細の取得

以下は実際にZabbixで登録、取得された物件情報のイメージです。

Zabbixで登録、取得された物件情報のイメージ

物件詳細のテンプレートに利用の条件をトリガーとして登録し、かつ通知用のアクションを設定することで自身の理想のお部屋探しと通知まで自動化できます。

まとめ

今回はZabbixで理想のお部屋探しをしてみました。どうでしたでしょうか。
「Zabbixの新しい可能性を感じませんか?」
Zabbixの充実した機能と高いカスタマイズ性に加えて、Zabbix APIを活用することでZabbixが活躍できるシーンは大きく広がります。
「Zabbixって面白い!」
本記事が皆様のZabbixライフに対する新しい提案になれば幸いです。

and more…

今回の記事では理想のお部屋探しをしましたが、当社にはお部屋探しの他にも「大気汚染情報」や「神奈川県の雨量水位状況」の監視も行っているメンバーもいます。(あくまでも自己責任の範疇ですが…)

大気汚染情報の監視

こちらのサイトではJSON形式で値を返すAPIを提供していますので、HTTPエージェントでJSON文字列を取得し、アイテムの保存前処理でマスターアイテムのJSONを解析してアイテムにしています。(APIの利用にはユーザー登録が必要です)

大気汚染情報の監視
大気汚染情報の監視

神奈川県の雨量や河川水位の監視

こちらのサイトで公開されている情報は、今回ご紹介したお部屋探し同様にスクレイピングにて各種データを取得しています。こちらはあくまでも参考程度の実装でして、実際の監視では水位テレメーターなどの観測機器から取得したデータを用いて実装する形になると思われます。

どちらのケースも公開情報をZabbixを用いて自動で取得しており、自分が望む条件でチャットツール、メール通知を受け取れますし、グラフやマップ機能を利用することで監視結果をグラフィカルに表示させることもできます。

スクレイピングの他にも、センサーなどのIoT機器との連携やスマート家電との連携などZabbixにはまだまださまざまな活用方法があると思います。

もっと身近にZabbixを。

今後も引き続きZabbixの魅力を発信していきます!

Zabbixの導入・構築でお困りですか?

Zabbixの導入・構築でお困りですか?アークシステムは、Zabbix Japan LLCの公式認定パートナーとして、豊富な実績と高い技術力でお客様をサポートします。

アークシステムが選ばれる理由

  • 豊富な経験: 多くのZabbix導入・構築プロジェクトを成功に導いた実績
  • 確かな技術力: Zabbix認定資格を持つエンジニアが対応
  • 独自のソリューション: 「監視定義テンプレート」を活用した迅速かつ高品質な実装
  • 最新情報へのアクセス: Zabbix社との強力なパートナーシップを活かした最新技術対応

こんな方に最適です

  • Zabbixの新規導入を検討している
  • 現行システムの運用に課題を感じている
  • 大規模環境での監視体制を整えたい

アークシステムでは、Zabbixの導入・運用に関する課題を解決し、最適な環境を構築します。どんなご相談でもお気軽にお問い合わせください!

  • Zabbix Enterprise Appliance
  • 低コスト・短納期で提供するまるごとおまかせZabbix