// the find
childe/gohangout
使用 golang 模仿的 Logstash。用于消费 Kafka 数据,处理后写入 ES、Clickhouse 等。
gohangout is a Logstash-style data pipeline written in Go, built specifically for consuming Kafka topics and writing to Elasticsearch, ClickHouse, or Kafka. The author wrote it because the Java version ate too much memory; in production it reportedly handles 200 billion records per day. It's for teams already running Kafka-centric log pipelines who want Logstash semantics without the JVM overhead.
The filter DSL has a custom condition parser that avoids Go template overhead for common cases — EQ, Exist, HasPrefix, Match, Before/After — with a clear performance rationale documented. The plugin system via CGO-enabled shared libraries lets you extend inputs, outputs, filters, and codecs without forking the core. ClickHouse and Kafka outputs are first-class citizens alongside ES, not afterthoughts. Config hot-reload via SIGHUP or filesystem watch is a genuine operational win for long-running pipeline workers.
The plugin system requires CGO, which breaks cross-compilation and complicates Docker builds — the README just says 'open CGO_ENABLED=1' with no explanation of what that costs you. SASL support in Kafka input is limited to PLAIN; no SCRAM, no OAuth, which rules it out for many security-conscious Kafka deployments. The ClickHouse output has a documented bug where multiple ClickHouse outputs on one event can cause concurrent map writes, and the fix is 'disable auto_convert and do it yourself' — that's a footgun in any multi-sink config. Documentation is almost entirely in Chinese with a thin English README that's missing large sections like the full filter reference.