FerroStash
Pipeline de logs compatible con Logstash nativo en Rust
Pipeline de logs y eventos nativo en Rust y compatible con Logstash. Ingiere, transforma y enruta eventos mediante el mismo modelo input → filter → output que Logstash, parseando de forma nativa el DSL pipeline.conf de Logstash (y una forma YAML equivalente), sin JVM. Un único binario estático (unos 14 MB) arranca en milisegundos y usa decenas de MB de RAM, por lo que puedes concentrar muchos más shippers por host.
Donde un pipeline típico de Logstash mantiene alrededor de un gigabyte de heap JVM y tarda decenas de segundos en arrancar, FerroStash se ejecuta como un único binario estático. La línea v1.0 implementa el subconjunto común en producción del conjunto de plugins de Logstash 9.x — aproximadamente el 88 por ciento de los plugins incluidos (98 de 111), ponderado hacia el hot path de parsing y filtrado. Los inputs incluyen beats, file, tcp, udp, http, syslog, kafka, redis, s3, sqs, jdbc, elasticsearch y cloudwatch; los filters incluyen grok, dissect, kv, json, mutate, date, geoip, dns, csv, xml, useragent, cidr, fingerprint, translate, aggregate y throttle, además de un script filter nativo estilo Painless; los outputs incluyen elasticsearch / opensearch, kafka, s3, http, tcp, udp, file, redis, sqs, sns, cloudwatch, email y datadog; los codecs incluyen json, json_lines, multiline, cef, netflow, avro, msgpack y protobuf. Para fiabilidad ofrece una cola persistente opcional en disco con entrega at-least-once y dead-letter queue (fsync opcional para durabilidad ante pérdida de energía) y una monitoring API integrada para estadísticas de nodo y pipeline. Alcance honesto: es compatible con configuración/pipeline de Logstash, no un drop-in 100 por cien idéntico byte a byte — la cobertura es por plugin, un plugin cubierto puede implementar un subconjunto de sus opciones, y una configuración que use un plugin ausente falla rápido al cargar.
El problema
Logstash es un pipeline de registros y eventos flexible, pero el despliegue habitual consume aproximadamente un gigabyte de heap de la JVM, tarda decenas de segundos en arrancar y ejecuta un runtime de agente JVM independiente por cada shipper. Esto limita la cantidad de shippers que caben en un host y afecta gravemente a la memoria y al tiempo de inicio, especialmente en contenedores. La necesidad es conservar la inversión existente en plugins y pipeline.conf, eliminando al mismo tiempo la huella de la JVM y funcionando de forma ligera.
Cómo funciona
- 1
Ejecuta input → filter → output de forma nativa
FerroStash ingere, transforma y enruta eventos a través del mismo modelo input → filter → output que Logstash. Analiza la DSL pipeline.conf de Logstash (y un formato YAML equivalente) de forma nativa — sin una JVM y sin un runtime de agente independiente — y se ejecuta como un único binario estático.
- 2
Implementa los plugins más comunes en producción
La línea v1.0 implementa 98 de los 111 plugins incluidos en Logstash 9.x (aproximadamente el 88%), con prioridad en el hot path de análisis y filtrado. Cubre los principales inputs, filters, outputs y codecs, e incluye un filtro de script nativo al estilo de Painless. Las configuraciones que utilicen un plugin no soportado fallarán de inmediato durante la carga, evitando que ocurran pérdidas silenciosas.
- 3
Fiabilidad y monitorización
Una cola persistente en disco opcional proporciona entrega at-least-once (separación de cursor de lectura/ack, checkpoint tras ack de salida) y una dead-letter queue, con fsync opcional para garantizar la durabilidad ante cortes de energía. Una API de monitorización integrada expone las estadísticas de nodos y pipelines.
Características destacadas
Compatible con configuración/pipeline de Logstash — parsea de forma nativa el DSL pipeline.conf (y YAML) e implementa aproximadamente el 88% de los plugins incluidos en Logstash 9.x (98 de 111).
Binario estático único (~14 MB), sin JVM; arranque en ms y decenas de MB de RAM permiten concentrar más shippers por host.
Fiabilidad: cola persistente en disco (at-least-once + DLQ, fsync opcional) y monitoring API integrada. Alcance honesto — compatible con configuración, no un drop-in idéntico byte a byte.
Qué incluye
- AMI de Amazon Linux 2023 reforzada (arm64 / Graviton, se ejecuta en clases t4g / c7g / m7g / r7g)
- Un único binario estático de Rust (aproximadamente 14 MB, sin JVM, arranque en milisegundos) que implementa un pipeline de registros y eventos compatible con Logstash
- Un parser nativo para la DSL pipeline.conf de Logstash y un formato YAML equivalente
- 98 de los 111 plugins incluidos en Logstash 9.x (aproximadamente el 88%): inputs (beats, file, tcp, udp, http, syslog, kafka, redis, s3, sqs, jdbc, elasticsearch, cloudwatch y más), filters (grok, dissect, kv, json, mutate, date, geoip y más, además de un filtro de script al estilo de Painless), outputs (elasticsearch / opensearch, kafka, s3, http, file y más) y codecs (json, json_lines, multiline, cef, netflow, avro, msgpack, protobuf)
- Una cola persistente en disco opcional con entrega at-least-once y una dead-letter queue (fsync opcional)
- Una API de monitorización integrada que expone estadísticas de nodos y pipelines
- Sin plano de control independiente, sin telemetría saliente y sin verificación de clave de licencia (facturado por instancia por hora a través de su factura de AWS)
Casos de uso
Conservar la inversión existente en plugins y en pipeline.conf de Logstash al tiempo que se funciona de forma ligera y sin la huella de la JVM
Entornos de contenedores o edge donde la memoria y el tiempo de inicio son restricciones y se desea tener más shippers por host
Pipelines que analizan logs con grok / dissect / json y los enrutan a Elasticsearch / OpenSearch / Kafka / S3 y similares
Ejecutar un pipeline de logs por completo dentro de su propia VPC, sin plano de control independiente y sin telemetría saliente
Preguntas frecuentes
¿Qué nivel de compatibilidad tiene con Logstash?
FerroStash es compatible con la configuración y los pipelines de Logstash, no un drop-in 100% idéntico byte a byte. Analiza la DSL pipeline.conf de forma nativa e implementa 98 de los 111 plugins incluidos en Logstash 9.x (aproximadamente el 88%). La cobertura es a nivel de plugin, y un plugin soportado puede implementar solo un subconjunto de sus opciones. Una configuración que utilice un plugin ausente fallará de inmediato durante la carga.
¿Necesita una JVM?
No. FerroStash se ejecuta como un único binario estático de Rust (aproximadamente 14 MB) sin JVM y sin un runtime de agente independiente. Arranca en milisegundos y consume decenas de MB de RAM, lo que permite alojar más shippers por host.
¿Existen garantías de entrega?
Una cola persistente en disco opcional proporciona entrega at-least-once (separación de cursor de lectura/ack, checkpoint tras ack de salida) y una dead-letter queue. Se puede habilitar fsync de manera opcional para garantizar la durabilidad ante cortes de energía.
¿Es esto un reemplazo para un servicio de AWS?
Logstash es un proyecto de código abierto de Elastic y no es un servicio de AWS. FerroStash es un producto autogestionado que ejecuta ese pipeline de logs compatible con Logstash en sus propias instancias de Amazon EC2. Se distribuye como una AMI normal de Amazon Linux 2023 que se ejecuta dentro de su propia VPC.
¿Cómo se factura?
Una tarifa por hora del software de la AMI más la instancia EC2 que elija (clase t4g / c7g / m7g / r7g, Arm). Tarifado por tipo de instancia, sin plano de control independiente, sin telemetría saliente y sin verificación de clave de licencia.
Modelo de precios
Tarifa horaria de software + EC2 (clase t4g / c7g / m7g / r7g, Arm). Medición por tipo de instancia.
Otros productos S4
S4 — Squished S3
Gateway transparente de compresión S3 con GPU
S4 Logs
Archiva CloudWatch Logs en S3 con zstd
S4 Metrics
Gobierna la cardinalidad de métricas de CloudWatch