Logstash 容器所需的端口主要取决于你使用的输入和输出插件,以及 Logstash 和其他系统之间的交互方式。以下是常见的端口需求及其用途:


1. 常见端口

1.1 输入插件(Input Plugins)

  • 5044(默认):用于接收来自 Beats(如 Filebeat、Metricbeat)发送的数据。

    • 示例:Logstash 的 beats 插件。
    • 配置:
      yaml
      input { beats { port => 5044 } }
    • Docker Compose 中映射:
      yaml
      ports: - "5044:5044"
  • 5000(默认):用于接收 TCP 或 UDP 数据。

    • 示例:Logstash 的 tcpudp 插件。
    • 配置:
      yaml
      input { tcp { port => 5000 } }
    • Docker Compose 中映射:
      yaml
      ports: - "5000:5000"
  • 9600(默认):Logstash 的 HTTP API 端口。

    • 示例:用于监控和管理 Logstash 实例。
    • 配置:
      yaml
      http.host: "0.0.0.0" http.port: 9600
    • Docker Compose 中映射:
      yaml
      ports: - "9600:9600"

1.2 输出插件(Output Plugins)

输出插件通常不需要公开端口,因为 Logstash 是客户端角色,主动向其他服务(如 Elasticsearch、Kafka)发送数据。

  • 9200(Elasticsearch)
    • Logstash 使用 elasticsearch 输出插件发送数据到 Elasticsearch。
    • 示例配置:
      yaml
      output { elasticsearch { hosts => ["http://elasticsearch:9200"] } }
    • 不需要在 Logstash 中公开端口。

1.3 可选插件(如 HTTP 输入)

  • 8080(示例):接收 HTTP 请求的端口。
    • 示例:Logstash 的 http 输入插件。
    • 配置:
      yaml
      input { http { port => 8080 } }
    • Docker Compose 中映射:
      yaml
      ports: - "8080:8080"

2. 完整 Docker Compose 示例

以下是一个完整的 docker-compose.yml 示例,展示如何配置常见端口:

yaml
version: "3.8" services: logstash: image: docker.elastic.co/logstash/logstash:8.6.0 container_name: logstash volumes: - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf ports: - "5044:5044" # Beats 输入 - "5000:5000" # TCP 输入 - "9600:9600" # HTTP API - "8080:8080" # HTTP 输入(可选) environment: - LOGSTASH_JAVA_OPTS=-Xms256m -Xmx256m

3. 确认哪些端口需要公开

  1. 内部通信端口

    • 如果 Logstash 和 Beats 或其他服务运行在同一个 Docker 网络中(通过 docker-composenetworks 配置),不需要公开端口,只需使用内部服务名通信。
  2. 外部访问端口

    • 如果 Logstash 的输入插件需要从外部接收数据(如 Filebeat 在宿主机上运行),需要将端口映射到宿主机。

4. 常见场景下的端口需求

场景插件端口是否需要映射到宿主机
接收 Filebeat 数据beats5044
接收 TCP 数据tcp5000
接收 HTTP 数据http自定义(如 8080)
API 监控HTTP API9600可选
发送到 Elasticsearchelasticsearch9200(Elasticsearch)

5. 测试端口连接

使用 curl 或其他工具测试端口是否工作正常:

bash
curl -X POST "http://localhost:5044" -d "test message"

检查 Logstash 是否收到数据。


通过以上配置,你可以根据具体需求选择需要的端口进行映射。

点赞(368) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部