Elasticsearch、Kibana以及Logstash和Beats合称ELKB,是当前流行的一套日志采集、分析、存储、查询的解决方案。也可以只选择使用其中的部分组件,完成业务需求。
1. ELKB简介
ELKB是四个开源软件的统称,分别表示Elasticsearch、Logstash、Kibana、Beats。
Elasticsearch是基于Lucene的分布式、RESTful 风格的搜索和数据分析引擎,可以用来做数据的搜索、分析、存储等;
Logstash主要是用来做日志的收集、分析,支持大量的数据获取方式。一般为c/s架构,client端安装在需要收集日志的主机上,server端负责将各节点收集到的日志进行统一分析处理,一并发送到Elasticsearch上去;
Kibana为Elasticsearch和Logstash提供了一个友好的可视化的Web页面,可以帮助汇总、分析和搜索数据等;
Beats是一个轻量级的数据收集器,在需要收集数据的节点上安装后,就可以收集数据并发送到Logstash上进行解析,或者直接发送到Elasticsearch中进行集中式的存储和分析。
2. 安装ElasticSearch
注意:在安装时,需要注意组件之间的版本依赖关系,可以从官网的支持一览表中查看。
拉取镜像:docker pull elasticsearch:8.0.1
这里我们选择拉取的是8.0.1版本的Elasticsearch。
创建一个elastic网络:docker network create elastic
启动es:
docker run --name elasticsearch --net elastic \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES\_JAVA\_OPTS="-Xms128m -Xmx128m" \
-it elasticsearch:8.0.1
其中,-p 9200:9200表示将linux的9200端口映射到docker容器的9200端口,用来给es发送http请求,-p 9300:9300表示es集群模式下,各节点间通信的端口,-e "discovery.type=single-node"表示以单节点模式运行,-e ES_JAVA_OPTS="-Xms128m -Xmx128m"设置运行内存大小。
启动后,会产生token以及用户名密码,用于Kibana的登陆。
这个token的有效期只有30分钟,如果过期了,可以用在容器中使用工具再生成一个:
bin/elasticsearch-create-enrollment-token --scope kibana
3. 安装Kibana
拉取镜像:docker pull kibana:8.0.1
这里我们也拉取的是8.0.1版本的Kibana。
启动Kibana容器:docker run --name kibana --net elastic -p 5601:5601 kibana:8.0.1
访问打印出的地址(如果不行就把ip换成虚拟机ip),输入之前生成的token,进入登陆界面输入用户名密码即可。