Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Подключение Splunk к ClickHouse

Поддерживается в ClickHouse

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, примерно такую:

Панель мониторинга Splunk с визуализациями данных о такси Нью-Йорка

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

Перед началом работы вам потребуется:

  • 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.

Страница настроек Splunk DB Connect с конфигурацией Java Home

Настройка 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 DB Connect, где показано, что драйвер ClickHouse успешно установлен

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

Перейдите в DB Connect App Configuration -> Databases -> Identities и создайте Identity для ClickHouse.

Создайте новое подключение к ClickHouse через Configuration -> Databases -> Connections и выберите "New Connection".

Кнопка создания нового подключения в Splunk DB Connect

Добавьте данные хоста ClickHouse и убедитесь, что флажок "Enable SSL" установлен:

Страница настройки подключения Splunk к ClickHouse

После сохранения подключение ClickHouse к Splunk будет успешно настроено!

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

Теперь выполним SQL-запрос, чтобы проверить, что всё работает.

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

SQL Explorer в Splunk: выбор подключения к ClickHouse

Выполните SQL-запрос к таблице trips, который возвращает общее количество записей в таблице:

Выполнение SQL-запроса в Splunk с отображением количества записей в таблице 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"

Выберите вкладку визуализации, чтобы увидеть созданную столбчатую диаграмму:

Визуализация столбчатой диаграммы в Splunk, показывающая 10 районов с наибольшим числом посадок

Теперь создадим панель мониторинга: нажмите Save As > Save to a Dashboard.

Давайте добавим ещё один запрос, который показывает среднюю стоимость поездки в зависимости от количества пассажиров.

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

На этот раз давайте создадим столбчатую диаграмму и сохраним её на предыдущей панели мониторинга.

Столбчатая диаграмма в Splunk, показывающая среднюю стоимость поездки в зависимости от количества пассажиров

Наконец, давайте добавим ещё один запрос, который показывает корреляцию между количеством пассажиров и длиной поездки:

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 с несколькими визуализациями данных о такси в Нью-Йорке

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

В 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.

Navigation