elasticsearch版本和kibana版本需保持一致。这里我使用的都是8.18.2
安装elasticsearch
docker-compose.yml
networks:
es-net:
external: true
services:
elasticsearch:
container_name: es01
deploy:
resources:
limits:
cpus: 0
memory: 0
environment:
- discovery.type=single-node
- ELASTIC_PASSWORD=elastic
- xpack.security.enabled=abc123
- ES_JAVA_OPTS=-Xlog:disable -Xlog:gc=debug:stderr -Xms512m -Xmx512m
image: elasticsearch:8.18.2
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- 9200:9200
- 9300:9300
restart: always
ulimits:
memlock:
hard: -1
soft: -1
nofile:
hard: 65536
soft: 65536
volumes:
- ./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: kibana01
deploy:
resources:
limits:
cpus: 0
memory: 0
environment:
- 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***IRzJTdldvVDRn
image: kibana:8.18.2
labels:
createdBy: Apps
networks:
- es-net
ports:
- 5601:5601
restart: always
ulimits:
memlock:
hard: -1
soft: -1
nofile:
hard: 65536
soft: 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