Primeiros passos

Boa tarde!

Por gentileza me tire uma dúvida de arquitetura do Elastic.

Quero alimentar uma base de dados na Elastic Cloud, estes dsdos eu consigo enviar via rest em Json ou conectandoba um BD e fazendo inserts de banco de dados.

Qual melhor caminho a seguir para eu alimentar minha conta da cloud com estes dados?

Entendo que para eu usar o Kibana tenho que ter o Elasticsearch sendo alimentado por alguma fonte de dados.

E é esta fonte de dados que ainda não entendi, pois vi que existe Logstash e o Beats.

Você pode me esclarecer esta dúvida por favor?
Obrigado.

Olá Rodrigo,

Você consegue exportar estes dados para CSV ou NDJSON (registros em JSON separados por uma quebra de linha)?

Caso afirmativo, você pode usar o Data Vizualizer do Kibana. Aqui tem um artigo explicando como faz: Como importar dados de CSV e de log para o Elasticsearch com o File Data Visualizer

Abs!

Olá Thiago,

O problema é que tenho que automatizar este processo, por exemplo chamando uma Api Rest através de chamada Curl a partir do meu backend.

Transformar em csv manual não me atende.

Olá Rodrigo,

Perfeito! Achei que você queria carregar apenas uma vez para estudar os seus dados.

Nesse caso, existem várias formas de resolver o seu problema, a forma mais comum é utilizando o Logstash. Esse artigo aqui vai te ajudar Como manter o Elasticsearch sincronizado com um banco de dados relacional usando o Logstash e o JDBC

Abs!

Vou dar uma olhada.

Mas de qualquer forma deixe me perguntar: existe alguma Api Rest para alimentar meu Elastic Cloud?

Certamente! O Elasticsearch é todo exposto via api rest. Veja a documentação sobre documentos Documents API. Todavia eu recomendo que você estude um poucos os conceitos por de trás do Elasticsearch antes de se aventurar nas APIs: What is Elasticsearch?

Muito obrigado!

1 Like

Olá Thiago!
Criei uma conta no Elastic Cloud e já criei um cluster.

No post "Como manter o Elasticsearch sincronizado com um banco de dados relacional usando o Logstash e o JDBC" que você me enviou acima não me atende pois tenho um banco Mysql na nuvem e também quero alimentar o Logstash na nuvem, pelo que entendi este post seria para quem usa instalado.

Pergunta: é possível alimentar um pipeline do Logstash na nuvem com dados de um banco de dados Mysql na nuvem? Tenho o endpoint do banco, usuário e senha.

Obrigado.

Olá Rodrigo,

O artigo que eu lhe passei ensina a configurar o Logstash independente da onde esteja instalado. Sendo instalado localmente ou na nuvem, desde que o Logstash tenha acesso ao MySQL, as instruções passadas no artigo ensinam como configurar qualquer tipo de instalação de Logstash (cloud, on-prem, etc) para que ele passe a sincronizar bases de dados com o Elasticsearch.

Se desejas rodar o Logstash em uma cloud/nuvem, instalei-o lá e configure-o como indicado no artigo.

Abs!

Olá Thiago,

agradeço pela sua atenção e paciência.
duas perguntas:

  1. Neste caso o jbdc e o java devem estar no meu servidor onde se encontra o banco mysql?

  2. Outro assunto, eu posso alimentar meu elasticsearch diretamete pela api rest? ou sou obrigado a alimentar o Logstach ou beat?

obrigado.

Não necessariamente, aliás, isso nem é recomendado. O Logstash pode acessar a base remotamente e o recomendado é que rode em um servidor dedicado a ele. (Não sei se foi bem isso que você perguntou, mas o java e jdbc precisam estar no mesmo servidor que o Logstash)

Certamente. Você não é obrigado a usar Logstash ou nenhum beats. No final das contas, o que estes componentes fazem é acessar a api rest do Elasticsearch, então você está livre para usar o que quiser. Todavia se utilizar algo diferente para alimentar o Elasticsearch, não vai conseguir ter muita ajuda nossa ou da comunidade Elastic (por se tratar de algo desconhecido por aqui). Minha recomendação é que tente resolver com Logstash.

Certo Thiago,

Mas se eu estou usando uma conta Elastic Cloud, o Logstash está na nuvem da Elastic, correto?

Este Logstash possui o jbdc e o java instalados?

Na configuraçao do pipeline ele pede um "path" para o Jdbc.

Qual seria?

Obrigado

Infelizmente não. A Elastic Cloud não roda Logstash (é apenas para Elasticsearch e Kibana). Você precisaria executar o Logstash em outro provedor.

Não. Tanto Java quanto o driver JDBC precisam ser instalados a parte. Siga as instruções na documentação do Logstash para mais informações sobre o Java. Já o JDBC, você precisa obter o driver no site do fornecedor (no caso, no site do MySQL).

Este seria o path do driver JDBC assim que você baixar do site do MySQL. Você precisar apontar o path para um arquivo de extensão jar obtido do site.

Legal Thiago,

Está sendo esclarecedor.
Então vou partir para alimentar o Elasticsearch diretamente pela APi Rest, vou executar chamadas Curl pelo backend para carregar os dados em json.

Por enquanto vou estudar a API, caso tenha alguma dúvida posso lhe acionar?

Obrigado.
Rodrigo.

Que ótimo! Fico feliz em ajudar :slight_smile:.

Certamente funciona! Mas recomendo fortemente que use o Logstash pois é robusto, muito bem testado e tem uma comunidade muito bem estabelecida.

Para qualquer dúvida, sempre poderá abrir um tópico aqui no fórum. Não há necessidade de me marcar diretamente no tópico pois outros engenheiros também respondem aqui.

Abs!