docker安装elasticsearch和kibana
elasticsearch版本和kibana版本需保持一致。这里我使用的都是8.18.2
安装elasticsearch
docker-compose.yml
networks:es-net: external: true
services:elasticsearch:container_name: es01deploy:resources:limits:cpus: 0memory: 0environment:- discovery.type=single-node- ELASTIC_PASSWORD=elastic- xpack.security.enabled=abc123- ES_JAVA_OPTS=-Xlog:disable -Xlog:gc=debug:stderr -Xms512m -Xmx512mimage: elasticsearch:8.18.2labels:createdBy: Appsnetworks:- 1panel-networkports:- 9200:9200- 9300:9300restart: alwaysulimits:memlock:hard: -1soft: -1nofile:hard: 65536soft: 65536volumes:- ./data/data:/usr/share/elasticsearch/data- ./data/backup:/usr/share/elasticsearch/backup- ./data/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
docker compose down
docker compose up -d
安装kibana
doceker-compose.yml
networks:es-net:external: true
services:kibana:container_name: kibana01deploy:resources:limits:cpus: 0memory: 0environment:- ELASTICSEARCH_HOSTS=http://es01:9200 # 通过服务名连接ES# - SERVER_HOST=0.0.0.0 # 允许外部访问(默认已启用)- I18N_LOCALE=zh-CN # 中文界面# 若ES启用安全认证:# - ELASTICSEARCH_USERNAME=${ELASTICSEARCH_USERNAME}# - ELASTICSEARCH_PASSWORD=${ELASTICSEARCH_PASSWORD}- ELASTICSEARCH_SERVICEACCOUNTTOKEN=AAEAAWV***IRzJTdldvVDRnimage: kibana:8.18.2labels:createdBy: Appsnetworks:- es-netports:- 5601:5601restart: alwaysulimits:memlock:hard: -1soft: -1nofile:hard: 65536soft: 65536# volumes:# - ./kibana-config/kibana.yml:/usr/share/kibana/config/kibana.yml
Elasticsearch 8.0 起,Kibana 不再允许使用 elastic
用户写入系统索引,因为这存在安全风险。可以参考https://www.elastic.co/guide/en/elasticsearch/reference/8.0/service-accounts.html
解决方案:使用服务账号令牌(Service Account Token)
进入你的kibana容器
bin/elasticsearch-service-tokens create elastic/kibana kibana-token
- Elasticsearch 限定只能使用预定义的服务账号主账号名(principal),因此不能使用
kibana
作为账号名,而应使用elastic/kibana
elastic/kibana
是内置的服务账号(principal)kibana-token
是你自定义的令牌名(token name)
运行后你会得到类似结果:
SERVICE_TOKEN elastic/kibana/kibana-token = AAEAAWV***IRzJTdldvVDRn
其中AAEAAWV***IRzJTdldvVDRn
就是你得到的token
可以配置kibana.yml
volumes:- ./kibana-config/kibana.yml:/usr/share/kibana/config/kibana.yml
elasticsearch.hosts: ["http://elasticsearch:9200"]
elasticsearch.serviceAccountToken: "AAEAAWV***IRzJTdldvVDRn"
也可以直接添加环境变量
environment:- ELASTICSEARCH_HOSTS=http://elasticsearch:9200- ELASTICSEARCH_SERVICEACCOUNTTOKEN=AAEAAWV***IRzJTdldvVDRn
使用
浏览器访问http://you_server_host:5601
,进入kibana的登入界面
账号和密码是elastic的账号密码
elastic
abc123