[comment]: # ({1a1e2756-1a1e2756})
# 18 Skript-Datenpunkte

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

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

Script-Datenpunkte können verwendet werden, um Daten zu erfassen, indem benutzerdefinierter
JavaScript-Code ausgeführt wird, mit der Möglichkeit, Daten über HTTP/HTTPS abzurufen. Zusätzlich
zum Script können eine optionale Liste von Parametern (Name-Wert-Paare) sowie ein Timeout
angegeben werden.

Dieser Datenpunkttyp kann in Datenerfassungsszenarien nützlich sein, die
mehrere Schritte oder eine komplexe Logik erfordern. Beispielsweise kann ein Script-Datenpunkt so
konfiguriert werden, dass er einen HTTP-Aufruf ausführt, dann die im ersten Schritt empfangenen
Daten auf irgendeine Weise verarbeitet und den transformierten Wert an den zweiten HTTP-Aufruf
übergibt.

Script-Datenpunkte werden von Pollern des Zabbix Server oder Proxy verarbeitet.

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

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

Wählen Sie im Feld *Typ* des [Datenpunkt-Konfigurationsformulars](/manual/config/items/item) die Option Skript und füllen Sie dann die erforderlichen Felder aus.

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

Alle obligatorischen Eingabefelder sind mit einem roten Sternchen markiert.

Die Felder, für die bei Skript-Datenpunkten spezifische Informationen erforderlich sind, sind:

|Feld|Beschreibung|
|--|--------|
|*Schlüssel*|Geben Sie einen eindeutigen Schlüssel ein, der zur Identifizierung des Datenpunkts verwendet wird.|
|*Parameter*|Geben Sie die Variablen an, die als Attribut-Wert-Paare an das Skript übergeben werden sollen.<br>[Benutzermakros](/manual/config/macros/user_macros) werden unterstützt. Um zu sehen, welche integrierten Makros unterstützt werden, suchen Sie in der Tabelle [unterstützte Makros](/manual/appendix/macros/supported_by_location) nach „Script-type item“.|
|*Skript*|Geben Sie JavaScript-Code im modalen Editor ein, der geöffnet wird, wenn Sie in das Parameterfeld klicken oder auf das Stiftsymbol daneben.<br>Dieser Code muss die Logik zur Rückgabe des Metrikwerts bereitstellen.<br>Der Code hat Zugriff auf alle Parameter und alle von Zabbix hinzugefügten [zusätzlichen JavaScript-Objekte](/manual/config/items/preprocessing/javascript/javascript_objects).<br>Siehe auch: [JavaScript Guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide).|
|*Zeitüberschreitung*|Zeitlimit für die JavaScript-Ausführung (1–600 s; bei Überschreitung wird ein Fehler zurückgegeben).<br>Beachten Sie, dass es je nach Skript länger dauern kann, bis die Zeitüberschreitung ausgelöst wird.<br>Weitere Informationen zum Parameter *Timeout* finden Sie unter [allgemeine Datenpunktattribute](/manual/config/items/item#configuration).|

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

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

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

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

Erfassen Sie den Inhalt von *https://www.example.com/release\_notes*:

-   Erstellen Sie einen Datenpunkt vom Typ „Script“.
-   Geben Sie im Feld *Script* Folgendes ein:

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

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

[comment]: # ({ccceecb6-7115c5ef})
##### Datenerfassung mit Parametern

Erfassen Sie den Inhalt einer bestimmten Seite und verwenden Sie dabei Parameter:

- Erstellen Sie einen Datenpunkt vom Typ „Script“ mit zwei Parametern:
    - **url : {$DOMAIN}** (das Benutzermakro {$DOMAIN} sollte definiert sein, vorzugsweise auf Host-Ebene)
    - **subpage : /release_notes**

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

- Geben Sie im Feld *Script* Folgendes ein:

```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})
##### Mehrere HTTP-Anfragen

Erfassen Sie den Inhalt von *https://www.example.com* und
*https://www.example.com/release\_notes*:

-   Erstellen Sie einen Datenpunkt vom Typ „Script“.
-   Geben Sie im Feld *Script* Folgendes ein:

```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})
##### Protokollierung

Fügen Sie den Eintrag „Log test“ zum Zabbix-Serverprotokoll hinzu und erhalten Sie den Datenpunktwert „1“ als Rückgabewert:

-   Erstellen Sie einen Datenpunkt vom Typ „Script“.
-   Geben Sie im Feld *Script* Folgendes ein:

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

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