[comment]: # ({ee805b92-1a3ec895})
# 3 保存前処理の例

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

[comment]: # ({c85251c8-f4923ce3})
#### 概要

このセクションでは、保存前処理のステップを使用していくつかの実用的なタスクを実行する例を紹介します。

[comment]: # ({/c85251c8-f4923ce3})

[comment]: # ({22bc082b-6c9dfb09})
#### VMwareイベントログレコードのフィルタリング

この例では、[正規表現に一致](/manual/config/items/preprocessing#matchesregexp)前処理ステップを使用して、VMwareイベントログから不要なイベントをフィルタリングします。

1\. 稼働中のVMware Hypervisorホストで、[vmware.eventlog](/manual/vm_monitoring/vmware_keys#vmware.eventlog)アイテムが存在し、正常に動作していることを確認します。  
ホスト作成時に[VMware](/manual/config/templates_out_of_the_box/vmware)テンプレートがリンクされている場合、イベントログアイテムはすでにハイパーバイザー上に存在している可能性があることに注意してください。

2\. VMware Hypervisorホストで、*ログ*型の[依存アイテム](/manual/config/items/itemtypes/dependent_items)を作成し、イベントログアイテムをそのマスターアイテムとして設定します。

3\. 依存アイテムの*前処理*タブで、*追加*をクリックして前処理ステップを作成し、ドロップダウンから*正規表現に一致*を選択します。次に、以下のいずれかのパターンを指定します。

-   すべてのログイベントをフィルタリングする場合:

```bash
.* logged in .*
```

-   "User" の後にあるユーザー名を含む行をフィルタリングする場合:

```bash
\bUser\s+\K\S+
```

::: noteimportant
正規表現に一致しない場合、依存アイテムは対応するエラーメッセージとともに未サポートになります。  
これを回避するには、*失敗時のカスタム処理*チェックボックスをオンにし、値を破棄する、またはカスタム値を設定するなどのオプションを選択してください。  
[破棄された](/manual/config/items/preprocessing#discardunchanged)値はデータベースに保存されないため、その結果としてトリガーは評価されず、トレンドデータも生成されないことに注意してください。
:::

または、[正規表現](/manual/config/items/preprocessing#regexp)前処理ステップを使用して、一致するグループを抽出し、出力を制御することもできます。

-   "logged in" を含むログイベント全体を抽出して出力するには、次のパラメータを指定します。

```bash
Pattern: .*logged in.*
Output: \0
```

-   "User" に続くユーザー名を抽出して出力するには、次のように指定します。

```bash
Pattern: User (.*?)(?=\ )
Output: \1
```

[comment]: # ({/22bc082b-6c9dfb09})

[comment]: # ({76f2bdd9-100f6359})
#### 取得した値の型の確認

この例では、取得したアイテムの値の型が数値であるかどうかを確認するために、[カスタム乗数](/manual/config/items/preprocessing#multiplier) の前処理ステップを使用します。

アイテムの *Preprocessing* タブで、*Custom multiplier* 前処理ステップを選択し、次のパラメータを指定します（取得した値に 1 を乗算します）。

```bash
1
```

::: noteimportant
前処理に失敗した場合（例: 入力が数値ではない場合）、アイテムは対応するエラーメッセージとともに未サポートになります。
これを回避するには、*Custom on fail* チェックボックスをオンにし、値を破棄する、またはカスタム値を設定するなどのオプションを選択してください。
[破棄された](/manual/config/items/preprocessing#discardunchanged) 値はデータベースに保存されないため、トリガーは評価されず、トレンドデータも生成されないことに注意してください。
:::

[comment]: # ({/76f2bdd9-100f6359})

[comment]: # ({9a28bbf4-5bac90df})
#### サポートされていない値のチェック

この例では、[サポートされていない値のチェック](/manual/config/items/preprocessing#checkunsupported)前処理ステップを使用して、アイテム値が取得できなかったかどうかを確認します。

Zabbixサーバー/プロキシポーラープロセスがアイテム値の収集を試みる際に、次のような結果が返される可能性があります。

- 有効な結果を返す。
- 最初は有効に見えても、後でサポート対象外になる可能性がある結果を返す（例：前処理後の値の型の不一致により）
- 値の収集エラーを返し、アイテムがサポート対象外になる。一般的な原因は次のとおりです。
- 不明なアイテムキー（Zabbixエージェント、シンプルチェック、またはZabbix内部アイテム）
- 不明なOID（SNMPエージェント）、不明なセンサー（IPMIエージェント）、またはJMXメトリックなし（JMXエージェント）
- トラップファイルを読み取れない（SNMPトラップ）
- スクリプトが見つからない（外部チェック）
- そのようなURLがない（HTTPエージェント、ブラウザ）
- ログインに失敗した（SSHエージェント、TELNETエージェント）
- 無効な数式構文（計算）、JavaScript構文エラー（スクリプト）、または無効なSQL（データベースモニター）

アイテム値の収集エラーを検出して処理するには、*サポートされていない値をチェック* 前処理ステップを使用できます。

このステップは常に最初に実行され、前処理開始前に発生したエラーのみを検出することに注意してください。

アイテムの *前処理* タブで、 *サポートされていない値をチェック* 前処理ステップを選択し、以下のいずれかのパラメータを指定します。

- すべてのエラーの場合:

```bash
Parameter: any error
```

- "接続できません"を含むエラーの場合:

```bash
Parameter: error matches
Pattern: (?i)cannot connect
```

次に、*失敗時にカスタム*オプションを使用して、値（この場合はエラー）を破棄するか、カスタム値を設定するか、カスタムエラーメッセージを返します。
[破棄](/manual/config/items/preprocessing#discardunchanged) された値はデータベースに保存されないため、トリガーは評価されず、トレンドデータも生成されませんのでご注意ください。

[comment]: # ({/9a28bbf4-5bac90df})
