Dec 1st, 2022: [PT] Elastic Agent 101

Este artigo também está disponível em inglês.

Primeiro, o que é o Elastic Agent?

Elatic Agent é uma forma única e unificada de adicionar monitoramento para logs, métricas e outros tipos de dados em um host. Ele também pode proteger hosts de ameaças, coletar dados do sistema operacional, encaminhar dados para serviços ou hardware remotos e muito mais.

Como o Elastic Agent faz isso tudo? Ele delega, a responsabilidade do Elastic Agent é rodar, administrar e configurar as aplicações necessárias para executar "as tarefas atribuídas a ele", como coletar logs, métricas ou proteger um host.

Uma policy é a configuração do Elastic Agent, várias integrações são adicionadas na policy, então o Elastic Agent analisa a policy para descobrir todas as aplicações necessárias para cumprir a policy.

O Elastic Agent será responsável por rodar, administrar e configurar cada aplicação necessárias. Por exemplo, se cria-se uma policy e adiciona-se a elas as integrações APM Server, Custom Logs e System Metrics, o Elastic Agent rodará o APM Server, Filebeat (para coletar os logs) e Metricbeat (para coletar métricas do sistema).

Criar uma policy, adicionar integrações e instalar o Elastic Agent são processos muito bem documentados, veja os links para aprofundar-se nesses assuntos.

O que é menos conhecido são as funcionalidades do Elastic Agent que, como uma CLI (do inglês Command Line Interface, interface de linha de comando), oferece formas de investigar e diagnosticar problemas acontecendo com ele mesmo ou com alguma das aplicações que ele roda.
Todos nós sabemos que alguma vezes as coisas não funcionam como esperamos e então temos que descobrir o que está acontecendo. É exatamente nesse momento que os comandos como CLI do Elastic Agent são úteis.

Primeiro, o comando status mostra o estado de cada uma das aplicações que o Elastic Agent está rodando e seu próprio estado.

elastic-agent status

Status: HEALTHY
Message: (no message)
Applications:
  * filebeat               (HEALTHY)
                           Running
  * metricbeat             (HEALTHY)
                           Running
  * filebeat_monitoring    (HEALTHY)
                           Running
  * metricbeat_monitoring  (HEALTHY)
                           Running

Os _monitoring Beats como o nome sugere, monitora o Elastic Agent e suas aplicações coletando métricas e os logs.

O próximo comando é diagnostics, muito mais técnico que status, ele também mostrará informações sobre as aplicações executadas sob o Agente Elástico:

elastic-agent diagnostics

elastic-agent  id: 65a5bc58-d3fe-414a-bc55-9b2bb69c85f5                version: 8.5.2
               build_commit: c13f9157c438fc60cfbb822b385ea91bc91193cc  build_time: 2022-11-17 21:16:12 +0000 UTC  snapshot_build: false
Applications:
  *  name: filebeat               route_key: default
     process: filebeat            id: bdd93dd6-47b8-41cb-a5eb-a4e73ca8d205          ephemeral_id: f9e7c229-73a4-40c0-ad5e-7d751071934b  elastic_license: true
     version: 8.5.2               commit: 1ebd0940bd56943642ea8d63d1fe8227f86e7435  build_time: 2022-11-15 20:38:43 +0000 UTC           binary_arch: amd64
     hostname: elastic-agent      username: root                                    user_id: 0                                          user_gid: 0
  *  name: metricbeat             route_key: default
     process: metricbeat          id: 6146ca43-d3dc-43fc-864c-16f7c718931f          ephemeral_id: c98424db-6ba9-4dab-b656-25965c82accc  elastic_license: true
     version: 8.5.2               commit: 1ebd0940bd56943642ea8d63d1fe8227f86e7435  build_time: 2022-11-15 20:38:34 +0000 UTC           binary_arch: amd64
     hostname: elastic-agent      username: root                                    user_id: 0                                          user_gid: 0
  *  name: filebeat_monitoring    route_key: default
     process: filebeat            id: dd6d9f4e-0fc7-413e-a829-232d8fb9222b          ephemeral_id: 43d99165-49a2-41ef-9a63-358f545bd5ec  elastic_license: true
     version: 8.5.2               commit: 1ebd0940bd56943642ea8d63d1fe8227f86e7435  build_time: 2022-11-15 20:38:43 +0000 UTC           binary_arch: amd64
     hostname: elastic-agent      username: root                                    user_id: 0                                          user_gid: 0
  *  name: metricbeat_monitoring  route_key: default
     process: metricbeat          id: 014efcdf-40c2-4aad-916d-4468dc67ad48          ephemeral_id: 0e01dae8-86d5-4717-9594-0228479ba5c8  elastic_license: true
     version: 8.5.2               commit: 1ebd0940bd56943642ea8d63d1fe8227f86e7435  build_time: 2022-11-15 20:38:34 +0000 UTC           binary_arch: amd64
     hostname: elastic-agent      username: root                                    user_id: 0                                          user_gid: 0

O comando diagnostics tem o sub-comando collect, que como o nome sugere, coleta praticamente tudo sobre o Elastic Agent e os programas que ele está executando. Ele reúne metadados, a policy, a configuração individual, que o Elastic Agent gera a partir da policy, para cada programa que está rodando e os logs.

Este é de longe o comando mais útil para investigações, principalmente quando quem está analisando os dados não tem acesso ao host onde o Elastic Agent está rodando. É uma das primeiras coisas que pedimos a nossos clientes quando eles procuram nosso suporte com um problema relacionado com o Elastic Agent ou qualquer uma das integrações.

O comando ìnspect mostra a configuração atual. O que ele mostra é muito longo, pois é tudo que está sendo coletado do host. Então abaixo está uma versão resumida da saída do comando ìnspect.

elastic-agent inspect

agent:
  download:
    source_uri: https://artifacts.elastic.co/downloads/
  monitoring:
    enabled: true
    logs: true
    metrics: true
    namespace: default
    use_output: default
fleet:
  hosts:
  - https://my.fleet-server.co:443
id: f0beede0-6f1e-11ed-aaed-9bf77350c160
inputs:
- data_stream:
    namespace: default
  id: logfile-system-17831582-e0d5-48b5-a72c-405396085de7
  meta:
    package:
      name: system
      version: 1.20.4
  name: system-1
  package_policy_id: 17831582-e0d5-48b5-a72c-405396085de7
  revision: 1
  streams:
  - data_stream:
      dataset: system.syslog
      type: logs
    exclude_files:
    - .gz$
    id: logfile-system.syslog-17831582-e0d5-48b5-a72c-405396085de7
    ignore_older: 72h
    multiline:
      match: after
      pattern: ^\s
    paths:
    - /var/log/messages*
    - /var/log/syslog*
    processors:
    - add_locale: null
  type: logfile
  use_output: default
output_permissions:
  default:
    _elastic_agent_checks:
      cluster:
      - monitor
    _elastic_agent_monitoring:
      indices:
      - names:
        - logs-elastic_agent.apm_server-default
        privileges:
        - auto_configure
        - create_doc
      - names:
        - metrics-elastic_agent.apm_server-default
        privileges:
        - auto_configure
        - create_doc
outputs:
  default:
    api_key: <REDACTED>
    hosts:
    - https://my.ES.co:443
    type: elasticsearch
revision: 1

Por fim, mas não menos importante, elastic-agent help mostra, como você já deve ter adivinhado, todos os comandos disponíveis no Elastic Agent.

2 Likes

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.