ELK是什么
ELK Stack 是Elasticsearch、Logstash、Kiban三个开源软件的组合。
在实时数据检索和分析场合,三者通常是配合共用。
ELK Stack成为机器数据分析,实时日志处理领域,开源界的第一选择。和传统的日志处理方案相比,ELK Stack 具有如下几个优点:
• 处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用;
• 配置简易上手。Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL 设计,都是目前业界最通用的配置语法设计;
• 检索性能高效。虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到全天数据查询的秒级响应;
• 集群线性扩展。不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;
• 前端操作炫丽。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。
Elasticsearch简介
Elasticsearch是一个开源的分布式搜索分析引擎,建立在一个全文搜索引擎库 Apache Lucene基础之上。
一个分布式的实时文档存储,每个字段 可以被索引与搜索
一个分布式实时分析搜索引擎,能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
它是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;
是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。
基础模块
cluster:管理集群状态,维护集群层面的配置信息。
alloction:封装了分片分配相关的功能和策略。
discovery:发现集群中的节点,以及选举主节点。
gateway:对收到master广播下来的集群状态数据的持久化存储。
indices:管理全局级的索引设置。
http:允许通过JSON over HTTP的方式访问ES的API。
transport:用于集群内节点之间的内部通信。
engine:封装了对Lucene的操作及translog的调用。
应用场景
信息检索
日志分析
业务数据分析
数据库加速
运维指标监控
Elasticsearch的部署
实验环境:
192.168.122.101
192.168.122.102
192.168.122.103
关闭主机的fireewalld,selinux.,每个主机相互做解析
安装软件
# rpm -ivh jdk-8u171-linux-x64.rpm
# rpm -ivh elasticsearch-7.6.1.rpm //7.6版本自带jdk
设置服务自启:
# systemctl daemon-reload
# systemctl enable elasticsearch
修改配置文件:
# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-es #集群名称
node.name: server1 #主机名需要解析
path.data: /var/lib/elasticsearch #数据目录
path.logs: /var/log/elasticsearch #日志目录
bootstrap.memory_lock: true #锁定内存分配
network.host: 192.168.122.101 #主机ip
http.port: 9200 #http服务端口
cluster.initial_master_nodes: ["server1"]
此时ser8和ser9还没有进行配置,所以这里的初始化master,只能是ser7
修改系统限制
# vim /etc/security/limits.conf
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
elasticsearch - nofile 65536
elasticsearch - nproc 4096
# vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g
Xmx设置不超过物理RAM的50%,以确保有足够的物理RAM留给内
核文件系统缓存。但不要超过32G。
修改systemd启动文件
# vim /usr/lib/systemd/system/elasticsearch.service
[Service] #在service语句块下添加
LimitMEMLOCK=infinity
# systemctl daemon-reload
# systemctl start elasticsearch
关闭swap分区
swappiness越小,操作系统占用swap的几率越小
查看服务开启的9200端口
浏览器访问
至此,server7的es安装完成。
head插件的安装过程
ElasticSearch-head是一款能连接ElasticSearch搜索引擎,并提供可视化的操作页面对ElasticSearch搜索引擎进行各种设置和数据检索功能的管理插件,如在head插件页面编写RESTful接口风格的请求,就可以对ElasticSearch中的数据进行增删改查、创建或者删除索引等操作。
类似于使用navicat工具连接MySQL这种关系型数据库,对数据库做操作。
head插件本质上是一个nodejs的工程,因此需要安装node:
# wget https://mirrors.tuna.tsinghua.edu.cn/nodesource/rpm_9.x/el/7/x86_64/nodejs-9.11.2-1nodesource.x86_64.rpm
# rpm -ivh nodejs-9.11.2-1nodesource.x86_64.rpm
# node -v 查看node的版本
# wget https://github.com/mobz/elasticsearch-head/archive/master.zip
# unzip master.zip
更换npm源安装(package.json文件中的依赖等)
cd elasticsearch-head-master/
# npm install --registry=https://registry.npm.taobao.org
修改ES主机ip和端口
# vim _site/app.js
"http://172.25.2.7:9200"
启动head插件
# npm run start &
此时可以访问到,但是集群状态值是非健康的
修改ES跨域主持
# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true # 是否支持跨域
http.cors.allow-origin: "*" # *表示支持所有域名
重启ES服务
# systemctl restart elasticsearch.service
测试创建索引
提交请求后
刷新查看es状态
黄色表示主分片存在,可以访问,但是辅分片不存在,没有可用副本
为集群添加ser2和ser3节点
添加的方法和ser1安装es的步骤基本一致,都需要安装软件包然后进行修改配置文件,限制文件,关闭swap分区等
注意添加master