採用情報

お問い合わせ

BLOG

Zabbix テック・ラウンジ

2018 年 08 月 31 日

Zabbix 3.2以降の新機能解説(Zabbix 4.0を見据えて) その15 - 柔軟なWeb監視の導入

こんにちは、MIRACLE ZBXサポートを担当している花島タケシです。 かなり柔軟なWeb監視が導入されましたので、今回はこのことについて解説します。

新しいWeb監視の導入

Zabbixに、かなり柔軟なWeb監視が導入されました。

従来のWeb監視は、設定したURL群へ接続できるかどうかというものでしかありませんでした。
一応、シナリオ形式で複数のURLを順に辿るということだけはできました。
しかしながら「監視」という点からは不十分であったでしょう。

HTTP agentタイプの導入

アイテムタイプ【HTTP Agent】(zbx-tl-031用)

新しいアイテムタイプ「HTTP agent」が導入されました。

このアイテムタイプを、アイテム設定画面のプルダウンメニューから選択すると、かなり多くの設定欄が表れます。
なんと、このアイテムタイプだけ「タイムアウト」の設定欄があります。(これについては後述します。)

この機能追加に伴い、itemsテーブルのカラムに以下の修正が加えられています。

@@ -336,6 +336,24 @@

FIELD  |evaltype    |t_integer    |'0' |NOT NULL |0
FIELD  |jmx_endpoint |t_varchar(255) |''   |NOT NULL |ZBX_PROXY
FIELD  |master_itemid |t_id       |    |NULL    |0       |5 |items  |itemid
+FIELD |timeout     |t_varchar(255) |'3s' |NOT NULL |ZBX_PROXY
+FIELD |url       |t_varchar(2048)|''  |NOT NULL |ZBX_PROXY
+FIELD |query_fields  |t_varchar(2048)|''   |NOT NULL |ZBX_PROXY
+FIELD |posts      |t_shorttext   |''   |NOT NULL |ZBX_PROXY
+FIELD |status_codes |t_varchar(255) |'200' |NOT NULL |ZBX_PROXY
+FIELD |follow_redirects|t_integer    |'1' |NOT NULL |ZBX_PROXY
+FIELD |post_type    |t_integer    |'0' |NOT NULL |ZBX_PROXY
+FIELD |http_proxy   |t_varchar(255) |''   |NOT NULL |ZBX_PROXY,ZBX_NODATA
+FIELD |headers    |t_shorttext   |''   |NOT NULL |ZBX_PROXY
+FIELD |retrieve_mode |t_integer    |'0' |NOT NULL |ZBX_PROXY
+FIELD |request_method |t_integer    |'1'  |NOT NULL |ZBX_PROXY
+FIELD |output_format |t_integer    |'0' |NOT NULL |ZBX_PROXY
+FIELD |ssl_cert_file |t_varchar(255) |'' |NOT NULL |ZBX_PROXY,ZBX_NODATA
+FIELD |ssl_key_file |t_varchar(255) |''   |NOT NULL |ZBX_PROXY,ZBX_NODATA
+FIELD |ssl_key_password|t_varchar(64) |'' |NOT NULL |ZBX_PROXY,ZBX_NODATA
+FIELD |verify_peer   |t_integer    |'0' |NOT NULL |ZBX_PROXY
+FIELD |verify_host  |t_integer    |'0' |NOT NULL |ZBX_PROXY
+FIELD |allow_traps   |t_integer    |'0' |NOT NULL |ZBX_PROXY
UNIQUE |1        |hostid,key_
INDEX |3        |status
INDEX  |4 |templateid

正直、単にitemsテーブルにパラメータのためにカラムを増やすという実装は良くない感じます。
データベースのカラムが増えても、よほどの大規模な監視を行わないのであれば、設定するアイテムの数もそれほど多くなりませんし、今時はディスクの容量の問題などアイテムに関してはそれほど問題にはならないでしょう。

しかしながら、このデータ構造をそのままConfiguration Cacheへ適用しているため、キャッシュの消費量は確実に増えます。

さらに、全アイテム共通でtimeoutカラムを適用するのであれば、アイテムごとのタイムアウトも実装すべきではないかと思います。

私がZabbixを触り始めて(1.8.15ぐらいだったでしょうか)すぐに、Timeoutパラメータが複数の用途に使用されていることを知り、疑問に思っていました。
少なくとも、監視についてはこれを用いれば切り離せるはずです。

話を設定画面に戻しましょう。

「URL解析」というボタンがありますが、与えられたURLとクエリフィールドを用いて解析が行われます。
その他必要充分な入力欄が設けられていると思います。

一点注意したいのが「Convert to JSON」ボタンです。
これは取得したデータをJSON形式で保存するためのものです。
なぜこんなものがあるか?というと、Preprocessing機能のためと考えられます。

「Enable trapping」というチェックボタンもあります。これにチェックを入れると「許可されたホスト」入力欄が出てきます。

Enable Trapping チェックボックス(zbx-tl-031用)

この「Enable trapping」にチェックを入れると、このアイテムのTrapper形式のアイテムにもなります。
つまり、zabbix_senderコマンドで監視結果を送信し、Trapperプロセスが受け取るようにもできます。

「許可されたホスト」の入力形式は、Trapper形式のアイテムと同じです。
下記を参照してください。この欄が空のときは全てを許可することとなります。

https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/trapper

これを用いた場合に通常監視とは別にzabbix_senderでデータを送信した場合、次回監視時刻に変更はなく、通常監視は更新間隔を守って監視を行うはずです。

というのも、Pollerプロセスが監視した後にキャッシュに入れるときに次回監視時刻を計算し、キューに挿入します。

Trapperプロセスにはそれをしないため、キューに変更を加えないからです。

監視を行うのはどのプロセス?

今回は実装としては大しておもしろくないのであまりソースコードは貼り付けません。

HTTP agentタイプの監視は、既存のPollerプロセスにより実行されます。
従来のWeb監視はHTTP Pollerプロセスが行っていましたが、この点は異なります。

また、従来のTimeoutパラメータの多くは自身にSIGARLMを投げるようにalarm()を用いて

いました。HTTP監視はlibcurlの機能を用いており、このオプションでサイトへのアクセスのタイムアウト設定を行うことができるため、これを利用しています。

「Convert to JSON」が有効な場合には、得られたヘッダー、ボディをJSON形式に変換してテキスト形式に保存します。

なお、現在の実装を見ると最終的にSET_TEXT_ERSULT()をコールして結果を保存しているため、データ型をログ、文字列、テキストのいずれかにしないと、「取得不可」となります。
文字列はDBに255文字の制限があるため注意が必要です。

関連記事

Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 1
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 2
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 3
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 4
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 5
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 6
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 7
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 8
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 9
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 10
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 11
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 12
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 13
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 14
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 15
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 16
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 17
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 18
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 19
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 20
Zabbix 3.2 以降の新機能解説(Zabbix 4.0 を見据えて) その 21

注意事項

  • 本ドキュメントの内容は、予告なしに変更される場合があります。
  • 本ドキュメントは、限られた評価環境における検証結果をもとに作成しており、全ての環境での動作を保証するものではありません。
  • 本ドキュメントの内容に基づき、導入、設定、運用を行なったことにより損害が生じた場合でも、当社はその損害についての責任を負いません。あくまでお客さまのご判断にてご使用ください。
CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
SSL/TLS サーバー証明書 SureServer Prime