amegonの雑なブログ

日常的なものから技術的なものまでメモの雑記

Zabbix のデータが記録されるテーブルのカラムを確認して保存されるデータ型をチェック

確認環境

Zabbix

Zabbix Server 5.0.17

[root@zbx-svr-5 ~]# zabbix_server -V
zabbix_server (Zabbix) 5.0.17
Revision 0a4ac3dabc 18 October 2021, compilation time: Oct 18 2021 13:38:05

Copyright (C) 2021 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).

Compiled with OpenSSL 1.0.1e-fips 11 Feb 2013
Running with OpenSSL 1.0.1e-fips 11 Feb 2013
[root@zbx-svr-5 ~]#

DB

MariaDB 10.1.48

[root@zbx-svr-5 ~]# mysql -V
mysql  Ver 15.1 Distrib 10.1.48-MariaDB, for Linux (x86_64) using readline 5.1
[root@zbx-svr-5 ~]#

テーブルごとのカラム確認

history

  • カラムに設定されている value のデータ型:double (浮動小数点型)
  • このテーブルの保存される Zabbix のアイテムのデータ型:数値(浮動小数)
MariaDB [zabbix]> show columns from history;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| itemid | bigint(20) unsigned | NO   | MUL | NULL    |       |
| clock  | int(11)             | NO   |     | 0       |       |
| value  | double              | NO   |     | 0       |       |
| ns     | int(11)             | NO   |     | 0       |       |
+--------+---------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

MariaDB [zabbix]>

他のテーブルに history_uint とか history_str とかあるので、history浮動小数の値を扱っているのは個人的に以外だった。
Zabbix を実装したとき、はじめに扱ったデータが浮動小数のデータだったのかも。(個人の意見です。)

history_uint

  • カラムに設定されている value のデータ型: bigint(20) unsigned (符号なし整数 → 整数だけで 8 バイト(=64ビット)使用可能)
  • このテーブルの保存される Zabbix のアイテムのデータ型:数値(整数)
MariaDB [zabbix]> show columns from history_uint;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| itemid | bigint(20) unsigned | NO   | MUL | NULL    |       |
| clock  | int(11)             | NO   |     | 0       |       |
| value  | bigint(20) unsigned | NO   |     | 0       |       |
| ns     | int(11)             | NO   |     | 0       |       |
+--------+---------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

MariaDB [zabbix]>

符号なしなので 0 ~ 18446744073709551615 まで使える。大きい。

history_str

  • カラムに設定されている value のデータ型: varchar(255) (最大 255 バイトを格納できる可変長文字列)
  • このテーブルの保存される Zabbix のアイテムのデータ型:文字列
MariaDB [zabbix]> show columns from history_str;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| itemid | bigint(20) unsigned | NO   | MUL | NULL    |       |
| clock  | int(11)             | NO   |     | 0       |       |
| value  | varchar(255)        | NO   |     |         |       |
| ns     | int(11)             | NO   |     | 0       |       |
+--------+---------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

MariaDB [zabbix]>

余談ですが、varchar(255)varchar(256) のどちらにするかで論争があるとかないとか。

history_text

  • カラムに設定されている value のデータ型: text (16ビット → 65535文字)
  • このテーブルの保存される Zabbix のアイテムのデータ型:テキスト
MariaDB [zabbix]> show columns from history_text;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| itemid | bigint(20) unsigned | NO   | MUL | NULL    |       |
| clock  | int(11)             | NO   |     | 0       |       |
| value  | text                | NO   |     | NULL    |       |
| ns     | int(11)             | NO   |     | 0       |       |
+--------+---------------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

MariaDB [zabbix]>

文字列よりも大きい文字を扱う際に使用。
テーブルの内容を確認したところ、私の環境では Template Module Linux generic by Zabbix agentSoftware installed というアイテムのデータだけが書き込まれていた。

history_log

  • カラムに設定されている value のデータ型: text (16ビット → 65535文字)
  • このテーブルの保存される Zabbix のアイテムのデータ型:ログ
MariaDB [zabbix]> show columns from history_log;
+------------+---------------------+------+-----+---------+-------+
| Field      | Type                | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+-------+
| itemid     | bigint(20) unsigned | NO   | MUL | NULL    |       |
| clock      | int(11)             | NO   |     | 0       |       |
| timestamp  | int(11)             | NO   |     | 0       |       |
| source     | varchar(64)         | NO   |     |         |       |
| severity   | int(11)             | NO   |     | 0       |       |
| value      | text                | NO   |     | NULL    |       |
| logeventid | int(11)             | NO   |     | 0       |       |
| ns         | int(11)             | NO   |     | 0       |       |
+------------+---------------------+------+-----+---------+-------+
8 rows in set (0.00 sec)

MariaDB [zabbix]>

value は text だが、timestamp や source、severity などログの保存に必要な情報を同時に記録できるようになっている。
ログはどれだけの文字数書かれているかわからないから、text 型になっているのかな。

trends

  • カラムに設定されている value のデータ型:double (浮動小数点型)
  • このテーブルの保存される Zabbix のアイテムのデータ型:数値(浮動小数)
MariaDB [zabbix]> show columns from trends;
+-----------+---------------------+------+-----+---------+-------+
| Field     | Type                | Null | Key | Default | Extra |
+-----------+---------------------+------+-----+---------+-------+
| itemid    | bigint(20) unsigned | NO   | PRI | NULL    |       |
| clock     | int(11)             | NO   | PRI | 0       |       |
| num       | int(11)             | NO   |     | 0       |       |
| value_min | double              | NO   |     | 0       |       |
| value_avg | double              | NO   |     | 0       |       |
| value_max | double              | NO   |     | 0       |       |
+-----------+---------------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

MariaDB [zabbix]>

history テーブルに記録されたデータのトレンド用テーブル。
最大値、最小値、平均値にまとめる。

以下、Zabbix の公式より。

ヒストリが各収集値を保存するのに対して、トレンドでは1時間に1回、平均化された情報を保つため、リソースを節約することができます。

収集したデータを1時間分の最大値、最小値、平均値としてトレンド用のテーブルに記録し、ヒストリのテーブルからはデータを削除する、と理解。

trends_uint

  • カラムに設定されている value のデータ型: bigint(20) unsigned (符号なし整数 → 整数だけで 8 バイト(=64ビット)使用可能)
  • このテーブルの保存される Zabbix のアイテムのデータ型:数値(整数)
MariaDB [zabbix]> show columns from trends_uint;
+-----------+---------------------+------+-----+---------+-------+
| Field     | Type                | Null | Key | Default | Extra |
+-----------+---------------------+------+-----+---------+-------+
| itemid    | bigint(20) unsigned | NO   | PRI | NULL    |       |
| clock     | int(11)             | NO   | PRI | 0       |       |
| num       | int(11)             | NO   |     | 0       |       |
| value_min | bigint(20) unsigned | NO   |     | 0       |       |
| value_avg | bigint(20) unsigned | NO   |     | 0       |       |
| value_max | bigint(20) unsigned | NO   |     | 0       |       |
+-----------+---------------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

MariaDB [zabbix]>

history_int テーブルに記録されたデータのトレンド用テーブル。
最大値、最小値、平均値にまとめる。
Zabbix のデータのまとめ方は trends テーブルに記載した内容と同じと理解。