Docker部署Kibana 8对接.NET 8日志:注册令牌配置与忽略方案
在多个.NET 8项目中引入Elasticsearch 8.7.1和Kibana用于日志记录。目前遇到的问题:访问Kibana默认地址时,偶尔会要求输入注册令牌,但并非每次都会出现;同时不清楚如何查找或生成该令牌,手动配置也无法成功。
路径A:查找注册令牌
Kibana首页提示注册令牌在Elasticsearch首次启动时自动生成,可在终端日志中查看,但通过docker compose up启动容器后,终端和容器日志中均无相关令牌信息。尝试在Elasticsearch容器中执行生成命令bin\elasticsearch-create-enrollment-token.bat --scope kibana时提示命令不存在,修改为elasticsearch-create-enrollment-token --scope kibana后,又提示[xpack.security.enrollment.enabled]需设为true才能生成令牌。
路径B:手动配置
Kibana首页的「Configure Manually」按钮要求输入Elasticsearch地址,默认值https://localhost:9200可在浏览器访问,但Kibana无法连接。尝试使用Docker网络中的网关IP和Kibana容器IP替换localhost,均无法成功;改用Http协议则会要求输入另一个验证码。
需求总结
希望在本地开发环境中无需复杂操作就能稳定运行该日志方案,无需启用安全功能,仅需实现基础日志功能后交由DevOps配置安全连接。最困扰的是该注册令牌要求并非每次出现。
配置代码
环境变量配置
COMPOSE_PROJECT_NAME=zz-xxx ELK_STACK_VERSION=8.13.2 ES_PORT=9200 KIBANA_PORT=5601
Docker Compose配置
networks: elasticnetwork: driver: bridge services: zz-elasticsearch: container_name: zz-elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:${ELK_STACK_VERSION} networks: - elasticnetwork ports: - ${ES_PORT}:9200 volumes: - zz-els01-data:/usr/share/elasticsearch/data environment: - discovery.type=single-node - xpack.security.enabled=false - xpack.watcher.enabled=false - xpack.monitoring.collection.enabled=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" zz-kibana: container_name: zz-kibana networks: - elasticnetwork depends_on: - zz-elasticsearch image: docker.elastic.co/kibana/kibana:${ELK_STACK_VERSION} ports: - ${KIBANA_PORT}:5601 environment: - ELASTICSEARCH_URL=http://localhost:9200 volumes: zz-els01-data:
内容的提问来源于stack exchange,提问作者ScumSprocket

