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.