Перейти к основному содержанию
Хотите сохранять журналы аудита ClickHouse Cloud в Splunk? Следуйте руководству “Storing ClickHouse Cloud Audit logs into Splunk”.
Splunk — популярная платформа для безопасности и обсервабилити. Это также мощный движок для поиска и создания панелей мониторинга. Существуют сотни приложений Splunk для самых разных сценариев использования. Для ClickHouse мы используем Splunk DB Connect App, который обеспечивает простую интеграцию с высокопроизводительным JDBC-драйвером ClickHouse и позволяет выполнять запросы к таблицам в ClickHouse напрямую. Эта интеграция лучше всего подходит, когда ClickHouse используется для крупных источников данных, таких как NetFlow, бинарные данные Avro или Protobuf, DNS, журналы потоков VPC и другие журналы OTel, которыми можно делиться с командой через Splunk для поиска и создания панелей мониторинга. При таком подходе данные не поступают в слой индекса Splunk, а запрашиваются напрямую из ClickHouse — аналогично другим интеграциям для визуализации, таким как Metabase или Superset.

Цель​

В этом руководстве мы будем использовать JDBC-драйвер ClickHouse, чтобы подключить ClickHouse к Splunk. Мы установим локальную версию Splunk Enterprise, но не будем индексировать данные. Вместо этого воспользуемся функциями поиска через движок запросов DB Connect. С помощью этого руководства вы сможете создать панель мониторинга, подключенную к ClickHouse, примерно такую:
В этом руководстве используется набор данных New York City Taxi. Вы также можете использовать множество других наборов данных из нашей документации.

Предварительные требования

Перед началом работы вам потребуется:
  • Splunk Enterprise для работы с функциями search head
  • Установленная в ОС или контейнере Java Runtime Environment (JRE), соответствующая требованиям
  • Splunk DB Connect
  • Роль Admin или SSH-доступ к ОС экземпляра Splunk Enterprise
  • сведения о подключении к ClickHouse (см. здесь, если вы используете ClickHouse Cloud)

Установите и настройте DB Connect в Splunk Enterprise

Сначала необходимо установить Java Runtime Environment в вашем экземпляре Splunk Enterprise. Если вы используете Docker, можно воспользоваться командой microdnf install java-11-openjdk. Запишите путь java_home: java -XshowSettings:properties -version. Убедитесь, что в Splunk Enterprise установлено приложение DB Connect App. Его можно найти в разделе Apps в веб-интерфейсе Splunk:
  • Войдите в Splunk Web и перейдите в Apps > Find More Apps
  • Используйте поле поиска, чтобы найти DB Connect
  • Нажмите зелёную кнопку “Install” рядом со Splunk DB Connect
  • Нажмите “Restart Splunk”
Если у вас возникают проблемы с установкой DB Connect App, дополнительные инструкции см. по этой ссылке. После того как вы убедитесь, что DB Connect App установлен, добавьте путь java_home в DB Connect App в разделе Configuration -> Settings, затем нажмите save и reset.

Настройка JDBC для ClickHouse

Скачайте JAR-файл драйвера JDBC для ClickHouse и скопируйте его в папку 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, чтобы добавить сведения о классе JDBC-драйвера ClickHouse. Добавьте следующий блок в 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 командой $SPLUNK_HOME/bin/splunk restart. Вернитесь в DB Connect App и перейдите в Configuration > Settings > Drivers. Рядом с ClickHouse должен отображаться зеленый флажок:

Подключите поиск Splunk к ClickHouse

Перейдите в DB Connect App Configuration -> Databases -> Identities и создайте Identity для ClickHouse. Создайте новое подключение к ClickHouse через Configuration -> Databases -> Connections и выберите “New Connection”.
Добавьте данные хоста ClickHouse и убедитесь, что флажок “Enable SSL” установлен: После сохранения подключение ClickHouse к Splunk будет успешно настроено!
Если вы получаете ошибку, убедитесь, что IP-адрес вашего экземпляра Splunk добавлен в ClickHouse Cloud IP Access List. Подробнее см. в документации.

Выполните SQL-запрос

Теперь выполним SQL-запрос, чтобы проверить, что всё работает. В SQL Explorer выберите сведения о подключении в разделе DataLab приложения DB Connect App. В этом примере мы используем таблицу trips: Выполните SQL-запрос к таблице trips, который возвращает общее количество записей в таблице: Если запрос выполнен успешно, вы увидите результаты.

Создайте панель мониторинга

Давайте создадим панель мониторинга, в которой используется сочетание SQL и мощного языка Splunk Processing Language (SPL). Прежде чем продолжить, необходимо сначала отключить механизмы защиты DPL. Запустите следующий запрос, который показывает 10 районов, где чаще всего забирают пассажиров:
dbxquery query="SELECT pickup_ntaname, count(*) AS count
FROM default.trips GROUP BY pickup_ntaname
ORDER BY count DESC LIMIT 10;" connection="chc"
Выберите вкладку визуализации, чтобы увидеть созданную столбчатую диаграмму: Теперь создадим панель мониторинга: нажмите Save As > Save to a Dashboard. Давайте добавим ещё один запрос, который показывает среднюю стоимость поездки в зависимости от количества пассажиров.
dbxquery query="SELECT passenger_count,avg(total_amount)
FROM default.trips GROUP BY passenger_count;" connection="chc"
На этот раз давайте создадим столбчатую диаграмму и сохраним её на предыдущей панели мониторинга. Наконец, давайте добавим ещё один запрос, который показывает корреляцию между количеством пассажиров и длиной поездки:
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"
Наша итоговая панель мониторинга должна выглядеть так:

Данные временных рядов

В 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.
Последнее изменение 10 июня 2026 г.