在使用 Docker 容器部署 Logstash 时,可以通过环境变量来配置与 Elasticsearch 的连接,包括设置证书路径和用户密码等。以下是详细的配置步骤和示例。
1. 基本思路
通过环境变量传递 Elasticsearch 的用户名、密码和证书路径,并在 Logstash 的配置文件中使用环境变量引用这些值。这样可以避免在配置文件中直接暴露敏感信息。
2. 示例配置
2.1 Docker Compose 配置
创建一个 docker-compose.yml
文件,定义 Logstash 和 Elasticsearch 容器的服务:
2.2 Logstash 配置文件
在 Logstash 的配置文件中,使用环境变量引用 Elasticsearch 的连接信息。例如,创建一个 logstash.conf
文件:
${ELASTICSEARCH_HOST}
: Elasticsearch 的地址。${ELASTICSEARCH_USER}
: Elasticsearch 用户名。${ELASTICSEARCH_PASSWORD}
: Elasticsearch 用户密码。${ELASTICSEARCH_CACERT}
: Elasticsearch 的 CA 证书路径。
3. 启动服务
运行以下命令启动服务:
4. 验证配置
4.1 检查 Logstash 是否成功启动
查看 Logstash 容器日志,检查是否有连接 Elasticsearch 的错误:
4.2 验证 Elasticsearch 数据
使用 curl
检查 Elasticsearch 是否收到 Logstash 的数据:
5. 注意事项
5.1 使用环境变量管理敏感信息
对于敏感信息(如用户名、密码),建议使用环境变量,而不是硬编码到配置文件中。
5.2 检查证书权限
确保挂载到 Logstash 容器的证书文件有适当的权限:
5.3 环境变量覆盖
如果 Logstash 的配置文件中未引用环境变量,则需要确保 logstash.yml
中未直接指定 output
配置,以避免覆盖。
通过以上配置,Logstash 可以通过环境变量设置 Elasticsearch 的证书和密码,实现安全、灵活的连接配置。