Saltar a contenido

Hoja de Referencia de Filebeat

Instalación

Platform Comando
Ubuntu/Debian wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch \ | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" \ | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
sudo apt-get update && sudo apt-get install filebeat
RHEL/CentOS sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo yum install filebeat
macOS brew tap elastic/tap
brew install elastic/tap/filebeat-full
Windows Download from https://artifacts.elastic.co/downloads/beats/filebeat/
Extract and run: .\install-service-filebeat.ps1
Docker docker pull docker.elastic.co/beats/filebeat:8.11.0
Kubernetes (Helm) helm repo add elastic https://helm.elastic.co
helm install filebeat elastic/filebeat
## Comandos Básicos
Comando Descripción
sudo systemctl start filebeat Iniciar servicio Filebeat
sudo systemctl stop filebeat Detener servicio Filebeat
sudo systemctl restart filebeat Reiniciar servicio Filebeat
sudo systemctl status filebeat Verificar estado del servicio Filebeat
sudo systemctl enable filebeat Habilitar Filebeat para iniciar al arranque
sudo filebeat -e Ejecutar Filebeat en primer plano con salida por consola
sudo filebeat -e -c /path/to/filebeat.yml Ejecutar con archivo de configuración específico
sudo filebeat test config Validar sintaxis de archivo de configuración
sudo filebeat test output Probar conectividad con la salida configurada
sudo journalctl -u filebeat -f Ver registros de servicio de Filebeat en tiempo real
sudo filebeat modules list Enumerar todos los módulos disponibles
sudo filebeat modules enable apache Habilitar un módulo específico (ejemplo de Apache)
sudo filebeat modules disable apache Deshabilitar un módulo específico
sudo filebeat setup Cargar plantilla de índice, dashboards y pipelines
sudo filebeat version Mostrar información de la versión de Filebeat
## Gestión de Módulos
Comando Descripción
sudo filebeat modules list Mostrar todos los módulos disponibles y su estado
sudo filebeat modules enable nginx mysql Habilitar varios módulos a la vez
sudo filebeat modules disable system Deshabilitar un módulo
sudo filebeat modules list \ | grep Enabled -A 10 Mostrar solo módulos habilitados
sudo filebeat export config --modules apache Exportar configuración de módulo específico
ls /etc/filebeat/modules.d/ Archivos de configuración del módulo de lista
sudo vi /etc/filebeat/modules.d/nginx.yml Editar archivo de configuración de módulo
## Configuración e Inicialización
Comando Descripción
sudo filebeat setup --index-management Configurar solo plantilla de índice en Elasticsearch
sudo filebeat setup --dashboards Configurar solo paneles de Kibana
sudo filebeat setup --pipelines Configurar solo pipelines de ingest
sudo filebeat setup -E output.elasticsearch.hosts=['es:9200'] Configuración con host de Elasticsearch específico
sudo filebeat setup -E output.elasticsearch.username=elastic -E output.elasticsearch.password=pass Configuración con credenciales de autenticación
sudo filebeat export template Exportar plantilla de índice a stdout
sudo filebeat export ilm-policy Exportar política de ILM (Index Lifecycle Management)
## Uso Avanzado
Comando Descripción
sudo filebeat -e -d "*" Ejecutar con registro de depuración para todos los componentes
sudo filebeat -e -d "publish,harvester" Depurar componentes específicos solamente
sudo filebeat -e --strict.perms=false Deshabilitar la verificación estricta de permisos
sudo filebeat -e -E http.enabled=true -E http.host=localhost -E http.port=5066 Habilitar punto de monitoreo HTTP
curl http://localhost:5066/stats Punto final de monitoreo de consultas para estadísticas
curl http://localhost:5066/state Obtener información detallada del estado
sudo filebeat -e -E output.console.enabled=true -E output.elasticsearch.enabled=false Enviar eventos a la consola en lugar de Elasticsearch
sudo filebeat -e -E filebeat.config.inputs.workers=4 Ejecutar con un número específico de workers
sudo filebeat -e -E output.elasticsearch.bulk_max_size=100 Ajustar tamaño de indexación masiva
sudo filebeat -e -E queue.mem.events=8192 Establecer límite de eventos de memoria de cola
sudo filebeat -e -E output.elasticsearch.compression_level=3 Habilitar compresión para la salida de Elasticsearch
sudo filebeat test config -e -d "processors" Configurar procesadores de prueba con salida de depuración
sudo filebeat migrate-registry Migrar registro de una versión anterior de Filebeat
sudo filebeat export config Exportar configuración completa a stdout
curl http://localhost:5066/autodiscover Verificar estado de autodescubrimiento
## Gestión de Keystore
Comando Descripción
sudo filebeat keystore create Crear un nuevo keystore para secretos
sudo filebeat keystore add ES_PASSWORD Agregar un secreto al keystore (solicita un valor)
sudo filebeat keystore list Enumerar todas las claves en el keystore
sudo filebeat keystore remove ES_PASSWORD Eliminar una clave del keystore
## Configuración

Archivo de Configuración Principal

Ubicación: /etc/filebeat/filebeat.yml(Linux) o C:\Program Files\filebeat\filebeat.yml(Windows)

Configuración Básica de Entrada

# Filestream input (recommended for log files)
filebeat.inputs:
- type: filestream
  id: my-app-logs
  enabled: true
  paths:
    - /var/log/myapp/*.log
  fields:
    app: myapp
    environment: production
  fields_under_root: true

Configuración de Entrada de Registro

# Log input (legacy, but still supported)
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
    - /var/log/nginx/error.log
  exclude_lines: ['^DEBUG']
  include_lines: ['^ERR', '^WARN']
  multiline.pattern: '^[[:space:]]'
  multiline.negate: false
  multiline.match: after

Configuración de Entrada de Contenedor

# Docker container logs
filebeat.inputs:
- type: container
  enabled: true
  paths:
    - /var/lib/docker/containers/*/*.log
  processors:
    - add_docker_metadata: ~

Salida a Elasticsearch

output.elasticsearch:
  hosts: ["elasticsearch:9200"]
  username: "elastic"
  password: "${ES_PASSWORD}"  # From keystore
  index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
  pipeline: "filebeat-%{[agent.version]}-apache-access-default"

Salida a Logstash

output.logstash:
  hosts: ["logstash:5044"]
  loadbalance: true
  ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
  ssl.certificate: "/etc/pki/client/cert.pem"
  ssl.key: "/etc/pki/client/cert.key"

Salida a Kafka

output.kafka:
  hosts: ["kafka1:9092", "kafka2:9092"]
  topic: "filebeat"
  partition.round_robin:
    reachable_only: false
  compression: gzip
  max_message_bytes: 1000000

Configuración de Procesadores

processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~
  - drop_fields:
      fields: ["agent.ephemeral_id", "agent.id"]
  - decode_json_fields:
      fields: ["message"]
      target: "json"
      overwrite_keys: true

Autodescubrimiento para Docker

filebeat.autodiscover:
  providers:
    - type: docker
      hints.enabled: true
      templates:
        - condition:
            contains:
              docker.container.image: nginx
          config:
            - type: container
              paths:
                - /var/lib/docker/containers/${data.docker.container.id}/*.log
              processors:
                - add_docker_metadata: ~

Autodescubrimiento para Kubernetes

filebeat.autodiscover:
  providers:
    - type: kubernetes
      node: ${NODE_NAME}
      hints.enabled: true
      hints.default_config:
        type: container
        paths:
          - /var/log/containers/*${data.kubernetes.container.id}.log

Ejemplo de Configuración de Módulo

# /etc/filebeat/modules.d/nginx.yml
- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
  error:
    enabled: true
    var.paths: ["/var/log/nginx/error.log*"]

Casos de Uso Comunes

Caso de Uso 1: Recolección de Registros de Aplicaciones

Would you like me to continue with the remaining translations?```bash

Enable filestream input for application logs

sudo vi /etc/filebeat/filebeat.yml

```yaml
filebeat.inputs:
- type: filestream
  id: myapp-logs
  enabled: true
  paths:
    - /var/log/myapp/*.log
  fields:
    app: myapp
    env: production

# Test configuration and restart
sudo filebeat test config
sudo systemctl restart filebeat
```### Caso de Uso 2: Configuración de Recolección de Logs de Nginx
```bash
# Enable Nginx module
sudo filebeat modules enable nginx

# Configure module
sudo vi /etc/filebeat/modules.d/nginx.yml
- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
  error:
    enabled: true
    var.paths: ["/var/log/nginx/error.log*"]
# Setup dashboards and restart
sudo filebeat setup --dashboards
sudo systemctl restart filebeat
```### Caso de Uso 3: Recolección de Logs de Contenedores Docker
```bash
# Run Filebeat in Docker to collect container logs
docker run -d \
  --name=filebeat \
  --user=root \
  --volume="$(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \
  --volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" \
  --volume="/var/run/docker.sock:/var/run/docker.sock:ro" \
  docker.elastic.co/beats/filebeat:8.11.0
```### Caso de Uso 4: Despliegue de DaemonSet en Kubernetes
```bash
# Deploy Filebeat as DaemonSet using Helm
helm repo add elastic https://helm.elastic.co
helm repo update

# Create values file
cat > filebeat-values.yaml <<EOF
daemonset:
  enabled: true
  filebeatConfig:
    filebeat.yml: |
      filebeat.autodiscover:
        providers:
          - type: kubernetes
            node: \${NODE_NAME}
            hints.enabled: true
      output.elasticsearch:
        hosts: ["elasticsearch:9200"]
EOF

# Install Filebeat
helm install filebeat elastic/filebeat \
  --namespace logging --create-namespace \
  -f filebeat-values.yaml
```### Caso de Uso 5: Análisis de Logs Multilínea (Stack Traces)
```bash
# Configure multiline pattern for Java stack traces
sudo vi /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: filestream
  id: java-app
  enabled: true
  paths:
    - /var/log/java-app/*.log
  parsers:
    - multiline:
        type: pattern
        pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:'
        negate: false
        match: after
# Test and restart
sudo filebeat test config
sudo systemctl restart filebeat
```### Caso de Uso 6: Envío de Logs a Múltiples Salidas
```bash
# Configure Logstash output for processing and Elasticsearch for backup
sudo vi /etc/filebeat/filebeat.yml
output.logstash:
  hosts: ["logstash:5044"]
  loadbalance: true

# Note: Only one output can be active at a time in Filebeat
# For multiple outputs, use Logstash as intermediary
```### Caso de Uso 7: Filtrado y Enriquecimiento de Logs
```bash
# Add processors to enrich and filter logs
sudo vi /etc/filebeat/filebeat.yml

yaml processors: - drop_event: when: regexp: message: "^DEBUG" - add_fields: target: '' fields: datacenter: us-east-1 team: platform - decode_json_fields: fields: ["message"] target: "json" overwrite_keys: true - drop_fields: fields: ["agent.ephemeral_id", "ecs.version"]## Mejores Prácticas

  • Usar Entrada de Filestream: Preferir filestreamsobre el tipo de entrada loglegacy para un mejor rendimiento y fiabilidad con rotación de archivos
  • Habilitar Módulos: Usar módulos predefinidos (nginx, apache, mysql, etc.) en lugar de configuraciones personalizadas cuando sea posible para una configuración más rápida y un mejor análisis
  • Implementar Manejo de Sobrecarga: Configurar queue.mem.eventsy output.elasticsearch.bulk_max_sizepara manejar picos de carga sin pérdida de datos
  • Asegurar Credenciales: Almacenar información sensible (contraseñas, claves API) en el almacén de claves de Filebeat en lugar de texto plano en archivos de configuración
  • Monitorear Uso de Recursos: Habilitar punto final HTTP (http.enabled: true) para monitorear el rendimiento de Filebeat y el estado del recolector
  • Usar Gestión de Ciclo de Vida de Índices (ILM): Configurar políticas de ILM para gestionar automáticamente la retención de índices y reducir costos de almacenamiento
  • Etiquetar y Enriquecer Logs: Añadir campos personalizados y metadatos usando procesadores para hacer los logs más buscables y contextuales
  • Probar Antes de Producción: Siempre usar filebeat test configy filebeat test outputantes de implementar cambios de configuración
  • Manejar Logs Multilínea: Configurar patrones multilínea para stack traces y logs de aplicaciones multilínea para prevenir fragmentación de logs
  • Implementar Autodescubrimiento: Usar autodescubrimiento para entornos dinámicos (Docker, Kubernetes) para detectar y configurar automáticamente nuevos contenedores
  • Actualizaciones Regulares: Mantener Filebeat actualizado para coincidir con su versión de Elasticsearch para compatibilidad y parches de seguridad
  • Establecer Permisos Apropiados: Asegurar que Filebeat tenga acceso de lectura a archivos de logs pero siguiendo el principio de mínimo privilegio

Resolución de Problemas

Problema Solución
Filebeat not starting Check configuration syntax: sudo filebeat test config
Check service status: sudo systemctl status filebeat
Review logs: sudo journalctl -u filebeat -n 50
No data in Elasticsearch Test output connectivity: sudo filebeat test output
Check Elasticsearch is running: curl http://elasticsearch:9200
Verify index exists: curl http://elasticsearch:9200/_cat/indices?v
Permission denied errors Ensure Filebeat has read access: sudo chmod 644 /var/log/myapp/*.log
Check file ownership: ls -la /var/log/myapp/
Run with proper user: sudo chown root:root /etc/filebeat/filebeat.yml
Duplicate events Check registry file: /var/lib/filebeat/registry/filebeat/data.json
Ensure unique input IDs in configuration
Avoid multiple Filebeat instances reading same files
High memory usage Reduce queue size: queue.mem.events: 2048
Decrease harvester limit: filebeat.config.inputs.max_harvesters: 100
Enable compression: output.elasticsearch.compression_level: 3
Logs not being tailed Check file paths are correct: ls -la /var/log/myapp/*.log
Verify input is enabled in configuration
Check close_inactive setting isn't too aggressive
Connection timeout to Elasticsearch Increase timeout: output.elasticsearch.timeout: 90
Check network connectivity: telnet elasticsearch 9200
Verify credentials: curl -u elastic:password http://elasticsearch:9200
Module not working Verify module is enabled: sudo filebeat modules list
Check log paths in module config: cat /etc/filebeat/modules.d/nginx.yml
Ensure ingest pipelines loaded: sudo filebeat setup --pipelines
Multiline logs not parsing Test pattern with sample logs
Check multiline.negate and multiline.match settings
Review harvester debug logs: sudo filebeat -e -d "harvester"
SSL/TLS connection errors Verify certificate paths and permissions
Check certificate validity: openssl x509 -in cert.pem -text -noout
Disable SSL verification for testing: output.elasticsearch.ssl.verification_mode: none
Registry file corruption Stop Filebeat: sudo systemctl stop filebeat
Backup registry: sudo cp -r /var/lib/filebeat/registry /tmp/registry.bak
Remove registry: sudo rm -rf /var/lib/filebeat/registry
Restart (will reprocess logs): sudo systemctl start filebeat
Autodiscover not detecting containers Check Docker socket permissions: ls -la /var/run/docker.sock
Verify autodiscover config syntax
Enable debug: sudo filebeat -e -d "autodiscover"
## Referencia Rápida: Ubicaciones Comunes de Archivos
Ítem Ubicación (Linux) Ubicación (Windows)
Main config /etc/filebeat/filebeat.yml C:\Program Files\filebeat\filebeat.yml
Module configs /etc/filebeat/modules.d/ C:\Program Files\filebeat\modules.d\
Registry /var/lib/filebeat/registry/ C:\ProgramData\filebeat\registry\
Logs /var/log/filebeat/ C:\ProgramData\filebeat\logs\
Binary /usr/share/filebeat/bin/filebeat C:\Program Files\filebeat\filebeat.exe
Data directory /var/lib/filebeat/ C:\ProgramData\filebeat\
## Parámetros de Optimización de Rendimiento
Parámetro Predeterminado Descripción Rango Recomendado
queue.mem.events 4096 Número de eventos que la cola puede contener 2048-8192
queue.mem.flush.min_events 2048 Eventos mínimos antes de flush 1024-4096
output.elasticsearch.bulk_max_size 50 Eventos máximos por solicitud de bulk 50-1600
output.elasticsearch.worker 1 Número de trabajadores de salida 1-4
filebeat.config.inputs.max_harvesters 0 (ilimitado) Lectores de archivos concurrentes máximos 100-500
close_inactive 5m Cerrar archivo después de inactividad 1m-10m