在使用 Docker 容器部署 Logstash 时,可以通过环境变量来配置与 Elasticsearch 的连接,包括设置证书路径和用户密码等。以下是详细的配置步骤和示例。


1. 基本思路

通过环境变量传递 Elasticsearch 的用户名、密码和证书路径,并在 Logstash 的配置文件中使用环境变量引用这些值。这样可以避免在配置文件中直接暴露敏感信息。


2. 示例配置

2.1 Docker Compose 配置

创建一个 docker-compose.yml 文件,定义 Logstash 和 Elasticsearch 容器的服务:

yaml
version: "3.8" services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.6.0 container_name: elasticsearch environment: - discovery.type=single-node - xpack.security.enabled=true - xpack.security.http.ssl.enabled=true - xpack.security.http.ssl.keystore.path=/usr/share/elasticsearch/config/certs/elasticsearch.p12 - ELASTIC_PASSWORD=elastic_password # Elasticsearch 管理员密码 volumes: - ./certs:/usr/share/elasticsearch/config/certs ports: - "9200:9200" logstash: image: docker.elastic.co/logstash/logstash:8.6.0 container_name: logstash environment: - LOGSTASH_JAVA_OPTS=-Xms256m -Xmx256m - ELASTICSEARCH_HOST=https://elasticsearch:9200 - ELASTICSEARCH_USER=elastic - ELASTICSEARCH_PASSWORD=elastic_password - ELASTICSEARCH_CACERT=/usr/share/logstash/config/certs/ca.crt volumes: - ./certs:/usr/share/logstash/config/certs - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf ports: - "5044:5044"

2.2 Logstash 配置文件

在 Logstash 的配置文件中,使用环境变量引用 Elasticsearch 的连接信息。例如,创建一个 logstash.conf 文件:

yaml
input { beats { port => 5044 } } output { elasticsearch { hosts => ["${ELASTICSEARCH_HOST}"] user => "${ELASTICSEARCH_USER}" password => "${ELASTICSEARCH_PASSWORD}" cacert => "${ELASTICSEARCH_CACERT}" ssl => true } }
  • ${ELASTICSEARCH_HOST}: Elasticsearch 的地址。
  • ${ELASTICSEARCH_USER}: Elasticsearch 用户名。
  • ${ELASTICSEARCH_PASSWORD}: Elasticsearch 用户密码。
  • ${ELASTICSEARCH_CACERT}: Elasticsearch 的 CA 证书路径。

3. 启动服务

运行以下命令启动服务:

bash
docker-compose up -d

4. 验证配置

4.1 检查 Logstash 是否成功启动

查看 Logstash 容器日志,检查是否有连接 Elasticsearch 的错误:

bash
docker logs logstash

4.2 验证 Elasticsearch 数据

使用 curl 检查 Elasticsearch 是否收到 Logstash 的数据:

bash
curl -X GET "https://localhost:9200/_cat/indices?v" -u elastic:elastic_password --cacert ./certs/ca.crt

5. 注意事项

5.1 使用环境变量管理敏感信息

对于敏感信息(如用户名、密码),建议使用环境变量,而不是硬编码到配置文件中。

5.2 检查证书权限

确保挂载到 Logstash 容器的证书文件有适当的权限:

bash
chmod 644 ./certs/ca.crt

5.3 环境变量覆盖

如果 Logstash 的配置文件中未引用环境变量,则需要确保 logstash.yml 中未直接指定 output 配置,以避免覆盖。


通过以上配置,Logstash 可以通过环境变量设置 Elasticsearch 的证书和密码,实现安全、灵活的连接配置。

点赞(367) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部