O Splunk é uma plataforma popular para segurança e observabilidade. Também é um poderoso mecanismo de busca e criação de dashboards. Há centenas de aplicativos do Splunk disponíveis para atender a diferentes casos de uso.
Para o ClickHouse especificamente, usamos o Splunk DB Connect App, que oferece uma integração simples com o ClickHouse JDBC driver de alto desempenho para consultar tabelas diretamente no ClickHouse.
O caso de uso ideal para essa integração é quando você usa o ClickHouse com grandes fontes de dados, como dados binários de NetFlow, Avro ou Protobuf, DNS, logs de fluxo de VPC e outros logs do OTel, que podem ser compartilhados com sua equipe no Splunk para pesquisa e criação de dashboards. Com essa abordagem, os dados não são ingeridos na camada de índice do Splunk; em vez disso, são consultados diretamente no ClickHouse, de forma semelhante a outras integrações de visualização, como Metabase ou Superset.
Objetivo
Neste guia, usaremos o ClickHouse JDBC driver para conectar o ClickHouse ao Splunk. Vamos instalar uma versão local do Splunk Enterprise, mas sem indexar nenhum dado. Em vez disso, usaremos as funções de busca por meio do mecanismo de consulta do DB Connect.
Com este guia, você poderá criar um dashboard conectado ao ClickHouse semelhante a este:

Pré-requisitos
Antes de começar, você precisará de:
- Splunk Enterprise para usar as funções do search head
- requisitos do Java Runtime Environment (JRE) instalados no seu sistema operacional ou contêiner
- Splunk DB Connect
- acesso de Admin ou SSH à instância do sistema operacional do Splunk Enterprise
- detalhes de conexão do ClickHouse (veja aqui se você estiver usando o ClickHouse Cloud)
Instale e configure o DB Connect no Splunk Enterprise
Primeiro, você precisa instalar o Java Runtime Environment na sua instância do Splunk Enterprise. Se estiver usando Docker, pode usar o comando microdnf install java-11-openjdk.
Anote o caminho de java_home: java -XshowSettings:properties -version.
Verifique se o DB Connect App está instalado no Splunk Enterprise. Você pode encontrá-lo na seção Apps da interface web do Splunk:
- Faça login no Splunk Web e acesse Apps > Find More Apps
- Use a caixa de busca para localizar o DB Connect
- Clique no botão verde "Install" ao lado de Splunk DB Connect
- Clique em "Restart Splunk"
Se estiver com problemas para instalar o DB Connect App, consulte este link para obter instruções adicionais.
Depois de confirmar que o DB Connect App está instalado, adicione o caminho java_home ao DB Connect App em Configuration -> Settings e clique em save e depois em reset.

Configure o JDBC para o ClickHouse
Baixe o arquivo JAR do ClickHouse JDBC driver e copie-o para a pasta DB Connect Drivers em:
$SPLUNK_HOME/etc/apps/splunk_app_db_connect/driversPara garantir que todas as dependências necessárias estejam disponíveis para o DB Connect App, baixe uma das seguintes opções:
- clickhouse-jdbc-<VERSION>-shaded-all.jar (if VERSION < 0.9.0)
- clickhouse-jdbc-<VERSION>-all-dependencies.jar (if VERSION >= 0.9.0)Em seguida, você deve editar a configuração dos tipos de conexão em $SPLUNK_HOME/etc/apps/splunk_app_db_connect/local/db_connection_types.conf para adicionar os detalhes da classe do ClickHouse JDBC driver. Adicione a seguinte seção a 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$Reinicie o Splunk usando $SPLUNK_HOME/bin/splunk restart.
Volte ao DB Connect App e acesse Configuration > Settings > Drivers. Você deverá ver um ícone de confirmação verde ao lado de ClickHouse:

Conecte a busca do Splunk ao ClickHouse
Navegue até DB Connect App Configuration -> Databases -> Identities e crie uma identidade para o seu ClickHouse.
Crie uma nova conexão com o ClickHouse em Configuration -> Databases -> Connections e selecione "New Connection".

Adicione os detalhes do host do ClickHouse e verifique se "Enable SSL" está marcado:

Depois de salvar a conexão, você terá conectado com sucesso o Splunk ao ClickHouse!
Execute uma consulta SQL
Agora vamos executar uma consulta SQL para testar se tudo está funcionando.
Selecione os detalhes da conexão no SQL Explorer, na seção DataLab do DB Connect App. Estamos usando a tabela trips nesta demonstração:

Execute uma consulta SQL na tabela trips que retorne a contagem de todos os registros da tabela:

Se a consulta for bem-sucedida, você verá os resultados.
Criar um dashboard
Vamos criar um dashboard que usa uma combinação de SQL com a poderosa Splunk Processing Language (SPL).
Antes de prosseguir, primeiro você precisa desativar as proteções do DPL.
Execute a seguinte consulta, que mostra os 10 bairros com maior frequência de coletas:
dbxquery query="SELECT pickup_ntaname, count(*) AS count
FROM default.trips GROUP BY pickup_ntaname
ORDER BY count DESC LIMIT 10;" connection="chc"Selecione a aba de visualização para ver o gráfico de colunas criado:

Agora, vamos criar um dashboard clicando em Save As > Save to a Dashboard.
Vamos adicionar outra consulta que mostra a tarifa média com base no número de passageiros.
dbxquery query="SELECT passenger_count,avg(total_amount)
FROM default.trips GROUP BY passenger_count;" connection="chc"Desta vez, vamos criar uma visualização em gráfico de barras e salvá-la no dashboard anterior.

Por fim, vamos adicionar mais uma consulta que mostra a correlação entre o número de passageiros e a distância da corrida:
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"Nosso dashboard final deve ficar assim:

Dados de séries temporais
O Splunk tem centenas de funções integradas que os dashboards podem usar para visualizar e apresentar dados de séries temporais. Este exemplo combina SQL + SPL para criar uma consulta que funcione com dados de séries temporais no 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:Saiba mais
Se quiser saber mais sobre o Splunk DB Connect e como criar dashboards, consulte a documentação do Splunk.