启用Fleet需开启Kibana安全,添加Fleet Server失败求助
问题根源分析
你的报错核心是Fleet依赖Elasticsearch和Kibana的安全功能正常运行,但当前配置存在多处冲突和错误:
- Elasticsearch禁用了安全功能(
xpack.security.enabled=false),但Fleet需要通过安全组件生成service token完成认证。 - Kibana虽然开启了安全功能,但设置了
xpack.security.authc.providers=[],导致没有可用的认证方式,安全功能实际未生效。 - Fleet Server镜像版本(8.6.0)与ES/Kibana(8.13.2)不兼容,Elastic栈要求所有组件版本严格一致。
- Fleet Server配置中Elasticsearch端口写错(
9201应为9200),且SSL配置与ES实际状态不匹配。
修复步骤
1. 启用Elasticsearch安全功能
Fleet必须依赖ES的安全组件,需开启xpack.security.enabled=true,测试环境可额外添加xpack.security.http.ssl.enabled=false关闭HTTP SSL。
2. 修复Kibana安全认证配置
删除xpack.security.authc.providers=[],保留默认用户名密码认证方式,同时修正ES连接地址为http://elasticsearch:9200(对应ES的HTTP模式)。
3. 统一Fleet Server版本
将Fleet Server镜像版本改为8.13.2,与ES/Kibana保持一致。
4. 修正Fleet Server的ES连接和SSL配置
- 将
FLEET_SERVER_ELASTICSEARCH_HOST改为http://elasticsearch:9200 - 设置
FLEET_SERVER_INSECURE_HTTP=true(对应ES的HTTP模式) - 开启
KIBANA_FLEET_SETUP=true,让Fleet Server自动完成Kibana侧初始化
修正后的完整Docker Compose配置
version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.13.2 container_name: elasticsearch environment: - discovery.type=single-node - ELASTIC_PASSWORD=test - xpack.security.enabled=true - xpack.security.http.ssl.enabled=false # 测试环境关闭HTTP SSL ports: - "9200:9200" kibana: image: docker.elastic.co/kibana/kibana:8.13.2 container_name: kibana ports: - "5601:5601" depends_on: - elasticsearch environment: - ELASTICSEARCH_URL=http://elasticsearch:9200 # 对应ES的HTTP地址 - SERVERNAME=kibana - ELASTICSEARCH_USERNAME=kibana_system - ELASTICSEARCH_PASSWORD=test - XPACK_REPORTING_KIBANASERVER_HOSTNAME=localhost - SERVER_SSL_ENABLED=false - xpack.security.enabled=true # 保留安全功能开启 apm-server: image: docker.elastic.co/apm/apm-server:8.13.2 container_name: apm-server ports: - "8200:8200" depends_on: - elasticsearch - kibana environment: - OUTPUT_ELASTICSEARCH_ENABLED=true - OUTPUT_ELASTICSEARCH_HOSTS=["elasticsearch:9200"] - ELASTICSEARCH_HOSTS="http://elasticsearch:9200" fleet-server: image: docker.elastic.co/beats/elastic-agent:8.13.2 # 统一版本 container_name: fleet-server restart: "always" ports: - "9243:9243" depends_on: - elasticsearch - kibana environment: FLEET_SERVER_ENABLE: true FLEET_SERVER_ELASTICSEARCH_HOST: "http://elasticsearch:9200" # 修正地址和端口 FLEET_SERVER_PORT: 9243 FLEET_SERVER_INSECURE_HTTP: true # 对应ES的HTTP模式 KIBANA_HOST: "http://kibana:5601" KIBANA_FLEET_SETUP: true # 开启自动初始化 ELASTICSEARCH_PASSWORD: test # 添加ES密码用于初始化
后续操作
- 清理原有容器和数据卷(测试环境):
docker-compose down -v
- 重新启动服务:
docker-compose up -d
- 等待Kibana启动完成后,访问
http://localhost:5601,用用户名elastic、密码test登录,再尝试添加Fleet Server即可。
内容的提问来源于stack exchange,提问作者user24155091
相关产品推荐
相关产品推荐

