emorash
High-Performance Log Consumer
emorash 是一个高性能的 Kafka 日志消费者,支持将日志写入 ClickHouse、Elasticsearch 等存储后端。
Overview
emorash 是专为高吞吐日志场景设计的消费者:
- 支持 Kafka 万级 QPS 消费
- ClickHouse / Elasticsearch 双写
- 批量写入优化
- 完善的监控指标
- 生产级稳定性
Installation
Binary
curl -L https://opsrelay.dev/install/emorash | bashDocker
docker pull opsrelay/emorash:latestConfiguration
配置文件格式
emorash 使用 TOML 格式的配置文件。
config.toml
[kafka]
brokers = ["kafka-1:9092", "kafka-2:9092"]
topic = "logs"
group_id = "emorash-consumer"
offset_reset = "latest"
[clickhouse]
host = "clickhouse:9000"
database = "logs"
table = "events"
batch_size = 20000
flush_interval = "5s"
[elasticsearch]
hosts = ["es-1:9200", "es-2:9200"]
index = "logs-%Y.%m.%d"
batch_size = 5000Parameters
| Parameter | Description | Default |
|---|---|---|
| kafka.brokers | Kafka broker 地址列表 | localhost:9092 |
| kafka.topic | 消费的 topic 名称 | - |
| kafka.group_id | 消费者组 ID | - |
| clickhouse.batch_size | 批量写入大小 | 10000 |
| clickhouse.flush_interval | 刷新间隔 | 5s |
Architecture
emorash 采用生产者-消费者架构:
1. **Kafka Consumer** - 多 partition 并行消费
2. **Buffer Layer** - 批量缓冲,减少写入次数
3. **Writer Pool** - 连接池化,提高写入效率
4. **Metrics Exporter** - Prometheus 指标暴露
Troubleshooting
Kafka 消费延迟过高
增加 worker 数量,检查 partition 分配是否均衡,确认网络带宽是否充足。
ClickHouse 写入超时
减小 batch_size,增加 flush_interval,检查 ClickHouse 集群负载。
内存使用过高
降低 buffer 大小,减少并发 worker 数量。
FAQ
Q:如何处理 Kafka 高延迟?
A: 检查消费者组内的 rebalance 情况,确保 partition 均匀分配,考虑增加消费者实例。
Q:从 Logstash 迁移需要注意什么?
A: 确保字段映射正确,测试数据格式兼容性,建议先并行运行对比数据。