Skip to content

Instantly share code, notes, and snippets.

@GusAntoniassi
Last active April 21, 2020 02:46
Show Gist options
  • Save GusAntoniassi/73e3db57f95b1455d8b9890d2f667362 to your computer and use it in GitHub Desktop.
Save GusAntoniassi/73e3db57f95b1455d8b9890d2f667362 to your computer and use it in GitHub Desktop.
Elastic Stack - Eth0

001 - O que é Elastic Stack

O que dá pra fazer com a stack?

  • Logs centralizados
  • Métricas de serviços e servidores
  • APM
  • Segurança (SIEM)
  • Análise de negócios
  • IoT
  • Monitoramento de redes sociais
  • Buscas inteligentes dentro do site
  • Coletar dados de grandes máquinas

Quais componentes fazem parte da stack?

  • Elasticsearch
    • Data store
    • Full text search
    • Naturalmente distribuído
  • Beats
    • Agents de função específica - lightweight shipper
    • Filebeat = envia arquivos
    • Metricbeat = métricas
    • Heartbeat = checar saúde, uptime
    • Packetbeat = dados de rede
      • Consultas DNS
      • Flow de rede
      • Tráfego HTTP
      • Logs de banco, queries executadas, etc
    • Auditbeat = logs de auditoria (auditd do linux)
    • Functionbeat = Lambda, envia informações de SQS, CloudWatch, etc
    • Winlogbeat = Eventos de windows (segurança, sysmon)
    • Libbeat = Biblioteca para criação dos beats
    • Não precisa do beat pra fazer alguma coisa
  • Logstash
    • Logística de dados - ETL (Extract, Trasnform and Load)
    • 3 sessões
    • Input
      • Ler arquivos
      • Escutar porta http
      • Escutar porta tcp
      • Chamar uma API
      • Ler de um streaming
      • Ler de uma fila (Redis, Rabbit)
      • Syslog
      • Beats
      • JDBC
    • Filter (enriquecimento dos dados)
      • Mutate
      • JDBC
      • CSV
      • HTTP
    • Output
      • HTTP
      • ElasticSearch
      • Zabbix
      • CSV
      • Datadog
      • E-mail
      • File
      • Exec
      • ...
  • Kibana
    • Dashboards
      • Gráficos
      • Métricas (count, avg, sum, max)
      • Maps (geolocation, polígonos)
    • Telas
      • Canvas - Telas customizadas
    • Gerenciar stack

Elementos adicionais

  • Grafana - No lugar do Kibana
  • No lugar do Logstash pode usar o Fluentd
  • Alertas fazem parte da licensa paga
    • Elastalert
    • Siren
    • Write your own
      • DSL = linguagem de busca do ES
      • Fazer busca e pegar o resultado
      • Python, Golang, PHP, shell, etc... precisa apenas enviar/ler um json via HTTP
      • Disparar um alerta

002 - Instalando os componentes da stack

  • Elastic Stack: Host vs Docker vs K8S
    • Cuidados com volumes, mais trabalhosos pra fazer funcionar

Arquiteturas

  • Tradicional
    • Servidor c/ Beat instalado
      • Enviam dados diretamente p/ o ElasticSearch
    • Cluster ElasticSearch
    • Se a comunicação cair, o beat vai armazenar local e pode encher o disco
  • Mais legal
    • Beat fala c/ Logstash, que envia pro ES
    • Network ou Firewall pode mandar via syslog pro Logstash também
  • Outra estrutura
    • Beats manda pra Redis/Kafka
    • Logstash pega do Redis/Kafka e manda pro ES
    • Network / Firewall ainda manda direto pro logstash
  • Load balancing
    • Logstash ficar atrás de um LB, com múltiplas instâncias
  • Depende do caso

Instalação

  • Direto via binário é útil quando não tem acesso à internet no servidor
  • config/elasticsearch.yml
    • arquivo de configuração do elasticsearch
    • nome do cluster, nome do nó
  • Padrão de diretórios - instalando via packg man
  • /etc configuração geral. ex: /etc/logstash /etc/elasticsearch, etc
  • /usr/share binários e dependências. ex. /usr/share/elasticsearch

Conclusão

  • No Logstash a vantagem de usar é que dá pra fazer um drop de logs
    • exemplo: Log desnecessário, dropado direto no logstash pra não poluir o ES
  • Campos que são IDs, no Kibana não fazem sentido quando mostra no dashboard
    • Translate pra pegar um valor mais "legível" pra esse Id
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment