现在才开始学习这个...
先用docker安装吧
docker pull docker.elastic.co/elasticsearch/elasticsearch
但是发现pull 不下来
Using default tag: latest
Error response from daemon: manifest for docker.elastic.co/elasticsearch/elasticsearch:latest not found: manifest unknown: manifest unknown
然后尝试输入版本号则可以
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.14.3
运行
首先创建个网络,因为后面还有其他组件会用到,便于让这些容器之间通信
docker network create es-net
docker run -d \ --name es \ -e "ES_JAVA_OPTS=-Xms1024M -Xmx1024m" \ -e "discovery.type=single-node" \ -v es-data:/usr/share/elasticsearch/data \ -v es-plugins:/usr/share/elasticsearch/plugins \ --privileged \ --network es-net \ -p 9200:9200 \ -p 9300:9300 \ docker.elastic.co/elasticsearch/elasticsearch:8.14.3 #也可以是镜像ID
ES_JAVA_OPTS=-Xms1024M -Xmx1024m
这里设置的1G 如果不设,我之前的2核2G 内存2G虚拟内存虚拟机直接卡爆了...后来又重新分配了4核4G虚拟内存也4G,然后还是设置了上一句
刚开始运行cpu会占用较大,运行一会就会降下来
运行后
然后访问 https://IP:9200 注意是https 以前的教程是http 在这个版本不能访问
然后会提示输入用户名密码...那密码在哪呢
自己先设置下
docker exec -it es bash
这里进去的当前目录是 /usr/share/elasticsearch/
执行./bin/elasticsearch-setup-passwords interactive
出现:Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]
大概就是要设置很多密码了,建议都设置一样吧,太难记了
按Y
输入N遍一样的密码
然后重启容器
docker restart es
然后输入上面的https://IP:9200
输入elastic 和刚才设置的密码就ok了
另一种重设密码
进入es容器
elasticsearch-reset-password -u elastic
按y 回车会在ssh界面中输出一串密码
设置kibana密码
elasticsearch-reset-password -u kibana_system
新建用户
elasticsearch-users useradd logadmin
然后输入密码
设置角色
elasticsearch-users roles -a superuser logadmin
elasticsearch-users roles -a kibana_system logadmin
#移除授权:
elasticsearch-users roles -r kibana_admin logadmin
#查看授权:
elasticsearch-users roles -v logadmin
安装Kibana
docker pull docker.elastic.co/kibana/kibana:8.14.3
docker run -d \ --name kibana \ -p 5601:5601 \ --network es-net \ docker.elastic.co/kibana/kibana:8.14.3
先进入elasticsearch容器
修改elasticsearch.yml
修改
xpack.security.http.ssl: enabled:
也可以把
xpack.security.enabled: true 改为false 这样kibana就不需要配置密码了 然后重启es容器
然后进入 kibana容器
修改kibana.yml
增加
i18n.locale: zh-CN elasticsearch.username: logadmin elasticsearch.password: 123456 elasticsearch.hosts: [ "http://elasticsearch:9200" ] 改为elasticsearch.hosts: [ "http://es:9200" ] #容器名,这一句我不改启动不了kibana ,我看有的没改也启动了kibana然后可以在kibana网页初始界面配置地址,还有的改为容器网关ip 172.18.0.1的...
修改后重启kibana容器 就可以用logadmin登录了,
如果logadmin 改为kibana_system 也能进入登录界面,但用这个账户登录进入会提示没权限,但可以用elastic账户登录进去
另外关于映射目录
如果直接
docker run -d \ --name es \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms1024M -Xmx1024m" \ -v /root/elk/es-data:/usr/share/elasticsearch/data \ -v /root/elk/es-config:/usr/share/elasticsearch/config \ -v /root/elk/es-logs:/usr/share/elasticsearch/logs \ -v /root/elk/es-plugins:/usr/share/elasticsearch/plugins \ --network es-net \ -p 9200:9200 \ -p 9300:9300 \ docker.elastic.co/elasticsearch/elasticsearch:8.14.3
会导致无法启动容器, 可以先临时创建一个容器
docker run -d \ --name es \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms1024M -Xmx1024m" \ --network es-net \ -p 9200:9200 \ -p 9300:9300 \ docker.elastic.co/elasticsearch/elasticsearch:8.14.3
然后用docker cp 把几个目录复制出来
docker cp -a es:/usr/share/elasticsearch/data /root/elk/es-data docker cp -a es:/usr/share/elasticsearch/config /root/elk/es-config docker cp -a es:/usr/share/elasticsearch/logs /root/elk/es-logs docker cp -a es:/usr/share/elasticsearch/plugins /root/elk/es-plugins
然后再删除这个容器就能用
-v /root/elk/es-data:/usr/share/elasticsearch/data \ -v /root/elk/es-config:/usr/share/elasticsearch/config \ -v /root/elk/es-logs:/usr/share/elasticsearch/logs \ -v /root/elk/es-plugins:/usr/share/elasticsearch/plugins \
创建容器了。
安装Logstash
docker pull docker.elastic.co/logstash/logstash:8.14.3
先创建个临时的
docker run -d --name logstash --network es-net \ -e ES_JAVA_OPTS="-Duser.timezone=Asia/Shanghai" \ --privileged=true \ -p 5044:5044 \ -p 9600:9600 \ docker.elastic.co/logstash/logstash:8.14.3
复制文件
docker cp -a logstash:/usr/share/logstash/config /root/elk/logstash-config docker cp -a logstash:/usr/share/logstash/pipeline /root/elk/logstash-pipeline
删除临时容器
docker rm logstash -f
重新创建容器
docker run -d --name logstash --network es-net \ -v /root/elk/logstash-config:/usr/share/logstash/config \ -v /root/elk/logstash-pipeline:/usr/share/logstash/pipeline \ -e ES_JAVA_OPTS="-Duser.timezone=Asia/Shanghai" \ --privileged=true \ -p 5044:5044 \ -p 9600:9600 \ docker.elastic.co/logstash/logstash:8.14.3
但我启动后能访问http://ip:9600 却不能访问http://ip:5044