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