Log Formatter is a light-weight and extensible and production-ready framework in golang to process log data like Logstash. It ingests data from input
as documents, then each document is processed (filter/drop/enhance) by pipeline
, and finally sent to output
.
Log Formatter has Agent and Monitor component.
Agent
- one to one streaming
- dynamic configurable
- multilevel native logging and prometheus metric
Monitor
- show agent’s current status
- modify configuration on the fly
go run agent.go -c config.yml
The config file is in yaml format, which should include input
, output
, pipeline
. Here is an exmaple to forward message from Kafka to Kafka.
input:
kafka:
brokers:
- "127.0.0.1:9092"
topic: "test01"
group_name: "formatter-test"
version: "2.6.0"
output:
kafka:
broker: "127.0.0.1:9092"
topic: "test02"
pipeline:
formatters:
- forwarder:
See tutorial on how to write your own plugin. [TODO:]
Native Supported Plugins
- Input: console, kafka, es
- Output: console, kafka, es
- Formatter: parser, filter, forwarder
Monitor and Agent communicate by grpc.
Deploy agents with monitor
# agent
`go run agent.go -c config.yml -monitor <web-rpc-port> -rpcp <agent-rpc-port> `
# controller
`go run monitor.go -rpcp <web-rpc-port> -webp <web-port>
You can try to play around with monitor's web interface by running docker-compose -f deployment/docker-compose.yaml up
, which will set up a monitor on localhost:8080
with 10 agents.
The docker images are available on https://hub.docker.com/u/formatter.