Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Splunk と ClickHouse を接続する

ClickHouse対応

Splunk は、セキュリティとオブザーバビリティの分野で広く利用されている技術です。また、強力な検索およびダッシュボード作成エンジンでもあります。さまざまなユースケースに対応する Splunk アプリが数多く提供されています。

ClickHouse 向けには、Splunk DB Connect App を利用します。これは、高性能な ClickHouse JDBCドライバー とシンプルに連携でき、ClickHouse のテーブルを直接クエリできます。

このインテグレーションが特に適しているのは、NetFlow、Avro や Protobuf のバイナリデータ、DNS、VPC フローログ、その他の OTel ログといった大規模なデータソースに ClickHouse を使用し、それらを Splunk 上でチームと共有しながら検索やダッシュボード作成を行うケースです。この方法では、データは Splunk の索引レイヤーに取り込まれず、MetabaseSuperset などの可視化インテグレーションと同様に、ClickHouse に対して直接クエリされます。

目的​

このガイドでは、ClickHouse JDBCドライバーを使用して、ClickHouse を Splunk に接続します。Splunk Enterprise のローカル版をインストールしますが、データのインデックス化は行いません。代わりに、DB Connect のクエリエンジンを介して検索機能を使用します。

このガイドを使用すると、ClickHouse に接続された次のようなダッシュボードを作成できるようになります。

NYC タクシーデータの可視化を表示する Splunk ダッシュボード

前提条件

開始する前に、以下が必要です。

  • search head 機能を使用するための Splunk Enterprise
  • ご利用の OS またはコンテナーに、要件を満たす Java Runtime Environment (JRE) がインストールされていること
  • Splunk DB Connect
  • Splunk Enterprise が稼働する OS インスタンスへの管理者権限または SSH アクセス
  • ClickHouse の接続情報 (ClickHouse Cloud を使用している場合は こちら を参照)

Splunk Enterprise に DB Connect をインストールして設定する

まず、Splunk Enterprise のインスタンスに Java Runtime Environment をインストールする必要があります。Docker を使用している場合は、microdnf install java-11-openjdk コマンドを使用できます。

java_home のパスを控えておきます: java -XshowSettings:properties -version

DB Connect App が Splunk Enterprise にインストールされていることを確認してください。Splunk の web UI の Apps セクションで確認できます。

  • Splunk Web にログインし、Apps > Find More Apps に移動します
  • 検索ボックスで DB Connect を検索します
  • Splunk DB Connect の横にある緑色の「Install」ボタンをクリックします
  • 「Restart Splunk」をクリックします

DB Connect App のインストールで問題が発生した場合は、追加の手順について こちらのリンク を参照してください。

DB Connect App がインストールされていることを確認したら、Configuration -> Settings で DB Connect App に java_home のパスを追加し、save をクリックしてから reset をクリックします。

Java Home の設定を表示する Splunk DB Connect の設定ページ

ClickHouse 用の JDBC を設定する

ClickHouse JDBCドライバー JAR ファイルをダウンロードし、以下の場所にある DB Connect Drivers フォルダーにコピーします。

$SPLUNK_HOME/etc/apps/splunk_app_db_connect/drivers

DB Connect App で必要な依存関係をすべて利用できるようにするには、次のいずれかをダウンロードします。

- clickhouse-jdbc-<VERSION>-shaded-all.jar (if VERSION < 0.9.0)
- clickhouse-jdbc-<VERSION>-all-dependencies.jar (if VERSION >= 0.9.0)

次に、$SPLUNK_HOME/etc/apps/splunk_app_db_connect/local/db_connection_types.conf にある接続タイプ設定を編集し、ClickHouse JDBCドライバーのクラス詳細を追加する必要があります。db_connection_types.conf に次のスタンザを追加してください。

[ClickHouse]
displayName = ClickHouse
serviceClass = com.splunk.dbx2.DefaultDBX2JDBC
jdbcUrlFormat = jdbc:ch://<host>:<port>/<database>
jdbcUrlSSLFormat = jdbc:ch://<host>:<port>/<database>?ssl=true
jdbcDriverClass = com.clickhouse.jdbc.ClickHouseDriver
ui_default_catalog = $database$

$SPLUNK_HOME/bin/splunk restart を実行して Splunk を再起動します。

DB Connect App に戻り、Configuration > Settings > Drivers に移動します。ClickHouse の横に緑色のチェックマークが表示されているはずです。

ClickHouse ドライバーが正常にインストールされていることを示す Splunk DB Connect のドライバーページ

Splunk Search を ClickHouse に接続する

DB Connect App の Configuration -> Databases -> Identities に移動し、ClickHouse 用の Identity を作成します。

Configuration -> Databases -> Connections に移動し、"New Connection" を選択して、ClickHouse への新しい接続を作成します。

Splunk DB Connect の新規接続ボタン

ClickHouse のホスト情報を入力し、"Enable SSL" にチェックが入っていることを確認します。

ClickHouse 用の Splunk 接続設定ページ

接続を保存すると、ClickHouse と Splunk の接続は完了です。

SQLクエリを実行する

次に、すべてが正しく動作していることを確認するため、SQLクエリを実行します。

DB Connect App の DataLab セクションにある SQL Explorer で接続情報を選択します。このデモでは trips テーブルを使用します。

ClickHouse への接続を選択している Splunk SQL Explorer

trips テーブルに対して、テーブル内の全レコード数を返す SQLクエリを実行します。

trips テーブルのレコード数を表示する Splunk SQLクエリの実行

クエリが正常に実行されると、結果が表示されます。

ダッシュボードを作成する

SQL と強力な Splunk Processing Language (SPL) を組み合わせたダッシュボードを作成しましょう。

先に進む前に、まず DPL Safeguards を無効にする 必要があります。

次のクエリを実行して、乗車回数が最も多い地区の上位 10 件を表示します。

dbxquery query="SELECT pickup_ntaname, count(*) AS count
FROM default.trips GROUP BY pickup_ntaname
ORDER BY count DESC LIMIT 10;" connection="chc"

作成したカラムチャートを表示するには、[可視化] タブを選択します。

上位 10 件の乗車地域を示す Splunk のカラムチャートの可視化

次に、Save As > Save to a Dashboard をクリックしてダッシュボードを作成します。

乗客数に応じた平均運賃を表示する別のクエリを追加しましょう。

dbxquery query="SELECT passenger_count,avg(total_amount)
FROM default.trips GROUP BY passenger_count;" connection="chc"

今回は、棒グラフの可視化を作成し、前のダッシュボードに保存しましょう。

乗客数ごとの平均運賃を示すSplunkの棒グラフ

最後に、乗客数と移動距離の相関を示すクエリをもう1つ追加しましょう。

dbxquery query="SELECT passenger_count, toYear(pickup_datetime) AS year,
round(trip_distance) AS distance, count(* FROM default.trips)
GROUP BY passenger_count, year, distance
ORDER BY year, count(*) DESC; " connection="chc"

完成したダッシュボードは次のようになります。

NYCのタクシーデータを複数の可視化で表示した完成版のSplunkダッシュボード

時系列データ

Splunk には、ダッシュボードで時系列データを可視化・表示するために使える組み込み関数が数百用意されています。この例では、SQL と SPL を組み合わせて、Splunk で時系列データを扱えるクエリを作成します

dbxquery query="SELECT time, orig_h, duration
FROM "demo"."conn" WHERE time >= now() - interval 1 HOURS" connection="chc"
| eval time = strptime(time, "%Y-%m-%d %H:%M:%S.%3Q")
| eval _time=time
| timechart avg(duration) as duration by orig_h
| eval duration=round(duration/60)
| sort - duration:

詳細情報

Splunk DB Connect やダッシュボードの作成方法について詳しくは、Splunk documentationを参照してください。

Navigation