Docker compose - Logstash unable to connect to elastic search

38 views Asked by At

I am trying to use filebeat, logstash, kibana and elasticsearch to read a log file on my windows laptop. I have docker for desktop installed. Please find below my project directory:

enter image description here

The docker compose file is shown below:

version: '3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.12.2
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - xpack.security.enabled=false
      - network.host=0.0.0.0
    ulimits:
      memlock:
        soft: -1
        hard: -1
    stdin_open: true
    ports:
      - 9200:9200
      - 9300:9300
    networks:
      - elk

  kibana:
    image: docker.elastic.co/kibana/kibana:8.12.2
    container_name: kibana
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    ports:
      - "5601:5601"
    networks:
      - elk
    depends_on:
      - elasticsearch

  logstash:
    image: docker.elastic.co/logstash/logstash:8.12.2
    container_name: logstash
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200    
    volumes:
      - ./logstash/config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
    command: logstash -f /usr/share/logstash/config/logstash.conf
    networks:
      - elk
    depends_on:
      - elasticsearch

  filebeat:
    image: docker.elastic.co/beats/filebeat:8.12.2
    command: filebeat -e -strict.perms=false
    container_name: filebeat
    user: root
    volumes:
      - ./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/containers:/var/lib/docker/containers
      - /var/log:/var/log
    networks:
      - elk
    depends_on:
      - elasticsearch

networks:
  elk:
    driver: bridge

The filebeat.yml is shown below:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - D:/Project/elk/elk-metric-demo/logs/metric-app.log

output.logstash:
  hosts: ["logstash:5000"]

The logstash.conf is shown below:

    input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}" 
  }
}

When I perform a docker compose up command all service start except logstash with the following error message:

    2024-03-23 11:53:47 [2024-03-23T07:53:47,472][INFO ][logstash.licensechecker.licensereader] Failed to perform request {:message=>"Connect to elasticsearch:9200 [elasticsearch/172.25.0.2] failed: Connection refused", :exception=>Manticore::SocketException, :cause=>#<Java::OrgApacheHttpConn::HttpHostConnectException: Connect to elasticsearch:9200 [elasticsearch/172.25.0.2] failed: Connection refused>}
2024-03-23 11:53:47 [2024-03-23T07:53:47,475][WARN ][logstash.licensechecker.licensereader] Attempted to resurrect connection to dead ES instance, but got an error {:url=>"http://elasticsearch:9200/", :exception=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :message=>"Elasticsearch Unreachable: [http://elasticsearch:9200/][Manticore::SocketException] Connect to elasticsearch:9200 [elasticsearch/172.25.0.2] failed: Connection refused"}
2024-03-23 11:53:47 [2024-03-23T07:53:47,483][INFO ][logstash.licensechecker.licensereader] Failed to perform request {:message=>"Connect to elasticsearch:9200 [elasticsearch/172.25.0.2] failed: Connection refused", :exception=>Manticore::SocketException, :cause=>#<Java::OrgApacheHttpConn::HttpHostConnectException: Connect to elasticsearch:9200 [elasticsearch/172.25.0.2] failed: Connection refused>}
2024-03-23 11:53:47 [2024-03-23T07:53:47,484][WARN ][logstash.licensechecker.licensereader] Marking url as dead. Last error: [LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError] Elasticsearch Unreachable: [http://elasticsearch:9200/][Manticore::SocketException] Connect to elasticsearch:9200 [elasticsearch/172.25.0.2] failed: Connection refused {:url=>http://elasticsearch:9200/, :error_message=>"Elasticsearch Unreachable: [http://elasticsearch:9200/][Manticore::SocketException] Connect to elasticsearch:9200 [elasticsearch/172.25.0.2] failed: Connection refused", :error_class=>"LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError"}
2024-03-23 11:53:47 [2024-03-23T07:53:47,486][WARN ][logstash.licensechecker.licensereader] Attempt to fetch Elasticsearch cluster info failed. Sleeping for 0.02 {:fail_count=>1, :exception=>"Elasticsearch Unreachable: [http://elasticsearch:9200/][Manticore::SocketException] Connect to elasticsearch:9200 [elasticsearch/172.25.0.2] failed: Connection refused"}
2024-03-23 11:53:47 [2024-03-23T07:53:47,507][ERROR][logstash.licensechecker.licensereader] Unable to retrieve Elasticsearch cluster info. {:message=>"No Available connections", :exception=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::NoConnectionAvailableError}
2024-03-23 11:53:47 [2024-03-23T07:53:47,508][ERROR][logstash.licensechecker.licensereader] Unable to retrieve license information from license server {:message=>"No Available connections"}
2024-03-23 11:53:47 [2024-03-23T07:53:47,524][ERROR][logstash.monitoring.internalpipelinesource] Failed to fetch X-Pack information from Elasticsearch. This is likely due to failure to reach a live Elasticsearch cluster.
2024-03-23 11:53:47 [2024-03-23T07:53:47,533][INFO ][logstash.config.source.local.configpathloader] No config files found in path {:path=>"/usr/share/logstash/config/logstash.conf"}
2024-03-23 11:53:47 [2024-03-23T07:53:47,534][ERROR][logstash.config.sourceloader] No configuration found in the configured sources.
2024-03-23 11:53:47 [2024-03-23T07:53:47,594][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600, :ssl_enabled=>false}
2024-03-23 11:53:47 [2024-03-23T07:53:47,603][INFO ][logstash.runner          ] Logstash shut down.
2024-03-23 11:53:47 [2024-03-23T07:53:47,610][FATAL][org.logstash.Logstash    ] Logstash stopped processing because of an error: (SystemExit) exit
2024-03-23 11:53:47 org.jruby.exceptions.SystemExit: (SystemExit) exit
2024-03-23 11:53:47     at org.jruby.RubyKernel.exit(org/jruby/RubyKernel.java:808) ~[jruby.jar:?]
2024-03-23 11:53:47     at org.jruby.RubyKernel.exit(org/jruby/RubyKernel.java:767) ~[jruby.jar:?]
2024-03-23 11:53:47     at usr.share.logstash.lib.bootstrap.environment.<main>(/usr/share/logstash/lib/bootstrap/environment.rb:90) ~[?:?]
2024-03-24 05:23:07 Using bundled JDK: /usr/share/logstash/jdk

...
2024-03-24 05:23:38 [2024-03-24T01:23:38,849][INFO ][logstash.config.source.local.configpathloader] No config files found in path {:path=>"/usr/share/logstash/config/logstash.conf"}
2024-03-24 05:23:38 [2024-03-24T01:23:38,851][ERROR][logstash.config.sourceloader] No configuration found in the configured sources.
2024-03-24 05:23:38 [2024-03-24T01:23:38,936][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600, :ssl_enabled=>false}
2024-03-24 05:23:38 [2024-03-24T01:23:38,955][INFO ][logstash.runner          ] Logstash shut down.
2024-03-24 05:23:38 [2024-03-24T01:23:38,966][FATAL][org.logstash.Logstash    ] Logstash stopped processing because of an error: (SystemExit) exit
2024-03-24 05:23:38 org.jruby.exceptions.SystemExit: (SystemExit) exit

While starting logstash in the terminal I can get access to elastic search as shown below:

enter image description here

However the logstash container cannot start successfully because it is unable to connect. Any advice why i am doing wrong please?

0

There are 0 answers