Logstash Kafka输入无法连接

时间:2018-04-25 09:26:44

标签: docker apache-kafka logstash

我正在尝试构建基于recently的管道,其中Kafka从具有文件源连接器的文件中读取。使用this tutorial作为Elastic Stack,我想将Logstash注册为" quickstart-data"话题但我暂时失败了。

这是我的logstash.conf文件:

myApp.service('fileUpload', ['$http', function ($http) {
    this.uploadFileToUrl = function(file, uploadUrl){
        var fd = new FormData();
        fd.append('file', file);

        var info = {
            "text":"file_name"
        };
        fd.append('data', angular.toJson(info));

        $http.post(uploadUrl, fd, {
             transformRequest: angular.identity,
             headers: {'Content-Type': undefined}
        })

        .success(function(){
        })

        .error(function(){
        });
    }
}]);

与Elasticsearch的连接有效,因为我使用心跳输入进行了测试。 我得到的消息错误如下: 无法建立与节点-1的连接。经纪人可能无法使用。 放弃发送元数据请求,因为没有节点可用

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我建议你保持简单,并使用Kafka Connect将数据登陆到Elasticsearch:https://docs.confluent.io/current/connect/connect-elasticsearch/docs/elasticsearch_connector.html#quick-start

答案 1 :(得分:0)

也许有更好的方法可以做到这一点,但在这里我可以解决此问题:

  1. 将我的Zookeeper和Kafka图像更改为融合图像
zookeeper:
    image: confluentinc/cp-zookeeper:latest
    ports: 
      - "2181:2181"
    environment: 
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    networks: 
      - stack
  kafka:
    image: confluentinc/cp-kafka:latest
    ports:
      - "9092:9092"
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    depends_on: 
      - zookeeper
    networks: 
      - stack
  1. Logstash配置(请注意端口为2902):
input {
    stdin{}
    kafka {
        id => "my_kafka_1"
        bootstrap_servers => "kafka:29092"
        topics => "test"
    }
}