本記事は TechHarmony Advent Calendar 2025 12/4付の記事です。 |
こんにちは、アドベントカレンダー第4走者の坂木です。
本記事では、保存前処理の中でもテキストデータの加工処理に焦点を当て、以下の5つの機能について、具体的な設定例を交えながら解説します。
- 正規表現
- 置換
- 前後文字列削除
- 末尾文字列削除
- 先頭文字列削除
保存前処理について
保存前処理とは、Zabbixが監視対象から取得したデータをデータベースに保存する直前に、その値を加工・変換するための機能です。例えば、取得した値の単位を変換したり、JSONデータから特定の値だけを抽出したり、正規表現で不要な文字を削除したりできます。
これにより、不要なデータを保存せずに済むためデータベースの負荷を軽減できるほか、データを整形することで、より柔軟で高度な監視や分かりやすいグラフ描画を実現できます。
正規表現
正規表現は、取得したテキストデータから特定のパターンに一致する部分を抽出・加工できます。
パラメータとして「パターン」と「出力」を指定し、パターンに一致した部分をどのように出力するかを定義します。これにより、複雑なテキストデータも柔軟に扱うことができ、監視の精度を大幅に向上させることが可能です。
ユースケース
- コマンドの実行結果から、特定の数値だけを抜き出す
- ログメッセージからステータスコードやエラーメッセージを抜き出す
- ログからIPアドレスを抽出して接続元を監視する
実例
以下の/var/log/httpd/error_logから、エラーログの内容のみ抽出する保存前処理を設定します。
# cat /var/log/httpd/error_log [Tue Nov 25 04:42:11.673140 2025] [suexec:notice] [pid 2043:tid 2043] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) [Tue Nov 25 04:42:11.728157 2025] [lbmethod_heartbeat:notice] [pid 2043:tid 2043] AH02282: No slotmem from mod_heartmonitor [Tue Nov 25 04:42:11.729082 2025] [systemd:notice] [pid 2043:tid 2043] AH10497: SELinux is enabled; httpd running as context system_u:system_r:httpd_t:s0 [Tue Nov 25 04:42:11.747259 2025] [mpm_event:notice] [pid 2043:tid 2043] AH00489: Apache/2.4.64 (Amazon Linux) configured -- resuming normal operations [Tue Nov 25 04:42:11.747282 2025] [core:notice] [pid 2043:tid 2043] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
アイテムおよび保存前処理の設定は以下のとおりです。
設定した正規表現は、行の先頭から見て、最後の” ] “とスペースに続く部分をすべて取得する、という設定となっています。
| 正規表現のパラメータ | 設定値 | 説明 |
| パターン | ^.*\] (.*) | 行頭からすべての文字を読み取り、最後の部分をキャプチャ |
| 出力 | \1 | キャプチャした部分(.*)を返す |
置換
置換は、収集したデータに含まれる特定の値や文字列を、データベースに保存する前に別の値や文字列に置き換える機能です。
これにより、特定のコードを意味の分かりやすいテキストに変換したり、不要な文字を取り除いたりすることが可能となります。
ユースケース
- MB, GB などの単位や不要な記号を空欄に置換して、必要な文字列だけに整形する
- UP, DOWN のようなステータス文字列を 1, 0 のような数値に変換して、グラフ化やトリガー条件に使いやすくする
実例
以下のようにメモリの利用量を取得するスクリプトに対し、単位を削除して数値だけに整形する保存前処理を設定します。
▼監視対象スクリプト # /etc/zabbix/work/mem.sh 1.01 GB
アイテムおよび保存前処理の設定は以下のとおりです。今回利用しているアイテム(system.run)の利用方法はこちらをご参照ください。
| 置換のパラメータ | 設定値 | 説明 |
| 検索文字列 | <単位> | 削除する(空欄に置換する)単位を記載 |
| 置換文字列 | <空欄> | 単位を削除するため空欄のまま |
こちらのように取得されます。
文字列削除
文字列削除は、保存前処理のパラメータに含まれる文字を、アイテムが取得した値の先頭や末尾から削除する機能です。
文字列削除機能には、以下の3種類があります。
| 保存前処理名 | 説明 |
| 前後文字列削除 | データの先頭と末尾にある特定の文字を削除 |
| 末尾文字列削除 | データの末尾にある特定の文字を削除 |
| 先頭文字列削除 | データの先頭にある特定の文字を削除 |
ユースケース
- ログ収集の過程で付加される可能性のある、先頭や末尾の余分なスペースを整形する
実例
以下の文字列に対して、指定した文字(今回は「#」)を削除する保存前処理を設定します。
(本来は末尾のスペースを削除したかったのですが、Zabbixのインターフェース上ではスペースの有無が分かりにくいため、見えやすい「#」を削除する例で説明します。)
▼書き込んだ文字列 te##st test### ###test ###test###
アイテムおよび保存前処理の設定は以下のとおりです。
| 保存前処理名 | 文字列削除のパラメータ | 設定値 | 説明 |
| 前後文字列削除 | 文字列のリスト | # | 先頭と末尾の#を削除 |
| 末尾文字列削除 | 文字列のリスト | # | 末尾の#を削除 |
| 先頭文字列削除 | 文字列のリスト | # | 先頭の#を削除 |
こちらのように取得されます。
まとめ
Zabbixの保存前処理は、未加工のデータを「使える情報」に変えるための重要な機能です。
正規表現や置換で柔軟な抽出・変換が可能で、前後・先頭・末尾の文字列削除により不要な情報を除去できます。
本記事を参考にぜひ保存前処理を利用してみてください。
弊社ではZabbix関連サービスを展開しています。以下ページもご参照ください。
★Zabbixの基礎をまとめたeBookを公開しております!★

★SCSK Plus サポート for Zabbix★

★SCSK Zabbixチャンネル★










