[comment]: # ({07496156-1a1e2756})
# 16 スクリプトアイテム

[comment]: # ({/07496156-1a1e2756})

[comment]: # ({4a773286-cb89bc38})
### 概要

スクリプトアイテムは、ユーザー定義のJavaScriptコードを実行してデータを収集するために使用でき、HTTP/HTTPS経由でデータを取得することも可能です。スクリプトに加えて、オプションでパラメータのリスト（名前と値のペア）やタイムアウトを指定できます。

このアイテムタイプは、複数のステップや複雑なロジックを必要とするデータ収集シナリオで役立ちます。例えば、スクリプトアイテムを設定してHTTPコールを実行し、最初のステップで受信したデータを何らかの方法で処理し、変換した値を2回目のHTTPコールに渡すことができます。

スクリプトアイテムは、Zabbixサーバーまたはプロキシのポーラーによって処理されます。

[comment]: # ({/4a773286-cb89bc38})

[comment]: # ({9f13bdb8-7ed55e87})
### 設定

[アイテム設定フォーム](/manual/config/items/item)の*タイプ*フィールドで「スクリプト」を選択し、必要なフィールドに入力します。

![script\_item.png](../../../../../assets/ja/manual/config/items/itemtypes/script_item.png){width="600"}

すべての必須入力フィールドには赤いアスタリスクが付いています。

スクリプトアイテムに固有の情報が必要なフィールドは次のとおりです。

|フィールド|説明|
|--|--------|
|*キー*|アイテムを識別するために使用される一意のキーを入力します。|
|*パラメータ*|スクリプトに渡す変数を属性と値のペアで指定します。<br>[ユーザーマクロ](/manual/config/macros/user_macros)がサポートされています。サポートされている組み込みマクロを確認するには、[サポートされているマクロ](/manual/appendix/macros/supported_by_location)テーブルで「Script-type item」を検索してください。|
|*スクリプト*|パラメータフィールドをクリックするか、その横の鉛筆アイコンをクリックすると開くモーダルエディタにJavaScriptコードを入力します。このコードはメトリック値を返すためのロジックを提供する必要があります。<br>このコードは、すべてのパラメータおよびZabbixによって追加された[追加のJavaScriptオブジェクト](/manual/config/items/preprocessing/javascript/javascript_objects)にアクセスできます。<br>参考: [JavaScriptガイド](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide)。|
|*タイムアウト*|JavaScriptの実行タイムアウト（1～600秒；これを超えるとエラーが返されます）。<br>スクリプトによっては、タイムアウトが発生するまでに時間がかかる場合があります。<br>*タイムアウト*パラメータの詳細については、[一般的なアイテム属性](/manual/config/items/item#configuration)を参照してください。|

[comment]: # ({/9f13bdb8-7ed55e87})

[comment]: # ({b41637d2-4c860844})
### 例

[comment]: # ({/b41637d2-4c860844})

[comment]: # ({2f86a97a-9c6c78ee})
##### シンプルなデータ収集

*https://www.example.com/release\_notes* の内容を収集します:

-   タイプが「スクリプト」のアイテムを作成します。
-   *スクリプト* フィールドに以下を入力します:

```javascript
var request = new HttpRequest();
return request.get("https://www.example.com/release_notes");
```

[comment]: # ({/2f86a97a-9c6c78ee})

[comment]: # ({ccceecb6-7115c5ef})
##### パラメータを使用したデータ収集

特定のページの内容を収集し、パラメータを利用します:

- タイプ「スクリプト」と2つのパラメータを持つアイテムを作成します:
    - **url : {$DOMAIN}**（ユーザーマクロ{$DOMAIN}は、できればホストレベルで定義してください）
    - **subpage : /release_notes**

![](../../../../../assets/ja/manual/config/items/itemtypes/script_example1.png){width=600}

- *スクリプト* フィールドに以下を入力します:

```javascript
var obj = JSON.parse(value);
var url = obj.url;
var subpage = obj.subpage;
var request = new HttpRequest();
return request.get(url + subpage);
```

[comment]: # ({/ccceecb6-7115c5ef})

[comment]: # ({d5553e63-18a089f4})
##### 複数のHTTPリクエスト

*https://www.example.com*と*https://www.example.com/release\_notes*の両方の内容を収集します。

-   タイプが「スクリプト」のアイテムを作成します。
-   *スクリプト*フィールドに以下を入力します。

```javascript
var request = new HttpRequest();
return request.get("https://www.example.com") + request.get("https://www.example.com/release_notes");
```

[comment]: # ({/d5553e63-18a089f4})

[comment]: # ({0a711007-d837bcdd})
##### ロギング

Zabbix server ログに "Log test" エントリを追加し、アイテム値 "1" を返信します。

- タイプ "Script" の item を作成します。
- *Script* フィールドに、以下のコードを入力します。

```javascript
Zabbix.log(3, 'Log test');
return 1;
```

[comment]: # ({/0a711007-d837bcdd})
