Zabbix 8.0の新機能! ClickHouseをインストールしてヒストリデータを保存してみた

こんにちは。SCSKの上田です。

この度、Zabbix8.0のRC版がリリースされました!

弊社でも、来るべきZabbix 8.0LTSのリリースに向けて、RC版を使った検証を行っています。

今回は、Zabbix 8.0 で新たにサポートされた、ClickHouseとの連携 を試してみました。

Zabbix 8.0 では、監視データ(ヒストリ)の保存先として、従来の MySQL / PostgreSQL に加えて ClickHouse を選択できるようになりました。 大規模環境では、ヒストリデータの肥大化によるDB負荷が悩みの種になりがちですが、ClickHouse を使うことでその課題を解決できるかもしれません。

本記事では、実際に Zabbix 8.0 RC1 環境に ClickHouse をインストールし、連携するまでの手順をご紹介します。
これから Zabbix 8.0 を検証しようと考えている方は、是非ご覧ください。

ClickHouseとは?

ClickHouse とは、大量データの集計・分析に強い、オープンソースのカラム指向型データベースです。

一般的なRDB(MySQLなど)は「行単位」でデータを保存しますが、ClickHouse は「列単位」でデータを保存します。 そのため、以下のような特徴があります。

  • 大量データに対する集計クエリが高速
  • データの圧縮効率が高く、ストレージを節約できる
  • TTL(保存期間) をテーブル単位で設定でき、古いデータを自動削除できる

「時刻+アイテムID+値」という形で、ひたすら大量に溜まっていく Zabbix のヒストリデータとは、とても相性が良いと言えます。

Zabbix 8.0 では、ホストやアイテム、トリガーなどの設定情報(メタデータ)は従来通り MySQL に、ヒストリデータは ClickHouse に、という役割分担の構成を取ることができます。

 

検証環境

今回の検証環境は以下の通りです。AWS の EC2 上に構築しています。

項目 バージョン
OS Red Hat Enterprise Linux 9.7
Zabbix Server 8.0.0 RC1
MySQL 8.4.6
PHP 8.2.33
ClickHouse 26.4.5.143

※Zabbix 8.0 RC1 は MySQL で構築済みの状態からスタートしています。

 

事前の注意点(バージョン要件)

いきなりですが、ここが一番大事なポイントです。

Zabbix 8.0 RC1 がサポートしている ClickHouse のバージョンは 26.4系 です。
特に意識せずに最新版の ClickHouse をインストールすると、Zabbix サーバーが起動しません。

バージョン サポート
26.4.1 ~ 26.4.5 ✅ サポート対象
26.5 以降(26.9 など) ❌ 非サポート

というわけで、本記事ではバージョンを指定してインストールしていきます。

 

構築手順

それでは、ここから実際の構築手順を説明します。

Step1:ClickHouseリポジトリの追加

ClickHouseは、公式手順を参考にインストールしていきます。

まずは、ClickHouse の公式リポジトリを追加します。

# yum-utilsのインストール
dnf install -y yum-utils

# ClickHouse公式リポジトリを追加
yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo

Step2:ClickHouseのインストール

リポジトリを追加したら、インストール可能な 26.4系のバージョンを確認します。

dnf list available clickhouse-server --showduplicates | grep "26\.4" 

clickhouse-server.x86_64             26.4.1.1141-1             clickhouse-stable
clickhouse-server.x86_64             26.4.2.10-1               clickhouse-stable
clickhouse-server.x86_64             26.4.3.37-1               clickhouse-stable
clickhouse-server.x86_64             26.4.4.38-1               clickhouse-stable
clickhouse-server.x86_64             26.4.5.143-1              clickhouse-stable

26.4系の最新である 26.4.5.143 を、バージョン指定でインストールします。

dnf install -y clickhouse-server-26.4.5.143-1 clickhouse-client-26.4.5.143-1

インストール後、バージョンを確認しておきましょう。

clickhouse-server --version

ClickHouse server version 26.4.5.143 (official build).

ちゃんと 26.4.5 が入っていますね。

Step3:ClickHouseの起動

サービスを起動し、自動起動も設定しておきます。

systemctl start clickhouse-server
systemctl enable clickhouse-server

クライアントから接続確認も行います。

clickhouse-client --query "SELECT version()"

26.4.5.143

Step4:データベースとユーザーの作成

次に、Zabbix 用のデータベースとユーザーを作成します。 clickhouse-client で対話モードに入り、以下を順に実行します。

clickhouse-client --user default
-- データベース作成
CREATE DATABASE IF NOT EXISTS zabbix;

-- Zabbixユーザー作成(パスワードは適宜変更してください)
CREATE USER IF NOT EXISTS zabbix IDENTIFIED WITH sha256_password BY 'zabbix_ch_password';

-- 権限付与
GRANT CREATE, ALTER, DROP, INSERT, SELECT, UPDATE, OPTIMIZE ON zabbix.* TO zabbix;

作成できたか確認してみます。

SHOW DATABASES;

   ┌─name───────────────┐
1. │ INFORMATION_SCHEMA │
2. │ default            │
3. │ information_schema │
4. │ system             │
5. │ zabbix             │
   └────────────────────┘

データベース・ユーザーともに作成されていることが確認できました。

Step5:スキーマのインポート

続いて、ヒストリデータを格納するテーブルを作成します。
Zabbix 8.0 では、ClickHouse 用のスキーマ作成スクリプトが zabbix-sql-scripts パッケージに同梱されています。

cd /usr/share/zabbix/sql-scripts/clickhouse/
ll

-rw-r--r-- 1 root root 1560 10月  5 23:53 clickhouse.sh
-rwxr-xr-x 1 root root  239 10月  5 23:53 history_all.sh
-rwxr-xr-x 1 root root  462 10月  5 23:53 history_json_schema.sh
-rwxr-xr-x 1 root root  513 10月  5 23:53 history_log_schema.sh
-rwxr-xr-x 1 root root  436 10月  5 23:53 history_schema.sh
-rwxr-xr-x 1 root root  443 10月  5 23:53 history_str_schema.sh
-rwxr-xr-x 1 root root  445 10月  5 23:53 history_text_schema.sh
-rwxr-xr-x 1 root root  445 10月  5 23:53 history_uint_schema.sh

history_all.sh を実行すると、値の型ごとの6つのスクリプトがまとめて実行される仕組みになっています。 

TTL は検証用のため、7日間(604800秒) を指定して実行します。

./history_all.sh \
  --user zabbix \
  --password zabbix_ch_password \
  --db zabbix \
  --server http://localhost:8123 \
  --ttl 604800

テーブルが作成されたか確認します。

clickhouse-client \
  --user zabbix \
  --password zabbix_ch_password \
  --query "SHOW TABLES FROM zabbix"

history
history_json
history_log
history_str
history_text
history_uint

6つのテーブルが作成されました!

Step6:Zabbixサーバーの設定

ここからは Zabbix 側の設定です。 Zabbix 8.0 では、新しく HistoryProvider というパラメータが追加されています。 従来の HistoryStorageURL や HistoryStorageTypes は Deprecated(非推奨) となり、HistoryProvider に統合されました。

設定ファイル内のコメントを見ると、書式は <provider>[;<options>] となっており、provider には sql(デフォルト)、elasticsearch、clickhouse が指定できます。 ClickHouse と Elasticsearch を値の型ごとに使い分ける、といった構成も可能なようです。

今回は、すべての値の型を ClickHouse に保存する設定を追記します。

HistoryProvider=clickhouse;value_types="uint,dbl,str,log,text,json",url=http://localhost:8123,db=zabbix,username=zabbix,password=zabbix_ch_password

設定が反映されたか確認し、Zabbix サーバーを再起動します。

systemctl restart zabbix-server

Step7:Zabbix Webインターフェースの設定

最後に、Web 画面側の設定です。 Zabbix サーバーだけでなく、フロントエンドにも ClickHouse の接続先を設定する必要があるので、忘れないようにしましょう。 これを設定しないと、データは ClickHouse に保存されているのに、画面には何も表示されない…という状態になります。

ファイル内にコメントアウトされた設定例があるので、それを参考に以下を追記します。

$HISTORY_PROVIDERS[] = [
    'types' => ['uint','dbl','str','log','text','json'],
    'provider' => 'clickhouse',
    'url' => 'http://localhost:8123',
    'db' => 'zabbix',
    'username' => 'zabbix',
    'password' => 'zabbix_ch_password'
];

保存したら Apache を再起動します。

systemctl restart httpd

これで設定は完了です!

 

動作確認

それでは、実際に ClickHouse にデータが保存されているか確認してみます。 各テーブルのレコード数を確認します。

for table in history history_uint history_str history_log history_text history_json; do
    echo "=== $table ==="
    clickhouse-client --user zabbix --password zabbix_ch_password \
        --query "SELECT count(*) FROM zabbix.$table"
done
=== history ===
449
=== history_uint ===
159
=== history_str ===
1
=== history_log ===
0
=== history_text ===
12
=== history_json ===
0

データが入っています! (history_log と history_json は、該当する型のアイテムを監視していないため 0件です)

あとは Web 画面の [監視データ]→[最新データ] から、値やグラフが正常に表示されることを確認できれば完了です。

 

まとめ

今回は、Zabbix 8.0 RC1 に ClickHouse をインストールし、ヒストリデータの保存先として連携する方法をご紹介しました。

ポイントをまとめると、以下の通りです。

  • ClickHouse は 26.4系をバージョン指定でインストールする
  • スキーマは同梱の history_all.sh で一括作成でき、TTLも指定可能
  • Zabbix サーバー側は新パラメータ HistoryProvider で設定する
  • Webインターフェース側($HISTORY_PROVIDERS)の設定も忘れずに

MySQL で運用している環境に後から追加できるのも、嬉しいポイントですね。

今回はあくまで「連携してみた」までですが、ClickHouse の真価は大量データでの性能にあります。 今後は、MySQL との性能比較など、もう少し踏み込んだ検証もやってみたいと思います。

 

最後に

SCSKでは、Zabbixのプレミアムパートナーとして、導入構築から運用保守まで幅広くサポートしております。 Zabbix 8.0 へのバージョンアップや、ClickHouse を活用した大規模監視環境の構築をご検討の際は、是非お気軽にご相談ください。

最後まで読んでいただき、ありがとうございました。


弊社ではZabbix関連サービスを展開しています。以下ページもご参照ください。

★Zabbixの基礎をまとめたeBookを公開しております!★

★SCSK Plus サポート for Zabbix★

★YouTubeに、SCSK Zabbixチャンネルを開設しました!★

★X(旧Twitter)に、SCSK Zabbixアカウントを開設しました!★

著者について

主にZabbixの構築案件を担当しています。過去にネットワーク構築も経験していました。

上田太一をフォローする

クラウドに強いによるエンジニアブログです。

SCSKでは、自社クラウドと3大メガクラウドの強みを活かし、ハイブリッドクラウド/マルチクラウドのソリューションを展開しています。業界の深い理解をもとに、お客様の業務要件に最適なアーキテクチャをご提案いたします。サービスサイトでは、お客様のDX推進をワンストップで支援するサービスの詳細や導入事例を紹介しています。

Zabbix
シェアする
×
タイトルとURLをコピーしました