Spring Boot和LogStash TCP链接使用Docker组成的“ Localhost/<未解决”:5000’

发布于 2025-02-01 18:52:54 字数 4510 浏览 2 评论 0 原文

它在本地对我有用,但是我使用 docker

错误是:localhost/<未解决的>:5000:连接, 如何为 logstash 目标ID

docker-compose

 version: '3.2'
    services:
      elasticsearch:
        image: elasticsearch:$ELK_VERSION
        volumes:
          - elasticsearch:/usr/share/elasticsearch/data
        environment:
          ES_JAVA_OPTS: "-Xmx256m -Xms256m"
          # Note: currently there doesn't seem to be a way to change the default user for Elasticsearch
          ELASTIC_PASSWORD: $ELASTIC_PASSWORD
          # Use single node discovery in order to disable production mode and avoid bootstrap checks
          # see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html
          discovery.type: single-node
          # X-Pack security needs to be enabled for Elasticsearch to actually authenticate requests
          xpack.security.enabled: "true"
        ports:
          - "9200:9200"
          - "9300:9300"
        healthcheck:
          test: "wget -q -O - http://$ELASTIC_USER:$ELASTIC_PASSWORD@localhost:9200/_cat/health"
          interval: 1s
          timeout: 30s
          retries: 300
        networks:
          - internal
        restart: unless-stopped
      # https://www.elastic.co/guide/en/logstash/current/docker-config.html
      logstash:
        image: logstash:$ELK_VERSION
        ports:
          - "5000:5000"
          - "9600:9600"
        environment:
          LS_JAVA_OPTS: "-Xmx256m -Xms256m"
          ELASTIC_USER: $ELASTIC_USER
          ELASTIC_PASSWORD: $ELASTIC_PASSWORD
          XPACK_MONITORING_ELASTICSEARCH_USERNAME: $ELASTIC_USER
          XPACK_MONITORING_ELASTICSEARCH_PASSWORD: $ELASTIC_PASSWORD
          XPACK_MONITORING_ELASTICSEARCH_HOSTS: "elasticsearch:9200"
          XPACK_MONITORING_ENABLED: "true"
        volumes:
          - ./logstash/pipeline:/usr/share/logstash/pipeline:ro
        networks:
          - internal
        restart: unless-stopped
        depends_on:
          - elasticsearch
    
      # https://www.elastic.co/guide/en/kibana/current/docker.html
      kibana:
        image: kibana:${ELK_VERSION}
        environment:
          ELASTICSEARCH_USERNAME: $ELASTIC_USER
          ELASTICSEARCH_PASSWORD: $ELASTIC_PASSWORD
          # Because Elasticsearch is running in a containerized environment
          # (setting this to false will result in CPU stats not being correct in the Monitoring UI):
          XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED: "true"
        ports:
          - "5601:5601"
        networks:
          - internal
        restart: unless-stopped
        depends_on:
          - elasticsearch
          - logstash
      mysqldb:
        image: mysql:5.7
        restart: unless-stopped
        env_file: ./.env
        environment:
          - MYSQL_ROOT_PASSWORD=$MYSQLDB_ROOT_PASSWORD
          - MYSQL_DATABASE=$MYSQLDB_DATABASE
        ports:
          - $MYSQLDB_LOCAL_PORT:$MYSQLDB_DOCKER_PORT
        volumes:
          - db:/var/lib/mysql
      app:
        depends_on:
          - mysqldb
        build: ./../
        restart: on-failure
        env_file: ./.env
        ports:
          - $SPRING_LOCAL_PORT:$SPRING_DOCKER_PORT
        environment:
          SPRING_APPLICATION_JSON: '{
            "spring.datasource.url"  : "jdbc:mysql://mysqldb:$MYSQLDB_DOCKER_PORT/$MYSQLDB_DATABASE?useSSL=false",
            "spring.datasource.username" : "$MYSQLDB_USER",
            "spring.datasource.password" : "$MYSQLDB_ROOT_PASSWORD",
            "spring.jpa.properties.hibernate.dialect" : "org.hibernate.dialect.MySQL5InnoDBDialect",
            "spring.jpa.hibernate.ddl-auto" : "update",
            "spring.application.name" : "ebnelhaythem"
          }'
        volumes:
          - .m2:/root/.m2
    
    networks:
      internal:
    
    volumes:
      elasticsearch:
      db:

和日志设置此未解决的值

elastic_log_docker-app-1            | 14:15:45,959 |-WARN in net.logstash.logback.appender.LogstashTcpSocketAppender[logstash] - Log destination localhost/<unresolved>:5000: connection
         failed. java.net.ConnectException: Connection refused
        elastic_log_docker-app-1            |   at java.net.ConnectException: Connection refused
        elastic_log_docker-app-1            |   at      at java.base/sun.nio.ch.Net.pollConnect(Native Method)
        elastic_log_docker-app-1            |   at      at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672)

It works for me in local but i had an error when using docker :

error is : localhost/<unresolved>:5000: connection,
how can i set this unresolved value for logstash destination id

docker-compose

 version: '3.2'
    services:
      elasticsearch:
        image: elasticsearch:$ELK_VERSION
        volumes:
          - elasticsearch:/usr/share/elasticsearch/data
        environment:
          ES_JAVA_OPTS: "-Xmx256m -Xms256m"
          # Note: currently there doesn't seem to be a way to change the default user for Elasticsearch
          ELASTIC_PASSWORD: $ELASTIC_PASSWORD
          # Use single node discovery in order to disable production mode and avoid bootstrap checks
          # see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html
          discovery.type: single-node
          # X-Pack security needs to be enabled for Elasticsearch to actually authenticate requests
          xpack.security.enabled: "true"
        ports:
          - "9200:9200"
          - "9300:9300"
        healthcheck:
          test: "wget -q -O - http://$ELASTIC_USER:$ELASTIC_PASSWORD@localhost:9200/_cat/health"
          interval: 1s
          timeout: 30s
          retries: 300
        networks:
          - internal
        restart: unless-stopped
      # https://www.elastic.co/guide/en/logstash/current/docker-config.html
      logstash:
        image: logstash:$ELK_VERSION
        ports:
          - "5000:5000"
          - "9600:9600"
        environment:
          LS_JAVA_OPTS: "-Xmx256m -Xms256m"
          ELASTIC_USER: $ELASTIC_USER
          ELASTIC_PASSWORD: $ELASTIC_PASSWORD
          XPACK_MONITORING_ELASTICSEARCH_USERNAME: $ELASTIC_USER
          XPACK_MONITORING_ELASTICSEARCH_PASSWORD: $ELASTIC_PASSWORD
          XPACK_MONITORING_ELASTICSEARCH_HOSTS: "elasticsearch:9200"
          XPACK_MONITORING_ENABLED: "true"
        volumes:
          - ./logstash/pipeline:/usr/share/logstash/pipeline:ro
        networks:
          - internal
        restart: unless-stopped
        depends_on:
          - elasticsearch
    
      # https://www.elastic.co/guide/en/kibana/current/docker.html
      kibana:
        image: kibana:${ELK_VERSION}
        environment:
          ELASTICSEARCH_USERNAME: $ELASTIC_USER
          ELASTICSEARCH_PASSWORD: $ELASTIC_PASSWORD
          # Because Elasticsearch is running in a containerized environment
          # (setting this to false will result in CPU stats not being correct in the Monitoring UI):
          XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED: "true"
        ports:
          - "5601:5601"
        networks:
          - internal
        restart: unless-stopped
        depends_on:
          - elasticsearch
          - logstash
      mysqldb:
        image: mysql:5.7
        restart: unless-stopped
        env_file: ./.env
        environment:
          - MYSQL_ROOT_PASSWORD=$MYSQLDB_ROOT_PASSWORD
          - MYSQL_DATABASE=$MYSQLDB_DATABASE
        ports:
          - $MYSQLDB_LOCAL_PORT:$MYSQLDB_DOCKER_PORT
        volumes:
          - db:/var/lib/mysql
      app:
        depends_on:
          - mysqldb
        build: ./../
        restart: on-failure
        env_file: ./.env
        ports:
          - $SPRING_LOCAL_PORT:$SPRING_DOCKER_PORT
        environment:
          SPRING_APPLICATION_JSON: '{
            "spring.datasource.url"  : "jdbc:mysql://mysqldb:$MYSQLDB_DOCKER_PORT/$MYSQLDB_DATABASE?useSSL=false",
            "spring.datasource.username" : "$MYSQLDB_USER",
            "spring.datasource.password" : "$MYSQLDB_ROOT_PASSWORD",
            "spring.jpa.properties.hibernate.dialect" : "org.hibernate.dialect.MySQL5InnoDBDialect",
            "spring.jpa.hibernate.ddl-auto" : "update",
            "spring.application.name" : "ebnelhaythem"
          }'
        volumes:
          - .m2:/root/.m2
    
    networks:
      internal:
    
    volumes:
      elasticsearch:
      db:

AND LOGS ARE :

elastic_log_docker-app-1            | 14:15:45,959 |-WARN in net.logstash.logback.appender.LogstashTcpSocketAppender[logstash] - Log destination localhost/<unresolved>:5000: connection
         failed. java.net.ConnectException: Connection refused
        elastic_log_docker-app-1            |   at java.net.ConnectException: Connection refused
        elastic_log_docker-app-1            |   at      at java.base/sun.nio.ch.Net.pollConnect(Native Method)
        elastic_log_docker-app-1            |   at      at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

秋意浓 2025-02-08 18:52:54

您的Spring Boot应用程序期望 logstash 可在 localhost 上可用:

logstash:
  host: localhost

但是,当您运行Docker-Compose内的所有内容时,Logstash将在 localhost 因为现在是指应用程序容器

要解决这个问题,请覆盖用docker-compose运行应用程序时,带有值 logstash (因此,Docker-Compose Service的名称)。与MySQL URL一样。

Your Spring Boot application expect logstash to be available at localhost:

logstash:
  host: localhost

However, when you run everything inside docker-compose, logstash will not be present at localhost since this now refers to the app container.

To resolve this, override the logstash host property when you run the application with docker-compose with the value logstash (so the name of the docker-compose service). Similar as you do for the MySQL url.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文