Reputation: 1090
I'm trying to run a Spring Boot application using Docker Compose, which includes MongoDB, Elasticsearch, Kibana, and Logstash. However, when my Spring Boot app starts, it can't connect to Logstash and throws the following error:
13:18:21,297 |-WARN in net.logstash.logback.appender.LogstashTcpSocketAppender[logstash] - Log destination logstash/<unresolved>:5001: connection failed. java.net.ConnectException: Connection refused
Here's my docker-compose.yml:
services:
mongodb:
image: mongo
container_name: mongodb
environment:
MONGO_INITDB_ROOT_USERNAME: xxx
MONGO_INITDB_ROOT_PASSWORD: xxx
MONGO_INITDB_DATABASE: xxx
ports:
- "1905:27017"
volumes:
- db_data:/data/db
networks:
- chooseone_network
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.3.3
container_name: elasticsearch
environment:
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.type=single-node"
- xpack.security.enabled=false
ports:
- "9200:9200"
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
- ./config/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro,Z
networks:
- elastic_network
kibana:
image: docker.elastic.co/kibana/kibana:8.3.3
container_name: kibana
ports:
- "5601:5601"
environment:
ELASTICSEARCH_URL: http://elasticsearch:9200
ELASTICSEARCH_HOSTS: '["http://elasticsearch:9200"]'
depends_on:
- elasticsearch
networks:
- elastic_network
logstash:
image: docker.elastic.co/logstash/logstash:8.3.3
container_name: logstash
volumes:
- ./config/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro,Z
- ./config/logstash/pipeline:/usr/share/logstash/pipeline:ro,Z
- ./logs:/logs
ports:
- 5001:5000/tcp
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
command: bin/logstash -f /usr/share/logstash/pipeline/logstash.conf
depends_on:
- elasticsearch
networks:
- elastic_network
chooseone:
image: bertugmete/chooseone:0.0.2
container_name: chooseone
ports:
- "8080:8080"
environment:
- SPRING_PROFILES_ACTIVE=prod
- AWS_ACCESS_KEY=***
- AWS_SECRET_KEY=***
- AWS_S3_REGION=xxx
- AWS_S3_BUCKET_NAME=xxx
- ARTIFACT_VERSION=0.0.2
depends_on:
- mongodb
- logstash
- kibana
- elasticsearch
networks:
- chooseone_network
- elastic_network
volumes:
- ./logs:/app/logs
networks:
elastic_network:
driver: bridge
chooseone_network:
driver: bridge
volumes:
elasticsearch_data:
driver: local
db_data:
Here is my logback-spring.xml configuration for Logstash:
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>logstash:5001</destination>
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<mdc />
<logLevel />
<loggerName />
<threadName />
<message />
<logstashMarkers />
<stackTrace />
<pattern>
<pattern>
{
"app": "chooseone",
"environment": "${spring.profiles.active:-default}",
"timestamp": "%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ}",
"errorCode": "%mdc{errorCode}",
"errorMessage": "%mdc{errorMessage}",
"uri": "%mdc{requestURI}",
"method": "%mdc{httpMethod}",
"status": "%mdc{responseStatus}",
"requestBody": "%mdc{requestBody}",
"responseBody": "%mdc{responseBody}",
"ip": "%mdc{clientIp}",
"timeTaken": "%mdc{timeTaken}"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
<root level="info">
<appender-ref ref="logstash" />
</root>
</configuration>
I've checked the Logstash service, and it seems to be running, but my Spring Boot app is still unable to connect.
Any suggestions on what could be causing the connection refusal?
Upvotes: 0
Views: 153