珂珂的个人博客 - 一个程序猿的个人网站

elasticsearch 学习记

现在才开始学习这个...

先用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


上一篇:个人代码全部开源

下一篇:遇到的奇葩家庭宽带问题


0 评论

查看所有评论

给个评论吧