Meu primeiro Lab com splunk
Tags: log, splunk
Published: 2023-04-06 00:16:33

Recentemente (não tão recente assim hehehehehe), comecei a trabalhar com logs, sendo mais específica, com uma ferramenta enterprise chamada **Splunk**. Particularmente, nunca tinha escutado falar dessa ferramenta até começar a trabalhar com ela. Então, gostaria de compartilhar um pouco do que aprendi até agora e minhas percepções

No futuro, devo explorar outras arquiteturas e ferramentas, mas não vou criar muitas expectativas, padawan. 

---

## Legal, mas o que é Splunk?
Splunk é uma ferramenta criada por uma empresa de mesmo nome (acho esquisito, não posso negar) em 2003 que permite coletar, indexar, pesquisar e visualizar logs para ajudar na investigação de um problema ou até mesmo auxiliar na tomada de decisão de alguma forma.
Atualmente, o Splunk é oferecido em duas versões, Enterprise e Cloud. Na primeira, você fica responsável por manter a infra da coisa toda e na segunda, a ferramenta é oferecida como SAAS.

Neste post, utilizaremos a versão Enterprise, e por ser uma ferramenta paga, existem algumas limitações para realizar testes, começando pelo download do produto. Oficialmente, você só consegue uma versão para download criando uma conta nesse link [aqui](https://www.splunk.com/en_us/download/splunk-enterprise.html).
Na licença de teste, você pode usar o produto por 60 dias, indexando no máximo **500MB** por dia. Outra opção interessante é solicitar a licença de desenvolvedor seguindo os passos desse [guia](https://dev.splunk.com/enterprise/dev_license/), pois ela tem limites maiores.

## Como esse négocio funciona?

Splunk pode ser entendido de alguma forma como um monolito modular, pois consiste em um único processo chamado **_splunkd_**, que pode assumir diferentes funções, dependendo de como é configurado/iniciado.

Por ser um contéudo introdutório eu vou focar nos três principais componentes do splunk, sendo eles:

### Indexer
Responsável pelo recebimento e indexação dos logs. Nele, é possível definir políticas de retenção para que os logs antigos possam ser armazenados ou excluídos de acordo com as necessidades do negócio, definir o número de cópias que irei armazenar daquele dado, entre outros

### Search Head
Responsável pela visualização dos logs armazenados na indexer. Através da sua interface web, é possível realizar queries utilizando o SPL (linguagem de consulta proprietária da Splunk) e transformar os resultados em reports e dashboards. Além disso, a search head também gerencia as credenciais de usuário.

### Fowarder
Responsável por coletar os logs e enviar para a indexer. Geralmente, é instalado nos servidores para realizar a coleta dos logs de arquivos e eventos do sistema operacional. Além disso, o forwarder permite filtrar os dados coletados antes do envio para a indexer, diminuindo o custo de processamento das indexers.

## Arquitetura

Aqui eu vou focar nas duas principais maneiras de deployar o splunk na prática sem muita firula...

É possível realizar a instalação de duas formas, stadandalone e distribuída, na primeira delas uma única máquina reliza as funções de indexer e search head, na segunda temos um desenho um pouco mais denso onde criamos cluster's para separar as funções.

Nesse post vamos abordar a instalação standalone, só para fins educativos mesmo.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/enz8amz9pxekdlaalel2.gif)

Eu criei um vagrantfile e disponibilizei em um repo para relizar esses testes e vou utilizar ele nesse post para faciliar o deploy, portanto você precisa ter o virtualbox e o vagrant instalados.

> **Aviso**: Você vai precisar da url de download do splunk enterprise e splunk fowarder para seguir. Você pode conseguir as url's se cadastrando nesse [link](https://www.splunk.com/en_us/download/splunk-enterprise.html)


1 - Clone o repo
```shell
git clone https://github.com/LanusseMorais/splunk.git
```
2 - Adicione asURL's de download do pacotes RPM do splunk enterprise e splunk fowarder no arquivo standalone/Vagranfile
```shell
cd splunk/standalone
vim Vagranfile
```

3 - Agora vamos ver a mágica acontecer 
``` shell
vagrant up
```
4 - Agora acesse o seu splunk atráves da url http://192.168.165.30:8000/ usando as credencias abaixo:
username: admin
password: splunk@123 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/65rtis8behs4yqxuoq4t.png)

Esse repo também sobe uma aplicação simples que pode ser acessada através da url http://192.168.165.40

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cmmvoxvh7jw6jzkid3jx.gif)

Você já deve ser capaz de ver os logs da aplicação no splunk.

usando a pesquisa abaixo: 
index="main"

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xb8y1lwrl8fd2e8ct516.png)


Agora seja feliz com seu primeiro splunk em uma outra postagem eu posso abordar mais informações, ou quem sabe outras ferramentas.