Conhecendo a ferramenta Opensearch
Heeey!
Podemos nos referir ao Opensearch como um fork do Elasticsearch e Kibana 7.10. Basicamente, o Opensearch é uma ferramente de monitoração de aplicação e análise de logs totalmente opensource (mas neste post vamos explorar um pouco mais sobre demais recursos que a ferramenta oferece).
Antes de tudo, vamos entender um pouco mais sobre o que a própria AWS nos conta sobre a ferramenta:
O que é Opensearch?
O OpenSearch é um conjunto distribuído de pesquisa e análise de código aberto usado para uma ampla variedade de casos de uso, como monitoramento de aplicações em tempo real, análise de logs e pesquisa de sites. O OpenSearch fornece um sistema altamente escalável para fornecer acesso rápido e resposta a grandes volumes de dados com uma ferramenta de visualização integrada, o OpenSearch Dashboards, que facilita a exploração de dados pelos usuários.
Assim como o Elasticsearch, o Opensearch oferece um mecanismo de pesquisa de texto completo distribuído baseado no Apache Lucene com uma interface de API RESTful e suporte para documentos JSON.
Qual a ideia por trás da criação?
Em 2021 a Elastic mudou a licença de software permissiva ALv2 para a Elastic License v2 (ELv2) and SSPL, essas licenças não seguem firmemente a ideia do Open Source e não oferecem as mesmas liberdades para os usuários. Logo, o opensearch virou um fork do Elasticsearch e Kibana na versão 7.10. Com o objetivo de oferecer uma ferramenta totalmente opensource para a comunidade.
Principais recursos do Opensearch que não fazem parte da licença free do Elasticsearch
Recurso | Benefício |
---|---|
Segurança avançada | Oferece recursos de criptografia, autenticação, autorização e auditoria. Eles incluem integrações com Active Directory, LDAP, SAML, Kerberos, tokens da Web JSON |
Geração de relatórios | Agende, exporte e compartilhe relatórios de painéis, pesquisas salvas, alertas e visualizações. |
Detecção de anomalias | Aproveite a detecção de anomalias de Machine Learning com base no algoritmo Random Cut Forest (RCF) para detectar anomalias automaticamente à medida que seus dados são ingeridos. Combine com Alertas para monitorar dados quase em tempo real e enviar notificações de alertas automaticamente. |
Analisador de performance e framework RCA | Consulte várias métricas e agregações de performance do cluster. Use o PerfTop, a interface de linha de comando (CLI) para exibir e analisar essas métricas rapidamente. Use a framework de análise de causas-raiz (RCA) para investigar problemas de performance e confiabilidade em clusters. |
Trace Analytics | Ingere e visualize dados OpenTelemetry para aplicações distribuídas. Visualize o fluxo de eventos entre essas aplicações para identificar problemas de performance. |
Geração de alertas | Monitore dados automaticamente e envie notificações de alertas automaticamente para as partes interessadas. Crie condições de alerta altamente específicas usando a linguagem de consulta completa e os recursos de script do OpenSearch. |
Vamos a prática!
Vamos subir o Opensearch e o Opensearch dashboards na versão de teste, esta versão, o Opensearch já provisiona todas as configurações de segurança (certificados).
Garanta que você tenha odocker-compose instalado.
Garanta que a variávelvm.max_map_count esteja setada com o valor de 262144:
sysctl-w vm.max_map_count=262144
Essa configuração do sysctl não é permanente
Crie o arquivo docker-compose.yml:
version:'3'services:opensearch-node1:image:opensearchproject/opensearch:latestcontainer_name:opensearch-node1environment:-cluster.name=opensearch-cluster-node.name=opensearch-node1-discovery.seed_hosts=opensearch-node1,opensearch-node2-cluster.initial_master_nodes=opensearch-node1,opensearch-node2-bootstrap.memory_lock=true-"OPENSEARCH_JAVA_OPTS=-Xms1g-Xmx1g"ulimits:memlock:soft:-1hard:-1nofile:soft:65536hard:65536volumes:-opensearch-data1:/usr/share/opensearch/dataports:-9200:9200-9600:9600networks:-opensearch-netopensearch-node2:image:opensearchproject/opensearch:latestcontainer_name:opensearch-node2environment:-cluster.name=opensearch-cluster-node.name=opensearch-node2-discovery.seed_hosts=opensearch-node1,opensearch-node2-cluster.initial_master_nodes=opensearch-node1,opensearch-node2-bootstrap.memory_lock=true-"OPENSEARCH_JAVA_OPTS=-Xms1g-Xmx1g"ulimits:memlock:soft:-1hard:-1nofile:soft:65536hard:65536volumes:-opensearch-data2:/usr/share/opensearch/datanetworks:-opensearch-netopensearch-dashboards:image:opensearchproject/opensearch-dashboards:latestcontainer_name:opensearch-dashboardsports:-5601:5601expose:-"5601"environment:OPENSEARCH_HOSTS:'["https://opensearch-node1:9200","https://opensearch-node2:9200"]'networks:-opensearch-netvolumes:opensearch-data1:opensearch-data2:networks:opensearch-net:
Assim que salvar o arquivo, suba todos os serviços:
docker-compose up-d
Temos que ter 3 containers rodando, dois opensearch e um opensearch Dashboards
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES7e1de85c3f8c opensearchproject/opensearch-dashboards:latest"./opensearch-dashbo…" 2 minutes ago Up About a minute 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp opensearch-dashboards40b047a9123e opensearchproject/opensearch:latest"./opensearch-docker…" 2 minutes ago Up About a minute 9200/tcp, 9300/tcp, 9600/tcp, 9650/tcp opensearch-node2c72ebd7f6e3b opensearchproject/opensearch:latest"./opensearch-docker…" 2 minutes ago Up About a minute 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp, 0.0.0.0:9600->9600/tcp, :::9600->9600/tcp, 9650/tcp opensearch-node1
Agora basta acessar o Opensearch Dashboard na porta5601:
Você consegue acessar com user admin, senha admin.
Inserindo dados para visualização
Para visualizar dados eu importei alguns dados.
NoMenu lateral, na área de Management, selecione oDev Tools.
Através do Dev Tools, é possível realizar requisições direto no nós de Opensearch.
Os nossos documentos não tem nenhum campo do tipo datetime (ele é necessário para uma melhor visualização e análise), então primeiro vamos criar uma pipeline que irá criar o campo "indexed_at" em todo arquivo que for adicionado:
PUT/_ingest/pipeline/timestamp{"description":"Adicionando o campo indexed_at nos documentos","processors":[{"set":{"field":"indexed_at","value":"{{_ingest.timestamp}}"}}]}
Vamos criar o índice e definir essa pipeline como default:
PUT/movies{"settings":{"index.default_pipeline":"timestamp"}}
Vamos adicionar um bulk request para alguns documentos:
PUT/movies/_bulk/{"index":{}}{"title":" Predestination","year":2014,"genre":["Action","Drama","Sci-Fi"]}{"index":{}}{"title":"Star Wars: Episode VII - The Force Awakens","year":2015,"genre":["Action","Adventure","Fantasy","Sci-Fi"]}{"index":{}}{"title":"Interstellar","year":2014,"genre":["Sci-Fi","Adventure","Drama"]}{"index":{}}{"title":"Venom","year":2018,"genre":["Action"," Adventure","Sci-Fi"]}{"index":{}}{"title":"A Quiet Place Part II","year":2020,"genre":["Horror","Sci-Fi","Drama"]}{"index":{}}{"title":"Donnie Darko","year":2001,"genre":["Drama","Sci-Fi","Mistery"]}{"index":{}}{"title":"Black Widow","year":2021,"genre":["Action"," Adventure","Sci-Fi"]}{"index":{}}{"title":"Nobody","year":2021,"genre":["Action","Drama","Crime"]}{"index":{}}{"title":"The Dark Knight","year":2008,"genre":["Action","Drama","Crime"]}{"index":{}}{"title":"Inception","year":2010,"genre":["Action"," Adventure","Sci-Fi"]}{"index":{}}{"title":" The Matrix","year":1999,"genre":["Action","Sci-Fi"]}{"index":{}}{"title":"Avatar","year":2009,"genre":["Action"," Adventure","Fantasy"]}{"index":{}}{"title":"Ex Machina","year":2014,"genre":["Action"," Adventure","Sci-Fi"]}{"index":{}}{"title":" The Hobbit: An Unexpected Journey","year":2012,"genre":[" Adventure","Fantasy"]}{"index":{}}{"title":"Wonder Woman","year":2017,"genre":["Action"," Adventure","Fantasy"]}
Clique em um ícone de play para enviar a requisição:
Configurando Index Pattern
Ao retornar noDiscover aparecerá uma página para criar oIndex Pattern, clique emCreate index pattern:
Index pattern name: movies*
Time field: indexed_at
Clique emCreate Index pattern
Aparecerá todos os campos existentes neste index, podemos alterar o modo de visualização. Por exemplo:
Acesse o campoyear e clique no ícone de editar:
Format: Number
Numeral.js format pattern: 0
Clique emSave field
Após retornar para oDiscover, já conseguimos visualizar os documentos que adicionamos:
Um recurso que faz falta no Opensearch Dashboard é o Lens. Não foi possível inseri-lo porque esta feature do Kibana não é Open Source.
Espero que tenham gostado da ferramenta!
Até mais o/
Top comments(0)
For further actions, you may consider blocking this person and/orreporting abuse