こんにちは。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 --versionClickHouse 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アカウントを開設しました!★




