我想用docker-compose运行elasticsearch和kibana。这是我的docker-compose.yml,我使用docker-compose --env-filedev.env up运行它
Docker Compose
version: '3.1'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.1.1
container_name: elasticsearch
environment:
- cluster.name=elasticsearch-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.type=single-node
- xpack.security.enrollment.enabled=true
- ELASTICSEARCH_USERNAME=${ELASTICSEARCH_USERNAME}
- ELASTICSEARCH_PASSWORD=${ELASTICSEARCH_PASSWORD}
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata:/usr/share/elasticsearch/data
ports:
- "9200:9200"
- "9300:9300"
networks:
- esnet
kibana:
image: docker.elastic.co/kibana/kibana:8.1.1
container_name: kibana
environment:
- ELASTICSEARCH_HOSTS=${ELASTICSEARCH_HOSTS}
- ELASTICSEARCH_USERNAME=${ELASTICSEARCH_USERNAME}
- ELASTICSEARCH_PASSWORD=${ELASTICSEARCH_PASSWORD}
- xpack.security.enabled=true
depends_on:
- elasticsearch
ports:
- "5601:5601"
networks:
- esnet
volumes:
esdata:
driver: local
postgres-data:
driver: local
networks:
esnet:
StacktraceError: [config validation of [elasticsearch].username]: value of "elastic" is forbidden. This is a superuser account that cannot write to system indices that Kibana needs to function. Use a service account token instead
例如,我设法为用户elastic/kibana创建服务帐户令牌,但如何将其设置为docker-compose?是否有一个特定的环境变量,我应该使用?或者有没有一种方法可以让它工作,而不使用服务帐户?
2条答案
按热度按时间zsbz8rwp1#
我偶然发现了同样的问题,并尝试使用
kibana_admin
和kibana_system
built-in users,但这也不起作用。也许你可以为这些用户设置密码,但我不能。elastic
用户角色不允许拥有Kibana所需的system-index write-access
。这是基于Elastic(Link to Pullrequest)的更改。您应该改为使用服务帐户,如docs服务帐户中所述。显然,根据创建服务帐户令牌的docs,您必须以某种方式创建Elasticsearch容器并在启动Kibana容器之前创建令牌。Elasticsearch forums也讨论了这一点。
降级和使用以前的ELK版本也是一种可能性,这也是我所做的,因为我只需要本地开发的集群。
jaxagkaj2#
您可以在此环境中设置服务帐户令牌:在你的docker-compose中添加“ELASTICESTAL_SERVICEACCOUNTTOKEN”。我设法在我的docker-compose中为Kibana设置了服务帐户令牌,如下所示:
我的logstash.conf文件:
我还使用此命令为kibana创建了服务帐户令牌: