Comece com o Parseable, uma plataforma de armazenamento de log e observabilidade de código aberto
Escrito em Rust, o Parseable aproveita a compactação de dados, o armazenamento e os avanços de rede para trazer uma plataforma de registro simples e eficiente que simplesmente funciona.
Os dados de log são um dos segmentos de crescimento mais rápido no armazenamento de dados. É também um dos espaços mais complicados. Existem vários produtos e soluções com casos de uso sobrepostos e marketing confuso.
Este artigo analisa o Parseable, uma plataforma de armazenamento e observabilidade de logs. Parseable é voltado para uma melhor experiência do usuário, com uma interface fácil de implantar e usar e uma arquitetura simples e nativa da nuvem. Também mostrarei como configurar o Parseable com FluentBit para armazenar logs.
O que é analisável?
Parseable é uma plataforma gratuita e de código aberto para armazenamento e observabilidade de logs. Escrito em Rust, o Parseable aproveita a compactação de dados, o armazenamento e os avanços de rede para trazer uma plataforma de registro simples e eficiente que simplesmente funciona.
Alguns conceitos básicos para construir o Parseable são:
Indexação gratuita
Tradicionalmente, mecanismos de pesquisa de texto como o Elastic também serviram como plataformas de armazenamento de logs. Isso faz sentido porque os dados de log devem ser pesquisados para serem realmente úteis. Mas a indexação tem um custo alto. Faz uso intensivo da CPU e retarda a ingestão. Além disso, os dados de índice gerados por esses sistemas são da mesma ordem de armazenamento que os dados brutos de log. Isso dobra o custo de armazenamento e aumenta a complexidade. Analisável muda isso. Com formatos de dados colunares (parquet), é possível compactar e consultar os dados de log de forma eficiente, sem indexá-los.
Propriedade de dados e conteúdo
Com parquet como formato de armazenamento e armazenado em buckets de armazenamento de objetos padrão, os usuários possuem seus dados de log e têm acesso completo ao conteúdo real. Isso significa que os usuários podem usar facilmente ferramentas de análise como Spark, Presto ou TensorFlow para extrair mais valor dos dados. Esse recurso é extremamente poderoso, abrindo novos caminhos para análise de dados.
Esquema fluido
Os logs são geralmente semiestruturados por natureza e estão em constante evolução. Por exemplo, um desenvolvedor pode começar com um esquema de log como este:
{
"Status": "Ready",
"Application": "Example"
}
Mas à medida que mais informações são coletadas, o esquema de log pode evoluir para:
{
"Status": "Ready",
"Application": {
"UserID": "3187F492-8449-4486-A2A0-015AE34F1D09",
"Name": "Example"
}
}
As equipes de engenharia e SRE enfrentam regularmente problemas relacionados a esquemas. Parseable resolve isso com uma abordagem de esquema fluida que permite aos usuários alterar o esquema dinamicamente.
Ingestão simples
O atual mecanismo de ingestão para plataformas de log é bastante complicado, com vários protocolos e conectores disponíveis. Parseable visa tornar a ingestão de log o mais fácil possível. O resultado é que você pode usar chamadas HTTP POST para enviar logs para Parseable. Não são necessários SDKs complicados.
E se você quiser usar um agente de registro como FluentBit, Vector, LogStash ou outros? Quase todos os principais coletores de log suportam HTTP, portanto o Parseable já é compatível com seu agente de coleta de log favorito.
iniciar
Você pode usar uma imagem Docker para testar o Parseable. Esta imagem mostra o Parseable em modo de demonstração, usando armazenamento de objetos acessível ao público.
$ cat << EOF > parseable-env
P_S3_URL=https://minio.parseable.io:9000
P_S3_ACCESS_KEY=minioadmin
P_S3_SECRET_KEY=minioadmin
P_S3_REGION=us-east-1
P_S3_BUCKET=parseable
P_LOCAL_STORAGE=/data
P_USERNAME=parseable
P_PASSWORD=parseable
EOF
$ mkdir -p /tmp/data
$ docker run \
-p 8000:8000 \
--env-file parseable-env \
-v /tmp/data:/data \
parseable/parseable:latest
Faça login na IU do Parseable usando as credenciais passadas aqui (que são parseable
e parseable
.) A demonstração já contém alguns dados porque o Parseable está apontando para o bucket aberto publicamente.
Certifique-se de alterar o bucket e as credenciais da sua instância de armazenamento de objetos antes de enviar quaisquer dados para o Parseable.
Consulte a documentação para entender como o Parseable funciona e como ingerir logs.
Configure o FluentBit para enviar logs para Parseable
Você pode usar um arquivo de composição do Docker para configurar o Parseable e o FluentBit, facilitando a configuração e a desmontagem conforme necessário.
Primeiro, salve este arquivo como fluent-bit.conf
em um diretório. O arquivo é a configuração usada para enviar dados ao Parseable.
[SERVICE]
Flush 5
Daemon Off
Log_Level debug
[INPUT]
Name dummy
Tag dummy
[OUTPUT]
Name http
Match *
Host parseable
http_User parseable
http_Passwd parseable
format json
Port 8000
Header X-P-META-meta1 value1
Header X-P-TAG-tag1 value1
URI /api/v1/logstream/fluentbit1
Json_date_key timestamp
Json_date_format iso8601
Agora salve o seguinte arquivo como docker-compose.yaml
no mesmo diretório acima:
version: "3.7"
services:
fluent-bit:
image: fluent/fluent-bit
volumes:
- ./fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf
depends_on:
- parseable
parseable:
image: parseable/parseable
ports:
- "8000:8000"
environment:
- P_S3_URL=https://minio.parseable.io:9000
- P_S3_ACCESS_KEY=minioadmin
- P_S3_SECRET_KEY=minioadmin
- P_S3_REGION=us-east-1
- P_S3_BUCKET=parseable
- P_LOCAL_STORAGE=/tmp/data
- P_USERNAME=parseable
- P_PASSWORD=parseable
O docker-compose.yaml
refere-se ao arquivo fluent-bit.conf
e o passa para o contêiner FluentBit como o arquivo de configuração.
Parseable é implantado com a configuração padrão (como na configuração do Docker acima). Você pode observar o contêiner de dados FluentBit enviado para Parseable no Parseable Console em execução em http://localhost:8000.
Embrulhar
Neste artigo, você deu uma primeira olhada no Parseable, a plataforma de armazenamento e análise de log de código aberto construída em Rust. Um único comando do Docker inicia com o Parseable para que você possa experimentar a IU e estabelecer o FluentBit como uma fonte de dados. Se você acha que isso parece fácil demais, provavelmente é hora de experimentar o Parseable!