This is a translation of the original English documentation page. Help us make it better.

6 TimescaleDBのセットアップ

概要

ZabbixはTimescaleDBをサポートしています。これは、データを時間ベースのチャンクに自動的に分割するPostgreSQLベースのデータベースソリューションであり、大規模なパフォーマンスの高速化をサポートします。

現在TimescaleDBはZabbixプロキシではサポートされていません。

このページの手順は、TimescaleDBデータベースの作成、または既存のPostgreSQLテーブルからTimescaleDBへの移行に使用できます。

設定

前提条件: データベースサーバーにサポート対象バージョンのTimescaleDB拡張機能がインストールされている必要があります。インストール手順については、TimescaleDBのドキュメントをご覧ください。

次のコマンドを実行して、特定の DB に対して TimescaleDB 拡張機能を有効にする必要があります:

echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix

このコマンドを実行するには、データベース管理者権限が必要です。

'public' 以外のデータベース スキーマを使用する場合は、上記のコマンドに SCHEMA 句を追加する必要があります。 例:`echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix`

次に、postgresql/timescaledb/schema.sql スクリプトを実行します。新規インストールの場合、通常の PostgreSQL データベースが初期スキーマ/データを使用して作成された後にスクリプトを実行する必要があります。(データベースの作成 を参照)

cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix

TimescaleDBバージョン2.9.0以降でスクリプトschema.sqlを実行した際に、ベストプラクティスに従っていないことを通知する警告メッセージは無視してください。この警告に関係なく、構成は正常に完了します。

既存のヒストリ、トレンド、監査ログのデータ移行には長い時間がかかる場合があります。 移行期間中は、Zabbixサーバーとフロントエンドを停止する必要があります。

schema.sql スクリプトは、次のハウスキーピング パラメータを設定します。

  • アイテムのヒストリの保存期間設定を上書き
  • アイテムのトレンドの保存期間設定を上書き

ヒストリとトレンドの両方がパーティション化されている場合、ハウスキーパーを実行する為には両方のオプションを有効にする必要があります。また、ヒストリのみ、またはトレンドのみと個別に上書き有効にすることも可能です。

postgresql/timescaledb/schema.sql スクリプトは、次の 2 つの追加パラメータを設定します:

  • 圧縮の有効化
  • 7日以上経過したレコードを圧縮する

ハウスキーパーによって圧縮データを正しく削除するには、アイテムのヒストリの保存期間設定を上書きアイテムのトレンドの保存期間設定を上書きの両方のオプションを有効にする必要があります。上書きが無効で、テーブルに圧縮されたチャンクがある場合、ハウスキーパーはこれらのテーブルからデータを削除せず、データの保存期間およびシステム情報セクションに誤った設定に関する警告が表示されます。

これらのパラメータはすべて、インストール後に 管理データの保存期間 で変更できます。

TimescaleDB が提供する timescaledb-tune ツールを実行して、postgresql.conf の PostgreSQL 構成パラメーターを最適化することができます。

TimescaleDB スキーマのアップグレード

Zabbix を新しい TimescaleDB ハイパーテーブルを含むバージョンにアップグレードする場合、Zabbix サーバーはそれらのハイパーテーブルを自動的に構成しません(例えば、Zabbix 6.4 から 7.0.3 にアップグレードする場合、バージョン 7.0.0 および 7.0.2 では新しいハイパーテーブルが導入されているため)。

新しい TimescaleDB ハイパーテーブルを構成するには、次の手順に従います:

  1. Zabbix サーバーを起動します。これにより、既存のデータベースがアップグレードされます。
  2. サーバーログファイルでデータベースのアップグレードが完了したことを確認します。完了したら、Zabbix サーバーを停止します。ハイパーテーブルではないテーブルに対して圧縮を有効にしようとすると、サーバーは警告をログに記録することに注意してください。
  3. postgresql/timescaledb/schema.sql スクリプトを実行します。これにより、新しい TimescaleDB ハイパーテーブルが設定されます。Zabbix 7.0.0 以降、スクリプトの場所と名前が postgresql/timescaledb.sql から postgresql/timescaledb/schema.sql に変更されていることに注意してください。

TimescaleDBバージョン2.9.0以降でスクリプトschema.sqlを実行した際に、ベストプラクティスに従っていないことを通知する警告メッセージは無視してください。この警告に関係なく、構成は正常に完了します。

TimescaleDB 圧縮

TimescaleDBハイパーテーブルであるすべてのZabbixテーブルでは、ネイティブのTimescaleDB圧縮がサポートされています。TimescaleDBへのアップグレードまたは移行中は、大きなテーブルの初期圧縮に時間がかかる場合があります。

圧縮は"timescale"Timescale Communityライセンスではサポートされており、"apache"Apache 2.0ライセンスではサポートされていないことにご注意ください。Zabbixが圧縮がサポートされていないことを検出すると、Zabbixサーバーログに警告メッセージが書き込まれ、ユーザーはフロントエンドで圧縮を有効化できなくなります。

圧縮を使用する前に、TimescaleDB ドキュメントで圧縮について理解しておくことをお勧めします。

圧縮には特定の制限があることに注意してください。具体的には次のとおりです:

  • 圧縮されたチャンクの変更 (挿入、削除、更新) は許可されません
  • 圧縮されたテーブルのスキーマの変更は許可されません。

圧縮設定は、Zabbix フロントエンドの 管理データの保存期間 セクションの ヒストリ、トレンド、監査ログの圧縮 ブロックで変更できます。

パラメータ デフォルト コメント
圧縮を有効にする 有効 チェックボックスをオン/オフにしても、圧縮はすぐに有効/無効にはなりません。圧縮はハウスキーパーによって処理されるため、変更は最大でHousekeepingFrequency時間(zabbix_server.confで設定) x 2時間後に有効になります。

圧縮を無効にすると、圧縮期間に含まれる新しいチャンクは圧縮されなくなります。ただし、以前に圧縮されたデータはすべて圧縮されたままになります。以前に圧縮されたチャンクを解凍するには、TimescaleDBドキュメントの手順に従ってください。

TimescaleDBをサポートする以前のバージョンのZabbixからアップグレードする場合、圧縮はデフォルトで有効になりません。
次よりも古いものはレコードを圧縮 7d このパラメーターは 7 日未満にすることはできません。

圧縮されたチャンクの不変性により、この値よりも古いすべての遅延データ (プロキシによって遅延されたデータなど) は削除されます。