このアイテムタイプでは、HTTP/HTTPSプロトコルを使用したデータ ポーリングが可能です。Zabbix senderまたはZabbix senderプロトコルを使用したトラッピングも可能です。
HTTP監視アイテムはZabbixサーバーによって実行されます。ただし、ホストがZabbixプロキシ経由で監視されている場合、HTTPアイテムチェックはZabbixプロキシで実行されます。
HTTP監視アイテムでは、監視対象のホストでエージェントが実行されている必要はありません。
HTTPエージェントはHTTPとHTTPSの両方をサポートします。Zabbixはオプションでリダイレクトに従います (以下の[リダイレクトをたどる]オプションを参照)。リダイレクトの最大数は10にハードコードされています(cURLオプションCURLOPT_MAXREDIRSを使用)。
Zabbixサーバ/Zabbixプロキシは、cURL(libcurl)をサポートした状態で初期設定されている必要があります。
HTTPアイテムを構成するには:
入力が必須なすべての入力フィールドには赤いアスタリスクが付いています。
HTTPアイテムに特定の情報が必要なフィールドは次のとおりです::
Parameter | Description |
---|---|
タイプ | ここでHTTP エージェントを選択します。 |
キー | 一意のアイテム キーを入力します。 |
URL | 接続してデータを取得するための URL。例: https://www.example.com http://www.example.com/download ドメイン名はUnicode文字で指定できます。HTTPチェックを実行すると、自動的に punycode から ASCII に変換されます。 [解析] ボタンを使用すると、オプションのクエリ フィールド (?name=Admin&password=mypassword など) を URL から分離し、属性と値を クエリフィールド に移動して自動 URL エンコードを行うことができます。 2048 文字までに制限されています。 サポートされているマクロ: {HOST.IP}、{HOST.CONN}、{HOST.DNS}、{HOST.HOST}、{HOST.NAME}、{ITEM.ID}、{ITEM.KEY}、{ITEM.KEY.ORIG}、ユーザーマクロ、ローレベルディスカバリマクロ。 これにより、cURLオプションCURLOPT_URLが設定されます。 |
クエリフィールド | URLの変数(上記を参照)。 属性と値のペアとして指定されます。 値は自動的にURLエンコードされます。マクロからの値は解決されてから自動的に URL エンコードされます。 サポートされているマクロ: {HOST.IP}、{HOST.CONN}、{HOST.DNS}、{HOST.HOST}、{HOST.NAME}、{ITEM.ID}、{ITEM.KEY}、{ITEM.KEY.ORIG}、ユーザーマクロ、ローレベルディスカバリマクロ。 これにより、CURLOPT_URL cURLオプションが設定されます。 |
リクエストメソッド | リクエストメソッドタイプを選択します: GET、POST、PUT、または HEAD |
タイムアウト | リクエストメソッドの種類を選択します: GET、POST、PUT、または HEAD |
リクエストボディのタイプ | リクエスト本文のタイプを選択します: Rawデータ - カスタム HTTPリクエスト本文。マクロは置換されますが、エンコードは実行されません JSONデータ - JSON 形式の HTTP リクエスト本文。マクロは文字列、数値、true、falseとして使用できます。文字列として使用するマクロは二重引用符で囲む必要があります。マクロの値は解決されてから自動的にエスケープされます。ヘッダーで "Content-Type"が指定されていない場合は、デフォルトで "Content-Type: application/json" になります XML データ - XML 形式の HTTP リクエスト本文。マクロはテキストノード、属性、またはCDATAセクションとして使用できます。マクロの値は解決されてから、テキストノードと属性で自動的にエスケープされます。ヘッダーで "Content-Type" が指定されていない場合は、デフォルトで "Content-Type: application/xml" になります 注意 XMLデータを選択するには、libxml2が必要です。 |
リクエストボディ | リクエスト本文を入力します。 サポートされているマクロ: {HOST.IP}、{HOST.CONN}、{HOST.DNS}、{HOST.HOST}、{HOST.NAME}、{ITEM.ID}、{ITEM.KEY}、{ITEM.KEY.ORIG}、ユーザー マクロ、ローレベルディスカバリマクロ。 |
ヘッダー | リクエストを実行するときに送信されるカスタムHTTPヘッダー。 属性と値のペアとして指定されます。 サポートされているマクロ: {HOST.IP}、{HOST.CONN}、{HOST.DNS}、{HOST.HOST}、{HOST.NAME}、{ITEM.ID}、{ITEM.KEY}、{ITEM.KEY.ORIG}、ユーザー マクロ、ローレベルディスカバリマクロ。 これにより、cURLオプションCURLOPT_HTTPHEADER が設定されます。 |
要求ステータスコード | 予想されるHTTPステータスコードのリスト。Zabbix がリストにないコードを取得した場合、その項目はサポート対象外になります。空の場合、チェックは実行されません。 例: 200,201,210-299 リスト内のサポートされているマクロ: ユーザー マクロ、ローレベルディスカバリマクロ。 これはcURLオプションCURLINFO_RESPONSE_CODEを使用します。 |
リダイレクトをたどる | HTTPリダイレクトをたどる際にチェックボックスをオンにします。これにより、cURLオプションCURLOPT_FOLLOWLOCATIONが設定されます。 |
取得モード | 取得する必要がある応答の部分を選択します: ボディ - ボディのみ ヘッダー - ヘッダーのみ ボディとヘッダー - ボディとヘッダー |
JSONへの変換 | ヘッダーは、「header」キーの下に属性と値のペアとして保存されます。 「Content-Type: application/json」が検出された場合、本文はオブジェクトとして保存され、それ以外の場合は文字列として保存されます。例: |
HTTPプロキシ | 使用する HTTP プロキシを、[protocol://][username[:password]@]proxy.example.com[:port] の形式で指定できます。オプションの protocol:// プレフィックスを使用して、代替プロキシ プロトコル (https、socks4、socks5 など。ドキュメント を参照してください。プロトコル プレフィックスのサポートは、cURL 7.21.7 で追加されました) を指定できます。プロトコルを指定しないと、プロキシは HTTP プロキシとして扱われます。間違ったプロトコルを指定すると、接続は失敗し、アイテムはサポートされなくなります。デフォルトでは、1080 ポートが使用されます。 指定した場合、プロキシは http_proxy、HTTPS_PROXY などのプロキシ関連の環境変数を上書きします。指定しない場合は、プロキシはプロキシ関連の環境変数を上書きしません。入力された値は「そのまま」渡され、妥当性チェックは行われません。 注意 HTTP プロキシでは単純な認証のみがサポートされます。 サポートされているマクロ: {HOST.IP}、{HOST.CONN}、{HOST.DNS}、{HOST.HOST}、{HOST.NAME}、{ITEM.ID}、{ITEM.KEY}、{ITEM.KEY.ORIG}、ユーザー マクロ、ローレベルディスカバリマクロ。 これにより、cUR オプションCURLOPT_PROXYが設定されます。 |
HTTP認証 | 認証タイプ: なし - 認証は使用されません。 Basic - 基本認証が使用されます。 NTLM - NTLM (Windows NT LAN Manager 認証が使用されます。 Kerberos - Kerberos 認証が使用されます。Zabbixを使用したKerberosの設定 も参照してください。 Digest - ダイジェスト認証が使用されます。 認証方法を選択すると、ユーザー名とパスワードを入力するための 2 つの追加フィールドが表示されます。ここでは、ユーザー マクロとローレベルディスカバリマクロがサポートされています。 これにより、cURLオプションCURLOPT_HTTPAUTHが設定されます。 |
SSLピア検証 | Web サーバーの SSL 証明書を検証するには、チェックボックスをオンにします。サーバー証明書は、システム全体の証明機関 (CA) の場所から自動的に取得されます。Zabbix サーバーまたはプロキシ構成パラメーター SSLCALocation を使用して、CA ファイルの場所を上書きできます。 これにより、cURLオプションCURLOPT_SSL_VERIFYPEERが設定されます。 |
SSLホスト検証 | チェックボックスをオンにして、Webサーバー証明書の共通名フィールドまたはサブジェクト代替名フィールドが一致することを確認します。これにより、cURLオプションCURLOPT_SSL_VERIFYHOSTが設定されます。 |
SSL証明書ファイル | クライアント認証に使用されるSSL証明書ファイルの名前。証明書ファイルは PEM1形式である必要があります。証明書ファイルに秘密鍵も含まれている場合は、SSLキーファイルフィールドを空のままにしておきます。キーが暗号化されている場合は、SSL キー パスワード フィールドにパスワードを指定します。このファイルを含むディレクトリは、Zabbix サーバーまたはプロキシ構成パラメータ SSLCertLocation によって指定されます。 サポートされているマクロ: {HOST.IP}、{HOST.CONN}、{HOST.DNS}、{HOST.HOST}、{HOST.NAME}、{ITEM.ID}、{ITEM.KEY}、{ITEM.KEY.ORIG}、ユーザーマクロ、ローレベルディスカバリマクロ。 これにより、cURLオプションCURLOPT_SSLCERTが設定されます。 |
SSL秘密鍵ファイル | クライアント認証に使用される SSL 秘密鍵ファイルの名前。秘密鍵ファイルはPEM1形式である必要があります。このファイルを含むディレクトリは、Zabbix サーバーまたはプロキシ構成パラメータ SSLKeyLocationによって指定されます。 サポートされているマクロ: {HOST.IP}、{HOST.CONN}、{HOST.DNS}、{HOST.HOST}、{HOST.NAME}、{ITEM.ID}、{ITEM.KEY}、{ITEM.KEY.ORIG}、ユーザー マクロ、ローレベルディスカバリマクロ。 これにより、cURLオプションCURLOPT_SSLKEYが設定されます。 |
SSL秘密鍵パスワード | SSL秘密鍵ファイルのパスワード。 サポートされているマクロ: ユーザーマクロ、ローレベルディスカバリマクロ。 これにより、cURLオプションCURLOPT_KEYPASSWDが設定されます。 |
トラッピングの有効化 | このチェックボックスをオンにすると、アイテムは トラッパーアイテム としても機能し、Zabbix senderによって、または Zabbix senderプロトコルを使用して、このアイテムに送信されたデータを受け入れます。 |
許可されたホスト | トラッピングの有効化チェックボックスがオンになっている場合にのみ表示されます。 カンマで区切られたIPアドレスのリスト。オプションでCIDR表記、またはDNS名。 指定すると、ここにリストされているホストからの接続のみが受け入れられます。 IPv6サポートが有効になっている場合、「127.0.0.1」、「::127.0.0.1」、「::ffff:127.0.0.1」は同等に扱われ、「::/0」は任意のIPv4またはIPv6アドレスを許可します。 「0.0.0.0/0」は任意のIPv4アドレスを許可するために使用できます。 「IPv4互換のIPv6アドレス」(0000::/96プレフィックス)はサポートされていますが、 RFC4291。 例: 127.0.0.1、192.168.1.0/24、192.168.3.1-255、192.168.1-10.1-255、::1、2001:db8::/32、mysqlserver1、zabbix.example.com、{HOST.HOST} このフィールドでは、スペースとユーザーマクロを使用できます。 このフィールドでは、ホストマクロ: {HOST.HOST}、{HOST.NAME}、{HOST.IP}、{HOST.DNS}、{HOST.CONN}を使用できます。 |
HTTP プロキシフィールドが空のままの場合、HTTPプロキシを使用する別の方法は、プロキシ関連の環境変数を設定することです
HTTPの場合 - Zabbixサーバーの起動ユーザーのhttp_proxy
環境変数を設定します。 例:
http_proxy=http://proxy_ip:proxy_port
.
HTTPSの場合 - HTTPS_PROXY
環境変数を設定します。 例:
HTTPS_PROXY=http://proxy_ip:proxy_port
. 詳細については、シェル コマンド # man curl を実行してください。
[1]ZabbixはPEM 形式の証明書と秘密鍵ファイルのみをサポートします。証明書と秘密鍵のデータが PKCS#12形式のファイル(通常は拡張子が *.p12 または *.pfx)にある場合は、次のコマンドを使用してそこから PEMファイルを生成できます:
Elasticsearchなどのサービスからデータを取得するために、シンプルなGETリクエストを送信します。
localhost:9200/?pretty
でGET item を作成します。{
"name" : "YQ2VAY-",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "kH4CYqh5QfqgeTsjh2F9zg",
"version" : {
"number" : "6.1.3",
"build_hash" : "af51318",
"build_date" : "2018-01-26T18:22:55.523Z",
"build_snapshot" : false,
"lucene_version" : "7.1.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You know, for search"
}
$.version.number
Elasticsearchなどのサービスからデータを取得するために、シンプルなPOSTリクエストを送信します。
http://localhost:9200/str/values/_search?scroll=10s
{
"query": {
"bool": {
"must": [{
"match": {
"itemid": 28275
}
}],
"filter": [{
"range": {
"clock": {
"gt": 1517565836,
"lte": 1517566137
}
}
}]
}
}
}
{
"_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAkFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAJRZZUTJWQVktVFNacU5nRHhlcEI0QUxRAAAAAAAAACYWWVEyVkFZLVRTWnFOZ0R4ZXBCNEFMUQAAAAAAAAAnFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAKBZZUTJWQVktVFNacU5nRHhlcEI0QUxR",
"took": 18,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1.0,
"hits": [{
"_index": "dbl",
"_type": "values",
"_id": "dqX9VWEBV6sEKSMyk6sw",
"_score": 1.0,
"_source": {
"itemid": 28275,
"value": "0.138750",
"clock": 1517566136,
"ns": 25388713,
"ttl": 604800
}
}]
}
}
$.hits.hits[0]._source.value
apiinfo.version を使用して、Zabbix APIが生きているかどうかをチェックします。
JSONデータでPOSTメソッドを使用し、リクエストヘッダを設定し、ヘッダのみを返すように要求することに注意してください。
Openweathermapの公開サービスに接続して天気情報を取得する。
クエリフィールドのマクロの使い方に注意してください。
記入方法は、Openweathermap APIを参照してください。
HTTP agentのレスポンスで返されるJSONのサンプル:
{
"body": {
"coord": {
"lon": 40.01,
"lat": 56.11
},
"weather": [{
"id": 801,
"main": "Clouds",
"description": "few clouds",
"icon": "02n"
}],
"base": "stations",
"main": {
"temp": 15.14,
"pressure": 1012.6,
"humidity": 66,
"temp_min": 15.14,
"temp_max": 15.14,
"sea_level": 1030.91,
"grnd_level": 1012.6
},
"wind": {
"speed": 1.86,
"deg": 246.001
},
"clouds": {
"all": 20
},
"dt": 1526509427,
"sys": {
"message": 0.0035,
"country": "RU",
"sunrise": 1526432608,
"sunset": 1526491828
},
"id": 487837,
"name": "Stavrovo",
"cod": 200
}
}
次のタスクは、JSONからデータを抽出する従属 itemを設定することです。
その他、「気温」などの気象指標も同様に追加されます。
Nginx のステータスページに接続し、そのメトリクスを一括で取得する。
Nginx stubのステータス出力のサンプル:
Active connections: 1 Active connections:
server accepts handled requests
52 52 52
Reading: 0 Writing: 1 Waiting: 0
次のタスクは、データを抽出する従属 item を設定することです。
server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)
: