〇、前言
常规rpm等部署elk 7.8.0的方式已经试过了,在之前的一篇博文里,不多说了。 注意这里说的不是elk是最新版本的elk,即8.1.0 ,不是以前的 7.x 或者更早的版本。 以前的elk部署好了直接启动就能用,现在8.x的麻烦一些,多了一些安全性。
一、8.x 与 之前的(如7.x)的不同
就我目前学习研究的情况来看,差别还是挺大的,学起来压力不小。
如非必要,不如还是直接用7.x 来得快,如果你不想要最新版本里的那些花里胡哨的功能特性的话。
但是7.x以及更早的某些版本,有log4j漏洞。具体自己看,见下方链接。
https://hub.docker.com/_/elasticsearch?tab=tags&page=1&name=7.
8.x增强了安全性。
只说我目前感受到的
如之前在机器上分别安装了es,启动后,则可直接通过网页访问到,如下图。 kibana同理,也可以直接通过网页访问,图略。 即以前直到地址和端口,直接就可以访问到。 现在的es安装,启动,通过浏览器也无法访问到了,如下图。
所以安装了es 8.x,启动后网页上看不到不要觉得是出问题了
kibana倒是还可以访问到,但上来就需要输入一些token之类的东西,如下图。 这些密码之类的东西输入完成后最终是可以访问的。
– 特别注意,es第一次启动时会有这样的日志: 记下来,用得着。 内容如:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-> Elasticsearch security features have been automatically configured!
-> Authentication is enabled and cluster connections are encrypted.
-> Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
uda-7Gd0x5p56m3sFbAI
-> HTTP CA certificate SHA-256 fingerprint:
7ef31f22076b35963822ff18fbb00597704c6e83ba3dd73cb2b6e3f25eca1574
-> Configure Kibana to use this cluster:
* Run Kibana and click the configuration link in the terminal when Kibana starts.
* Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes):
eyJ2ZXIiOiI4LjEuMCIsImFkciI6WyIxNzIuMTguMC4yOjkyMDAiXSwiZmdyIjoiN2VmMzFmMjIwNzZiMzU5NjM4MjJmZjE4ZmJiMDA1OTc3MDRjNmU4M2JhM2RkNzNjYjJiNmUzZjI1ZWNhMTU3NCIsImtleSI6InI0SGJmWDhCMjh4QkhncjlYaDBQOmhENEFzUVpUUTI2RDVwMTQ2TkZtMGcifQ==
-> Configure other nodes to join this cluster:
* Copy the following enrollment token and start new Elasticsearch nodes with `bin/elasticsearch --enrollment-token <token>` (valid for the next 30 minutes):
eyJ2ZXIiOiI4LjEuMCIsImFkciI6WyIxNzIuMTguMC4yOjkyMDAiXSwiZmdyIjoiN2VmMzFmMjIwNzZiMzU5NjM4MjJmZjE4ZmJiMDA1OTc3MDRjNmU4M2JhM2RkNzNjYjJiNmUzZjI1ZWNhMTU3NCIsImtleSI6InJvSGJmWDhCMjh4QkhncjlYaDBPOjlhOVNZSkE5UUh1WldDeGx5d2lXTFEifQ==
If you're running in Docker, copy the enrollment token and run:
`docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.1.0`
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
增强了便利性(有学习成本)
比如以前安装和启动了es、kibana,可以通过kibana连接到es,从而操作数据。 在kibana里面可以导入示例数据、通过csv文件导入数据成为es的索引等,但(据我所知)想要批量地、持续地导入大量数据,比如把mysql的某表数据导入到es,还是需要logstash,写好了logstash的配置启动后,会持续地向es导入数据。 但现在的kibana可以直接集成各种数据源,非常多,如mysql的图如下: 即可能不需要logstash了。 这个数据导入我正在尝试。
** 多了不少新概念,不少学习成本** 多了 fleet、integration、agent等好几个新概念,有的学了,挺迷惑的。
其中integration我觉得是很重要的,集成多种功能,甚至目前看来我觉得logstash可能都不需要存在了。
但discover里面找不到直接从csv等地方导入数据的入口了,对新手是个困扰。
二、如何部署
1. es
直接取最新,启动就行。 https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
docker pull elasticsearch:8.1.0
docker run --name es01 -p 9200:9200 -p 9300:9300 -it elasticsearch:8.1.0
注意上面已经说过了,如果浏览器访问9200失败不见得是你es启动失败了,只是现在加了安全相关的内容。
其实此时如果我们启动es时不是后台启动的话,即我们可以看到容器的控制台输出,每当我们刷新一下浏览器重新发起一次请求,如http://1.1.1.1:9200 的话,就会在控制台看到变化信息。 这也就证明了es其实是启动成功了的。 如下图.
2. kibana
2.1 安装,启动
docker pull kibana:8.1.0
docker run -d --name kibana --net somenetwork -p 5601:5601 kibana:8.1.0
2.2 登入?
然后就会成功。 接下来就会惊喜地发现,进不去—怎么跟7.x差别这么大?!
如下图 此图需要填token,token在上面的那个终端截图处已经提到了。 记好内容,填进去就行。
然后进入下一步
2.3 进入kibana
2.4 进入登录页
蛤? 还有个登录页? 我哪里知道账号啊(哭)?
这里把前面提到的终端截图再发出来,圈出重点。 经尝试,elastic 是用户名,下面的是密码。
2.5 蛤?还有验证码?
下面看到另一个惊喜。 验证码哪里来呢? 还得自己在kibana中产生!
这时候,只能按要提示,还好我们可以使用docker exec -it 命令进入容器。 如: docker exec -it containerId /bin/bash 然后执行图中浅紫色内容。 得到如图。 填入验证码,登录成功。
自此,就可以在kibana中疯狂操作了。
补充
当然,你可能会忘记记录或者没有机会记住这些密码等内容,都可以自动生成,比如es用户。 https://www.cnblogs.com/sanduzxcvbnm/p/14267006.html
上个我产生登录用户的图。
三、其他
发现里面不得不学习很多新东西,如什么 fleet agent之类,有点困扰,先记录一下。
四、感想
关于logstash
logstash以我现在的感觉,可能是要淘汰了,主要是kibana里面有好多的integration(需要研究),可以直接读取数据源,这也就是logstash的功能。
看elk官网的产品里面,已经不提logstash了,这可能就是个信号。
8.x的kibana中新东西好多,感觉重了不少,需要慢慢消化。 但部署确实是如上所述全部成功,先记录这么多。
logstash 的官方文档,docker方式部署logstash 下载: https://www.elastic.co/cn/downloads/logstash
启动 https://www.elastic.co/guide/en/logstash/current/docker.html
使用具体的配置 https://www.elastic.co/guide/en/logstash/current/docker-config.html
暂存,以后再说。
docker方式启动如图:
docker run --rm -it -v /docker/logstash/xtcrm-logstash.yml:/usr/share/logstash/config/logstash.conf -v /etc/logstash.yml:/usr/share/logstash/config/logstash.yml -v /docker/logstash-bin/mysql-connector-java-5.1.45.jar:/usr/share/logstash/mylib/5.1.45/mysql-connector-java-5.1.45.jar --network elastic --name logstash02 logstash:8.1.0
注意体会一下两个-v的含义
其他小工具
查看docker容器的IP地址
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
|