Перейти к основному содержанию
Перейти к основному содержанию

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

ClickHouse Supported
Совет

Хотите сохранять журналы аудита ClickHouse в 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, похожую на эту:

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

В этом руководстве используется набор данных такси города Нью-Йорк. В нашей документации есть и многие другие наборы данных, которые вы можете использовать.

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

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

  • Splunk Enterprise для использования функций поискового узла (search head)
  • Установленный в вашей ОС или контейнере Java Runtime Environment (JRE), удовлетворяющий требованиям
  • Splunk DB Connect
  • Административный или 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.

Убедитесь, что приложение DB Connect установлено в Splunk Enterprise. Его можно найти в разделе Apps веб-интерфейса Splunk:

  • Войдите в Splunk Web и перейдите в Apps > Find More Apps
  • Используйте поле поиска, чтобы найти DB Connect
  • Нажмите зелёную кнопку "Install" рядом с Splunk DB Connect
  • Нажмите "Restart Splunk"

Если у вас возникают проблемы с установкой приложения DB Connect, обратитесь к этой странице за дополнительными инструкциями.

После того как вы убедились, что приложение DB Connect установлено, добавьте путь к java_home в приложение DB Connect в разделе Configuration -> Settings, затем нажмите "Save" и "Reset".

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

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

Скачайте драйвер ClickHouse JDBC в папку DB Connect Drivers, например:

$SPLUNK_HOME/etc/apps/splunk_app_db_connect/drivers

Затем необходимо отредактировать конфигурацию типов подключений в $SPLUNK_HOME/etc/apps/splunk_app_db_connect/default/db_connection_types.conf, чтобы добавить сведения о классе драйвера JDBC для ClickHouse.

Добавьте в файл следующий раздел:

[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 и перейдите в 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!

Примечание

Если вы получили ошибку, убедитесь, что добавили IP-адрес вашего экземпляра Splunk в список ClickHouse Cloud IP Access List. Для получения дополнительной информации смотрите документацию.

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

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

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

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

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

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

Если запрос выполнен успешно, вы должны увидеть результат.

Создайте дашборд

Давайте создадим дашборд, который использует сочетание 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"

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

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

Теперь создадим дашборд, нажав Save As > Save to 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"

В итоге наш дашборд должен выглядеть так:

Final Splunk dashboard with multiple visualizations of NYC taxi data

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

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