2016-04-22 71 views
0

我知道我可以通过使用log4j kafka appender从使用log4j到Apache Kafka的应用程序发送日志消息。例如,Log4j appender身份验证

log4j.appender.KAFKA_HIVE_AUDIT=kafka.producer.KafkaLog4jAppender 
log4j.appender.KAFKA_HIVE_AUDIT.BrokerList=sandbox.hortonworks.com:6667 
log4j.appender.KAFKA_HIVE_AUDIT.Topic=hive_audit_log 
log4j.appender.KAFKA_HIVE_AUDIT.layout=org.apache.log4j.PatternLayout 
log4j.appender.KAFKA_HIVE_AUDIT.layout.ConversionPattern=%d{ISO8601} %-5p [%t]: %c{2} (%F:%M(%L)) - %m%n 

这说明如下:how to use Kafka 0.8 Log4j appender

我跑卡夫卡0.9具有启用了Kerberos。有没有办法让log4j appender对Kafka执行身份验证?某种服务帐户?

在运行log4j appender之前,有没有办法让运行java程序的机器通过Kerberos通过卡夫卡集群进行身份验证?

如果这样不起作用,有没有办法通过计算机为kerberized Kafka上未经身份验证的生产者授予写权限? (并且仍然需要消费者使用Kerberos认证)?

回答

0

如果你看卡夫卡0.9source,你会看到,Kerberos身份验证不被KafkaLog4jAppender,尽管它是卡夫卡生产者和消费者普遍增加支持的事实。

Kerberos支持仅在版本0.10中添加到KafkaLog4jAppender中。

快速浏览一下代码,它看起来很容易创建一个自定义appender,它扩展了KafkaLog4jAppender并为Kerberos支持添加了必要的位。

-1

卡夫卡是开源的,你为什么不只是检查代码制定出其性质与Kerberos和如何使用它们?

快速浏览一下“主干”,即https://github.com/apache/kafka/blob/trunk/log4j-appender/src/main/java/org/apache/kafka/log4jappender/KafkaLog4jAppender.java暗示,您必须将JAAS配置文件,并指定在该文件中要使用的“上下文”,使卡夫卡客户可以使用标准的Java安全库。如果不在标准位置(即/etc/krb5.conf),可选择提供自定义的Kerberos配置文件。

所以最终它是理解JAAS的问题 - 并找出要设置的Kafka和/或Log4J属性。

对于Google来说,教程总是只需点击几下 - 例如,那kerberized_kafka后。

+0

由于该问题专门针对Kafka 0.9,所以这个答案不正确,因此会进行投票。 –

+0

如果它带给你任何喜悦,那么欢迎你。但我不确定你的“gittilly correct”答案会得到任何反馈...... –