Ir al contenido

Hoja de Referencia de Filebeat

Hoja de Referencia de Filebeat

Instalación

PlatformComando
Ubuntu/Debian`wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch \
RHEL/CentOSsudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo yum install filebeat
macOSbrew tap elastic/tap
brew install elastic/tap/filebeat-full
WindowsDownload from https://artifacts.elastic.co/downloads/beats/filebeat/
Extract and run: .\install-service-filebeat.ps1
Dockerdocker 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

ComandoDescripción
sudo systemctl start filebeatIniciar servicio Filebeat
sudo systemctl stop filebeatDetener servicio Filebeat
sudo systemctl restart filebeatReiniciar servicio Filebeat
sudo systemctl status filebeatVerificar estado del servicio Filebeat
sudo systemctl enable filebeatHabilitar Filebeat para iniciar al arranque
sudo filebeat -eEjecutar Filebeat en primer plano con salida por consola
sudo filebeat -e -c /path/to/filebeat.ymlEjecutar con archivo de configuración específico
sudo filebeat test configValidar sintaxis de archivo de configuración
sudo filebeat test outputProbar conectividad con la salida configurada
sudo journalctl -u filebeat -fVer registros de servicio de Filebeat en tiempo real
sudo filebeat modules listEnumerar todos los módulos disponibles
sudo filebeat modules enable apacheHabilitar un módulo específico (ejemplo de Apache)
sudo filebeat modules disable apacheDeshabilitar un módulo específico
sudo filebeat setupCargar plantilla de índice, dashboards y pipelines
sudo filebeat versionMostrar información de la versión de Filebeat

Gestión de Módulos

ComandoDescripción
sudo filebeat modules listMostrar todos los módulos disponibles y su estado
sudo filebeat modules enable nginx mysqlHabilitar varios módulos a la vez
sudo filebeat modules disable systemDeshabilitar un módulo
`sudo filebeat modules list \grep Enabled -A 10`
sudo filebeat export config --modules apacheExportar 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.ymlEditar archivo de configuración de módulo

Configuración e Inicialización

ComandoDescripción
sudo filebeat setup --index-managementConfigurar solo plantilla de índice en Elasticsearch
sudo filebeat setup --dashboardsConfigurar solo paneles de Kibana
sudo filebeat setup --pipelinesConfigurar 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=passConfiguración con credenciales de autenticación
sudo filebeat export templateExportar plantilla de índice a stdout
sudo filebeat export ilm-policyExportar política de ILM (Index Lifecycle Management)

Uso Avanzado

ComandoDescripció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=falseDeshabilitar la verificación estricta de permisos
sudo filebeat -e -E http.enabled=true -E http.host=localhost -E http.port=5066Habilitar punto de monitoreo HTTP
curl http://localhost:5066/statsPunto final de monitoreo de consultas para estadísticas
curl http://localhost:5066/stateObtener información detallada del estado
sudo filebeat -e -E output.console.enabled=true -E output.elasticsearch.enabled=falseEnviar eventos a la consola en lugar de Elasticsearch
sudo filebeat -e -E filebeat.config.inputs.workers=4Ejecutar con un número específico de workers
sudo filebeat -e -E output.elasticsearch.bulk_max_size=100Ajustar tamaño de indexación masiva
sudo filebeat -e -E queue.mem.events=8192Establecer límite de eventos de memoria de cola
sudo filebeat -e -E output.elasticsearch.compression_level=3Habilitar 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-registryMigrar registro de una versión anterior de Filebeat
sudo filebeat export configExportar configuración completa a stdout
curl http://localhost:5066/autodiscoverVerificar estado de autodescubrimiento

Gestión de Keystore

ComandoDescripción
sudo filebeat keystore createCrear un nuevo keystore para secretos
sudo filebeat keystore add ES_PASSWORDAgregar un secreto al keystore (solicita un valor)
sudo filebeat keystore listEnumerar todas las claves en el keystore
sudo filebeat keystore remove ES_PASSWORDEliminar 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
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 `filestream`sobre el tipo de entrada `log`legacy 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.events`y `output.elasticsearch.bulk_max_size`para 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 config`y `filebeat test output`antes 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`<br>Check service status: `sudo systemctl status filebeat`<br>Review logs: `sudo journalctl -u filebeat -n 50` |
| **No data in Elasticsearch** | Test output connectivity: `sudo filebeat test output`<br>Check Elasticsearch is running: `curl http://elasticsearch:9200`<br>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`<br>Check file ownership: `ls -la /var/log/myapp/`<br>Run with proper user: `sudo chown root:root /etc/filebeat/filebeat.yml` |
| **Duplicate events** | Check registry file: `/var/lib/filebeat/registry/filebeat/data.json`<br>Ensure unique input IDs in configuration<br>Avoid multiple Filebeat instances reading same files |
| **High memory usage** | Reduce queue size: `queue.mem.events: 2048`<br>Decrease harvester limit: `filebeat.config.inputs.max_harvesters: 100`<br>Enable compression: `output.elasticsearch.compression_level: 3` |
| **Logs not being tailed** | Check file paths are correct: `ls -la /var/log/myapp/*.log`<br>Verify input is enabled in configuration<br>Check close_inactive setting isn't too aggressive |
| **Connection timeout to Elasticsearch** | Increase timeout: `output.elasticsearch.timeout: 90`<br>Check network connectivity: `telnet elasticsearch 9200`<br>Verify credentials: `curl -u elastic:password http://elasticsearch:9200` |
| **Module not working** | Verify module is enabled: `sudo filebeat modules list`<br>Check log paths in module config: `cat /etc/filebeat/modules.d/nginx.yml`<br>Ensure ingest pipelines loaded: `sudo filebeat setup --pipelines` |
| **Multiline logs not parsing** | Test pattern with sample logs<br>Check `multiline.negate` and `multiline.match` settings<br>Review harvester debug logs: `sudo filebeat -e -d "harvester"` |
| **SSL/TLS connection errors** | Verify certificate paths and permissions<br>Check certificate validity: `openssl x509 -in cert.pem -text -noout`<br>Disable SSL verification for testing: `output.elasticsearch.ssl.verification_mode: none` |
| **Registry file corruption** | Stop Filebeat: `sudo systemctl stop filebeat`<br>Backup registry: `sudo cp -r /var/lib/filebeat/registry /tmp/registry.bak`<br>Remove registry: `sudo rm -rf /var/lib/filebeat/registry`<br>Restart (will reprocess logs): `sudo systemctl start filebeat` |
| **Autodiscover not detecting containers** | Check Docker socket permissions: `ls -la /var/run/docker.sock`<br>Verify autodiscover config syntax<br>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 || `scan_frequency`| 10s | Cada cuánto revisar archivos nuevos | 5s-30s |