让我们假设我们有一个运行在apache we服务器上的PHP api。我想问一下,如何以结构化格式将日志从PHP放到kafka中(让我们说avro或protobuf,因为它将传输特定的业务合同,而不仅仅是纯apache日志)。Php不在我的领域或专业范围内,所以它可能很愚蠢,但解决方案可能只是从php本身向kafka发送消息。但考虑到它是在网络服务器下运行的,它很可能必须为每次调用创建到kafka的连接。另一种可能的解决方案是将日志记录到文件中,然后使用filebeat之类的东西将日志放到kafka中。但我不确定如果我们使用结构化格式,如我已经提到的那样,它将如何工作。我怀疑filebeat是否能够读取该二进制日志文件。如果可以,请让我知道。所以我的问题是--以一种严格且可扩展的方式将php特定的日志导入到kafka中的最佳方式是什么?提前谢谢。
发布于 2021-10-22 13:23:28
Filebeat不会读取二进制日志。在发送给Kafka之前,它将被用来将你的纯文本消息解析成更结构化/二进制的格式(尽管我不确定Filebeat的Kafka序列化是可插拔的)
另一方面,是的,有一个php-librdkafka库可以尝试,但正如您所说的-它需要一些到Kafka的持久连接,而不是使用包含文件的“两次提交”系统,因为文件的每一行都跟踪进度,并且可以承受由于Kafka连接错误而导致的进程重启
Fluentbit或rsyslog或(理想情况下,如果您是真正的日志处理) Splunk forwarder也可以工作...
https://stackoverflow.com/questions/69676063
复制相似问题