实验目的
掌握elasticsearch、kibanna和logstash的概念、原理以及特点,实现ELK的单体模式,elasticsearch集群的主从效果、分片效果,cerebro的索引管理,实现kibana样例数据展示
主要内容
1、实现ELK的单体模式
2、实现cerebro管理索引
3、实现elasticsearch集群(主从效果、分片效果)
4、实现kibana(样例数据展示出)
实验环境与准备
3台拍完快照配置好的linux主机,一台为elasticsearch主节点,一台为elasticsearch从节点,一台作为kibanna和cerebro主机
四、实验分析与设计思路
Elasticsearch 使用的是一种名为倒排索引的数据结构,这一结构的设计可以允许十分快速地进行全文本搜索。倒排索引会列出在所有文档中出现的每个特有词汇,并且可以找到包含每个词汇的全部文档。在索引过程中,Elasticsearch 会存储文档并构建倒排索引,这样用户便可以近实时地对文档数据进行搜索。索引过程是在索引 API 中启动的,通过此 API 您既可向特定索引中添加 JSON 文档,也可更改特定索引中的 JSON 文档。
Kibana --5601 是一款适用于 Elasticsearch 的基于Javascript语言实现的数据可视化和管理工具,可以提供实时的直方图、线形图、饼状图和地图。Kibana 同时还包括诸如 Canvas 和 Elastic Maps 等高级应用程序;
Logstash 是 Elastic Stack 的核心产品之一,可用来对数据进行聚合和处理,并将数据发送到Elasticsearch。Logstash 是一个基于Java实现的开源的服务器端数据处理管道,允许您在将数据索引到Elasticsearch 之前同时从多个来源采集数据,并对数据进行过滤和转换。
可以通过插件实现日志收集和转发,支持日志过滤,支持普通log、自定义json格式的日志解析。
Logstash的数据处理过程主要包括:Inputs, Filters, Outputs 三部分, 另外在Inputs和Outputs中可以使用Codecs对数据格式进行处理。这四个部分均以插件形式存在,用户通过定义pipeline配置文件,设置需要使用的input,filter,output, codec插件,以实现特定的数据采集,数据处理,数据输出等功能
需要注意的是elasticsearch分配的内存不能主机的一半,是官方的规定
五、详细实验过程
1、实现ELK的单体模式
主从主机10.100和10.110均安装elasticsearch
[root@node-2 ~]# yum -y localinstall elasticsearch-8.9.0-x86_64.rpm
进入到elasticsearch的配置文件的目录下,配置jvm.options和elasticsearch.yml
[root@node-1 ~]# cd /etc/elasticsearch/
[root@node-1 elasticsearch]# vim jvm.options
为了防止将配置文件配坏掉,我们把elasticsearch.yml进行备份
cp elasticsearch.yml elasticsearch.yml.bak
[root@node-1 elasticsearch]# vim elasticsearch.yml
启动elasticsearch服务,可以看到elasticsearch对应的端口9200和9300已经打开
[root@node-1 elasticsearch]# systemctl start elasticsearch.service
[root@node-1 elasticsearch]# ss -tnl
[root@node-1 elasticsearch]# ps aux
在网页端输入查看192.168.10.100:9200 显示的效果
ES单点搭建完毕后在浏览器内进行访问 验证结果
http://192.168.10.100:9200/_cat/nodes?v 节点信息查看
http://192.168.10.100:9200/_cat/indices?v 索引信息查看
通过post指令上传索引数据
curl -X POST http://192.168.10.100:9200/fan/_doc -H 'Content-Type:application/json' -d '{"name": "fan","age": 18}'
http://192.168.10.100:9200/fan/_search?q=* 索引数据查询 默认情况下一片一副本
加入索引数据之后,再次查看索引信息,可以看到已经显示出刚才加入的索引数据了
http://192.168.10.100:9200/_cat/indices?v 索引信息查看
健康状态有三种,健康为green,yellow为有问题但是能用,red代表有问题不能用
修改内核参数(传送给110是为了后面做集群做铺垫)
内核参数 vm.max_map_count 用于限制一个进程可以拥有的VMA(虚拟内存区域)的数量
echo "vm.max_map_count = 262144" >> /etc/sysctl.conf 虚拟内存集
echo "fs.file-max = 1000000" >> /etc/sysctl.conf 最大文件句柄
sysctl -p
vim /etc/security/limits.conf
优化资源限制配置,将下面内容加入到文档最后面即可
vim /etc/security/limits.conf
* soft core unlimited
* hard core unlimited
* soft nproc 1000000
* hard nproc 1000000
* soft memlock 1000000
* hard memlock 1000000
* soft msgqueue 1000000
* hard msgqueue 1000000
将配置好的文件传送到10.110对应的目录中
scp /etc/security/limits.conf 192.168.10.110:/etc/securitnf
scp /etc/sysctl.conf 192.168.10.110:/etc/sysctl.conf
2、实现cerebro管理索引
在10.120主机上安装cerebro
yum -y install cerebro-0.9.4-1.noarch.rpm rpm包安装
rpm -ql cerebro-0.9.4-1.noarch 查看cerebro的配置文件的相关位置
vim /usr/share/cerebro/conf/application.conf 主配置文件
[root@node-3 ~]# /usr/bin/cerebro
[root@node-3 ~]# ss -tnl
在网页上访问 192.168.10.120:9000 成功连接到cerebro ,选择handsome点击connect即可跳转到主页面
在cerebro的管理页面中可以进行创建index
3、实现es集群
①主从效果
配置集群的从elasticsearch,10.110的配置文件,将配置好的elasticsearch文件传给10.100
[root@node-2 ~]# cd /etc/elasticsearch/
[root@node-2 elasticsearch]# vim elasticsearch.yml
[root@node-2 elasticsearch]# vim jvm.options
scp elasticsearch.yml 192.168.10.100:/etc/elasticsearch/
[root@node-1 elasticsearch]# vim elasticsearch.yml 将node1的主机名改为自己的
10.100重启elasticsearch服务10.110启动elasticsearch服务
[root@node-1 elasticsearch]# systemctl restart elasticsearch.service
[root@node-2 elasticsearch]# systemctl start elasticsearch.service
ss -tnl 查看两个主机启动服务之后的端口是否开启
重启10.120的cerebro服务,查看cerebro的端口9000是否打开
[root@node-3 ~]# systemctl start cerebro.service
[root@node-3 ~]# ss -tnl
网页上查看cerebro是否已经有了新节点,已经添加上了
可以看到10.100是主节点,10.110是从节点(实心☆就是主,空心☆就是从)
停掉10.100 node1的服务,验证主从效果 ,修改cerebro的配置文件,将主节点指向10.110
重启cerebro之后启动10.100的elasticsearch服务
[root@node-1 elasticsearch]# systemctl stop elasticsearch.service
[root@node-3 ~]# vim /usr/share/cerebro/conf/application.conf
[root@node-1 elasticsearch]# systemctl start elasticsearch.service
查看,因为我是开了两台主机,所以效果没有出来
②分片效果
创建index验证分片效果
可以看到新创建的index fl分片为4,副本为2,两两互不在一台节点上
0,2在node1上,副本在node2上,而1,3在node2上,副本在node1上
4、实现kibana(样例数据展示出)
进入到主配置文件的目录,修改配置文件后启动服务,查看端口和服务的运行状态
[root@node-3 ~]# cd /etc/kibana/
[root@node-3 kibana]# vim kibana.yml
[root@node-3 kibana]# systemctl status kibana.service
[root@node-3 kibana]# ss -tnl
在网页上输入192.168.10.120:5601 进入到kibana的网页服务网站
试用样例数据
选择其他样例数据集
随机选一个添加数据,添加完成显示已安装
在cerebro上查看新添加的数据,可以看到special多了19个,分片和docs和存储量也增多了
在kibana上查看新添加的数据,可以看到有柱状图命中数、文档和字段统计信息
在开发工具中可以看到索引管理、可以看到数据视图
实验结果及分析
Elasticsearch 具有分布式的本质特征。Elasticsearch 中存储的文档分布在不同的容器中,这些容器称为分片,可以进行复制以提供数据冗余副本,以防发生硬件故障。Elasticsearch 的分布式特性使得它可以扩展至数百台(甚至数千台)服务器,并处理 PB 量级的数据。
Elasticsearch 包含一系列广泛的功能。除了速度、可扩展性和弹性等优势以外,Elasticsearch 还有大量强大的内置功能(例如数据汇总和索引生命周期管理),可以方便用户更加高效地存储和搜索数据。
Elastic Stack 简化了数据采集、可视化和报告过程。通过与 Beats 和 Logstash 进行集成,用户能够在向 Elasticsearch 中索引数据之前轻松地处理数据。同时,Kibana 不仅可针对 Elasticsearch数据提供实时可视化,同时还提供 UI 以便用户快速访问应用程序性能监测 (APM)、日志和基础设施指标等数据。
原始数据会从多个来源(包括日志、系统指标和网络应用程序)输入到 Elasticsearch 中。数据采集指在Elasticsearch 中进行索引之前解析、标准化并充实这些原始数据的过程。这些数据在 Elasticsearch 中索引完成之后,用户便可针对他们的数据运行复杂的查询,并使用聚合来检索自身数据的复杂汇总。在Kibana 中,用户可以基于自己的数据创建强大的可视化,分享仪表板,并对 Elastic Stack 进行管理。
Elasticsearch 索引指相互关联的文档集合。Elasticsearch 会以 JSON 文档的形式存储数据。每个文档都会在一组键(字段或属性的名称)和它们对应的值(字符串、数字、布尔值、日期、数组、地理位置或其他类型的数据)之间建立联系。
总结
换一个大的内存条是非常有必要的,还是非常吃内存的