Logstash 容器所需的端口主要取决于你使用的输入和输出插件,以及 Logstash 和其他系统之间的交互方式。以下是常见的端口需求及其用途:
1. 常见端口
1.1 输入插件(Input Plugins)
5044(默认):用于接收来自 Beats(如 Filebeat、Metricbeat)发送的数据。
- 示例:Logstash 的
beats
插件。 - 配置:
- Docker Compose 中映射:
- 示例:Logstash 的
5000(默认):用于接收 TCP 或 UDP 数据。
- 示例:Logstash 的
tcp
或udp
插件。 - 配置:
- Docker Compose 中映射:
- 示例:Logstash 的
9600(默认):Logstash 的 HTTP API 端口。
- 示例:用于监控和管理 Logstash 实例。
- 配置:
- Docker Compose 中映射:
1.2 输出插件(Output Plugins)
输出插件通常不需要公开端口,因为 Logstash 是客户端角色,主动向其他服务(如 Elasticsearch、Kafka)发送数据。
- 9200(Elasticsearch):
- Logstash 使用
elasticsearch
输出插件发送数据到 Elasticsearch。 - 示例配置:
- 不需要在 Logstash 中公开端口。
- Logstash 使用
1.3 可选插件(如 HTTP 输入)
- 8080(示例):接收 HTTP 请求的端口。
- 示例:Logstash 的
http
输入插件。 - 配置:
- Docker Compose 中映射:
- 示例:Logstash 的
2. 完整 Docker Compose 示例
以下是一个完整的 docker-compose.yml
示例,展示如何配置常见端口:
3. 确认哪些端口需要公开
内部通信端口:
- 如果 Logstash 和 Beats 或其他服务运行在同一个 Docker 网络中(通过
docker-compose
的networks
配置),不需要公开端口,只需使用内部服务名通信。
- 如果 Logstash 和 Beats 或其他服务运行在同一个 Docker 网络中(通过
外部访问端口:
- 如果 Logstash 的输入插件需要从外部接收数据(如 Filebeat 在宿主机上运行),需要将端口映射到宿主机。
4. 常见场景下的端口需求
场景 | 插件 | 端口 | 是否需要映射到宿主机 |
---|---|---|---|
接收 Filebeat 数据 | beats | 5044 | 是 |
接收 TCP 数据 | tcp | 5000 | 是 |
接收 HTTP 数据 | http | 自定义(如 8080) | 是 |
API 监控 | HTTP API | 9600 | 可选 |
发送到 Elasticsearch | elasticsearch | 9200(Elasticsearch) | 否 |
5. 测试端口连接
使用 curl
或其他工具测试端口是否工作正常:
检查 Logstash 是否收到数据。
通过以上配置,你可以根据具体需求选择需要的端口进行映射。