〇、前言
常规rpm等部署elk 7.8.0的方式已经试过了,在之前的一篇博文里,不多说了。
注意这里说的不是elk是最新版本的elk,即8.1.0
,不是以前的 7.x
或者更早的版本。
以前的elk部署好了直接启动就能用(默认安全验证没有启用),现在8.x的麻烦一些,多了一些安全性,于是就很麻烦了,比如想用logstash按照以往的方式,往es里面导入数据,结果不允许。
其实玩多了领悟到了,什么“常规部署”,什么“docker部署”,其实都一样。
无非就是常规部署,可以直接改配置文件,启动服务,停止服务等。
docker部署,可以通过-v参数映射配置文件,其实也就相当于改了配置文件。
领会到了就够了,其他都一样。
特别补充一下,本机不用安装java环境,即jdk之类的,elk自带有。搜索目录即知。
一、8.x 与 之前的(如7.x)的不同
https://hub.docker.com/_/elasticsearch?tab=tags&page=1&name=7.
8.x增强了安全性。
只说我目前感受到的
如之前在机器上分别安装了es,启动后,则可直接通过网页访问到,如下图。
kibana同理,也可以直接通过网页访问,图略。
即以前直到地址和端口,直接就可以访问到。
现在的es安装,启动,通过浏览器也无法访问到了,如下图。
但通过https方式还是可以。如 https://192.168.182.150:9200
。
但浏览器可能会提示证书问题,因为这个证书是“不可靠”的机构颁发的。
所以安装了es 8.x,启动后网页上看不到不要觉得是出问题了
kibana倒是还可以访问到,但上来就需要输入一些token之类的东西,如下图。
这些token、密码、验证码之类的东西输入完成后最终是可以访问的。
这些token、密码、验证码之类的东西哪里来的呢?
可以用es的 bin/目录下的 bin/elasticsearch* 等工具产生。
多了不少新概念,不少学习成本
多了 fleet、integration、agent等好几个新概念,有的学了,挺迷惑的。
其中integration我觉得是很重要的,集成多种功能。
甚至目前看来我觉得logstash可能都不需要存在了(这句待考,只是猜测,不确定)。
二、如何部署
如果是容器安装,直接取最新镜像,docker run xxx......
就行。
如果是rpm,就直接安装最新rpm,rpm -ivh xxx.rpm
。
1. es
https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
注意上面已经说过了,如果浏览器访问9200失败不见得是你es启动失败了,只是现在加了安全相关的内容。
其实此时如果我们启动es时不是后台启动的话,即我们可以看到容器的控制台输出,每当我们刷新一下浏览器重新发起一次请求,如http://1.1.1.1:9200
的话,就会在控制台看到变化信息。
这也就证明了es其实是启动成功了的。
如下图.
2. kibana
2.1 安装,启动
2.1.5 暂不使用logstash
2.2 登入?
然后就会成功。
接下来就会惊喜地发现,进不去—怎么跟7.x差别这么大?!
如下图
前面已经说过了,如下图。
./elasticsearch-create-enrollment-token
命令即可产生token。
2.3 进入kibana
2.4 进入登录页
蛤? 还有个登录页?
我哪里知道账号啊(哭)?
用户名产生同token。
./elasticsearch-users useradd zhangsan -r superuser
当然,默认有个超级用户 elastic
是用户名,密码在早期启动es的时候控制台或日志有输出。
形如:
2.5 蛤?还有验证码?
下面看到另一个惊喜。
验证码在kibana里面产生
/usr/share/kibana/bin/kibana-verification-code
如果是容器方式的话,我们可以使用docker exec -it 命令进入容器。
如:
docker exec -it containerId /bin/bash
然后执行图中浅紫色内容。
得到如图。
填入验证码,登录成功。
自此,就可以在kibana中疯狂操作了。
三、其他
发现里面不得不学习很多新东西,如什么 fleet agent之类,有点困扰,先记录一下。
四、感想 (此节建议跳过)
这一部分只是当时为了通过https方式,用logstash读取mysql数据向es写入数据的时候的以一些记录。
搜索无数问题,尝试各种可能,最终当时也没有成功(最后成功了,但不在这节)
比如es关闭安全验证,则logstash就不需要配置 ssl 证书了,可以成功
比如使用openssl自己产生证书,然后es,logstash中配置(当时未成功)
等等。
关于logstash的使用
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方式启动如图:
注意体会一下三个-v的含义
其他小工具
查看docker容器的IP地址
五、在es开启安全验证的情况下,logstash写入es
开启了所谓的什么安全验证之后,kibana是可以连接和访问es的,没有明显问题。
但logstash我试了无数次,无数种情况,也没有成功,彻底心累了,暂时放弃。
还可能涉及到对密码学方面的理解,
如:
1.自己产生一个证书机构
2. 自己产生一个证书
3.把这个证书给别人用。。。
暂时不够理解,一直没成功,以后再说。
学习了一些ssl相关的知识之后,理解了一些东西,帮助我解决了问题。
最终我还是成功了。
需要自己使用openssl生成证书并配置吗?
不用!!!(历经千辛万苦的结论)
办法:
es
正常开始验证,也就是默认的样子
由于elasticsearch.yml
中配置了使用http.p12
等证书,所以一般的请求,它是拒不接受的。
也即logstash难以将数据写入es。
这是个大难题。
kibana
kibana可以正常访问和操作es,一切正常。
不过kibana需要用户名和密码登录,合情合理。
logstash
- 将es目录中的
http_ca.crt
证书拷贝到logstash的目录下。用于配置给logstash使用。
如:
mkdir /etc/logstash/ssl
co /etc/elasticsearch/cert/http_ca.crt /etc/ /etc/logstash/ssl
然后建立
一个文件,准备读取mysql的test1表。
假如命名就定为 my-test1-logstash.conf
内容如下:
然后启动命令:
sudo /usr/share/logstash/bin/logstash -f /etc/logstash/my-test1-logstash.conf --path.settings=/etc/logstash
然后静等启动。
再然后就激动地发现,logstash从mysql中读取成功,以https方式写入es也成功了!
上个图:
自此,总算是打通了https方式下的 logstash ==> es ⇒ kibana
路线,感觉不错。