Elasticsearch & Kibana & Filebeat开启SSL通信
发布日期:2025-03-29 16:50:29 浏览次数:5 分类:精选文章

本文共 4071 字,大约阅读时间需要 13 分钟。

EFK 搭建并开启 TLS 通信

Elasticsearch 与 Kibana 搭建指南

1. 安装 Docker

安装 Docker 和 Docker Compose 是quisites 的前提条件,安装方法请参考标准文档或之前的相关文章。

2. 配置文件准备

a.、新建 instances.yml

instances:  - name: es01    dns: ["es01", "localhost"]    ip: ["127.0.0.1"]  - name: kib01    dns: ["kib01", "localhost"]

b. 新建 .env 配置文件

COMPOSE_PROJECT_NAME=esCERTS_DIR=/usr/share/elasticsearch/config/certificatesVERSION=7.8.0

c. 新建 create-certs.yml 适用

version: '2.2'services:  create_certs:    image: elasticsearch:${VERSION}    container_name: create_certs    command:      - bash -c 'yum install -y -q -e 0 unzip; if [[ ! -f /certs/bundle.zip ]]; then bin/elasticsearch-certutil cert --silent --pem --in config/certificates/instances.yml -out /certs/bundle.zip; unzip /certs/bundle.zip -d /certs; fi; chown -R 1000:0 /certs'    working_dir: /usr/share/elasticsearch    volumes:      - certs:/certs      - .:/usr/share/elasticsearch/config/certificates    networks:      - elasticvolumes:  certs:

3. 创建 elastic-docker-tls.yml 配置文件

version: '2.2'services:  es01:    image: elasticsearch:${VERSION}    container_name: es01    environment:      - node.name=es01      - cluster.name=es-docker      - discovery.type=single-node      - bootstrap.memory_lock=true      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"      - xpack.license.self_generated.type=trial      - xpack.security.enabled=true      - xpack.security.http.ssl.enabled=true      - xpack.security.http.ssl.key=$CERTS_DIR/es01/es01.key      - xpack.security.http.ssl.certificate_authorities=$CERTS_DIR/ca/ca.crt      - xpack.security.http.ssl.certificate=$CERTS_DIR/es01/es01.crt      - xpack.security.transport.ssl.enabled=true      - xpack.security.transport.ssl.verification_mode=certificate      - xpack.security.transport.ssl.certificate_authorities=$CERTS_DIR/ca/ca.crt      - xpack.security.transport.ssl.certificate=$CERTS_DIR/es01/es01.crt      - xpack.security.transport.ssl.key=$CERTS_DIR/es01/es01.key    ulimits:      memlock:        soft: -1        hard: -1    volumes:      - data01:/usr/share/elasticsearch/data      - certs:$CERTS_DIR    ports:      - 9200:9200    networks:      - elastic    healthcheck:      test: curl --cacert $CERTS_DIR/ca/ca.crt -s https://localhost:9200      interval: 30s      timeout: 10s      retries: 5  kib01:    image: kibana:${VERSION}    container_name: kib01    depends_on:      {"es01": {"condition": "service_healthy"}}    ports:      - 5601:5601    environment:      SERVERNAME: localhost      ELASTICSEARCH_URL: https://es01:9200      ELASTICSEARCH_HOSTS: https://es01:9200      ELASTICSEARCH_USERNAME: kibana_system      ELASTICSEARCH_PASSWORD: CHANGEME      ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES: $CERTS_DIR/ca/ca.crt      SERVER_SSL_ENABLED: "true"      SERVER_SSL_KEY: $CERTS_DIR/kib01/kib01.key      SERVER_SSL_CERTIFICATE: $CERTS_DIR/kib01/kib01.crt    volumes:      - certs:$CERTS_DIR    networks:      - elasticvolumes:  data01:  certs:

4. 执行操作步骤

a. 第一次运行创建证书

docker-compose -f create-certs.yml run --rm create_certs

b. 查看证书目录

此时应生成 /var/lib/docker/volumes/es_certs/_data 目录下的证书文件,如 bundle.zipcaes01kib01 等。

c. 启动 Elasticsearch 和 Kibana

docker-compose -f elastic-docker-tls.yml up -d

d. Elasticsearch 集群完成后,生成默认用户密码

docker exec es01 /bin/bash -c \"bin/elasticsearch-setup-passwords auto --batch --url https://es01:9200"

请记录生成的密码以供后续使用。

5. 修改配置文件

a. 修改 elastic-docker-tls.yml 中的 Kibana 密码

Kibana 部分添加以下内容:

- ELASTICSEARCH_PASSWORD: your_kibana_password

确保将密码替换为安全的强密码。

b. 重启服务

docker-compose -f elastic-docker-tls.yml stopdocker-compose -f elastic-docker-tls.yml up -d

6. 验证 Kibana 登录

访问 https://<hostname>:5601,即可进入 Kibana界面。


Filebeat 配置

Filebeat 可以通过多种方式安装,这里采用 tar 包安装方式,并进行相关配置,确保 SSL 通信支持。

# 输出到 Elasticsearch 的配置output.elasticsearch:  hosts: ["https://127.0.0.1:9200"]  protocol: "https"  username: elastic  password: rMesfHfEETESJEliJSIv  ssl.certificate_authorities: /root/filebeat/ca.crt  ssl.certificate: /root/filebeat/es01.crt  ssl.key: /root/filebeat/es01.key  index: "tiktok-%{+yyyy.MM.dd}"

以上配置为 Filebeat 与 Elasticsearch 的通信提供了必要的 SSL 信息。完成配置后,Filebeat 支持通过 HTTPS 收集日志并写入 Elasticsearch。

上一篇:ElasticSearch - DSL查询文档语法,以及深度分页问题、解决方案
下一篇:el-table select事件判断当前项是否勾选

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月25日 22时47分52秒