#kafka #http-post #send #topic #http-request #payload

app kafka-proxy

接收HTTP POST请求,并将它们发送到Kafka服务器

11个版本 (1个稳定版)

使用旧的Rust 2015

1.0.0 2017年1月19日
0.10.1 2016年12月22日
0.9.0 2016年11月1日

#http-post中排名23

MIT 许可证

34KB
597

Kafka-Proxy

Kafka-Proxy是一个小型Web服务器,接收HTTP POST请求,然后将其发送到Kafka主题。由于设置SSL证书并不难,即使您认为不需要,也应该这样做,因此它目前要求与Kafka实例通信时需要SSL证书/密钥。

目前,Kafka客户端和http Web服务器在不同的线程上运行。尽管Rust非常快,但您不应该将"200 OK"视为已将帖子发布到Kafka主题。这样做是为了我们可以以每秒数千次的速度处理http请求,同时仍然保证它们将被发布到Kafka。

如果消息在Kafka中发送失败,它将在名为"kafka_rust"的文件夹中创建一个唯一的文件。Kafka Rust将尝试在重启时发送该文件夹中失败的消息。这有望增加需要人工检查的需求。特别是对于消息中没有时间戳的有效载荷来说更是如此。

安装

  1. 请确保已安装Rust并准备好构建。请点击此处,或者使用以下一行bash语句:curl -sSf https://static.rust-lang.org/rustup.sh | sh

  2. 要构建开发版本,只需运行: cargo build,要构建发布版本,请运行: cargo build --release。(注意:Kafka-Rust 需要 LibSnappy 路径中的库:To build kafka-rust you'll need libsnappy-dev on your local machine. 如果该库未安装 常规路径 中, 您可以在发出 cargo build .)。

  3. 运行位于 target/<debug|release>/kafka-proxy 的二进制文件,传递必要的环境变量。

设置统计功能

Kafka-Proxy 允许将 HTTP/Kafka 统计信息报告给一些最流行的解决方案。其中两个是 Prometheus 和 statsd(在源代码的一些地方称为“Graphite”)。为了使用其中之一,只需在构建时启用: stats-prometheusstats-statsd 功能,并设置环境变量。

设置错误通知

Kafka-Proxy 允许在无法向 Kafka 发送时发出警报,以便您可以手动解决问题。目前唯一支持的报告者是 Slack,但如果您想在其他地方报告,请随时提交一个实现该功能的 issue/PR。

为了使用 Slack,只需在构建时启用功能: reporter-slack,并设置环境变量。

环境变量

需要注意的是,在 v0.7.0 版本中,可以通过 CLI 选项传递环境变量。

名称 可选 功能
GRAPHITE_HOST 有时 将结果 POST 到用于与 statsd 报告的 Graphite 主机的 IPv4 地址。
KAFKA_BROKERS 逗号分隔的 Kafka 代理列表。目前这必须采用以下形式: ip:port。主机名解析即将推出。
KAFKA_PROXY_CERT_PATH 连接到 Kafka 的证书文件的路径。
KAFKA_PROXY_KEY_PATH 连接到 Kafka 的密钥文件的路径。
PANIC_ON_BACKUP 如果程序无法备份未能发送到 Kafka 的消息,则程序是否崩溃。
PROXY_PORT HTTP Web 服务器监听的端口。
SLACK_WEBHOOK 有时 连接到 Slack 的 Slack Webhook URL。
SLACK_CHANNEL 要发布的 Slack 频道。默认为 "#general"。
NO_SSL 是否要黑名单 SSL。

最后,日志是通过 rust crate logenv_logger 设置的。因此,打印到 STDOUT/STDERR 的日志级别由环境变量 RUST_LOG 决定。我建议将其设置为 INFO,除非您需要 DEBUG 以进行高级日志。

支持的 Kafka 版本

我们支持与 kafka-rust 相同的 Kafka 版本。这恰好是

kafka-rust is tested against Kafka 0.8.2.x and regularly used
against Kafka 0.9 servers. However, efforts to implement support
for new features from the Kafka 0.9 release are just in their
beginnings.

依赖关系

~19MB
~407K SLoC