ELK Stack 是Elasticsearch、Logstash、Kiban
三个开源软件的组合。在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故有此简称。
ELK Stack成为机器数据分析,或者说实时日志处理领域,开源界的第一选择。和传统的日志处理方案相比,ELK Stack 具有如下几个优点:
• 处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用;
• 配置简易上手。Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL 设计,都是目前业界最通用的配置语法设计;
• 检索性能高效。虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到全天数据查询的秒级响应;
• 集群线性扩展。不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;
• 前端操作炫丽。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。
官网地址:
https://www.elastic.co/cn/
官网权威指南:
https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
安装指南:
https://www.elastic.co/guide/en/elasticsearch/reference/6.x/rpm.html
Elasticsearch是一个开源的分布式搜索分析引擎,建立在一个全文搜索引擎库 Apache Lucene基础之上。
Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎:
一个分布式的实时文档存储,每个字段 可以被索引与搜索
一个分布式实时分析搜索引擎,能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
它是实时全文搜索和分析引擎,提供搜集、分析、存储数据
三大功能;
是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。
基础模块
cluster:管理集群状态,维护集群层面的配置信息。
alloction:封装了分片分配相关的功能和策略。
discovery:发现集群中的节点,以及选举主节点。
gateway:对收到master广播下来的集群状态数据的持久化存储。
indices:管理全局级的索引设置。
http:允许通过JSON over HTTP的方式访问ES的API。
transport:用于集群内节点之间的内部通信。
engine:封装了对Lucene的操作及translog的调用。
应用场景
信息检索
日志分析
业务数据分析
数据库加速
运维指标监控
官网:https://www.elastic.co/cn/
实验环境:
172.25.2.7 ser7 es master主机
172.25.2.8 ser8 es master主机
172.25.2.9 ser9 es master主机
关闭主机的fireewalld,selinux.
每个主机相互做解析
实验步骤:
软件下载:
https://elasticsearch.cn/download/
安装软件
# 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: server7 #主机名需要解析
path.data: /var/lib/elasticsearch #数据目录
path.logs: /var/log/elasticsearch #日志目录
bootstrap.memory_lock: true #锁定内存分配
network.host: 172.25.2.7 #主机ip
http.port: 9200 #http服务端口
cluster.initial_master_nodes: ["server7"]
1.因为此时ser8和ser9还没有进行配置,所以这里的初始化master,只能是ser7
修改系统限制
# vim /etc/security/limits.conf
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
elasticsearch - nofile 65536
elasticsearch - nproc 4096
# vim jvm.options
-Xms1g
-Xmx1g
Xmx设置不超过物理RAM的50%,以确保有足够的物理RAM留给内
核文件系统缓存。但不要超过32G。
# vim /usr/lib/systemd/system/elasticsearch.service
[Service] #在service语句块下添加
LimitMEMLOCK=infinity
# systemctl daemon-reload
# systemctl start elasticsearch
vim /etc/fstab
日志文件的位置
查看服务开启的9200端口
至此,ser7的es安装完成。
ElasticSearch-head是一款能连接ElasticSearch搜索引擎,并提供可视化的操作页面对ElasticSearch搜索引擎进行各种设置和数据检索功能的管理插件,如在head插件页面编写RESTful接口风格的请求,就可以对ElasticSearch中的数据进行增删改查、创建或者删除索引等操作。
类似于使用navicat工具连接MySQL这种关系型数据库,对数据库做操作。
下载elasticsearch-head插件
# wget https://github.com/mobz/elasticsearch-head/archive/master.zip
# unzip master.zip
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的版本
# npm -v 查看npm的版本
1.2.进入解压后的目录
3.安装nodejs
4.
更换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 &
启动head
此时可以访问到,但是集群状态值是非健康的
修改ES跨域主持
# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true # 是否支持跨域
http.cors.allow-origin: "*" # *表示支持所有域名
重启ES服务
# systemctl restart elasticsearch.service
访问head插件服务,修改elasticsearch-head下Gruntfile.js文件,默认监听在9100端口
测试创建索引
查看es状态
添加的方法和ser7安装es的步骤基本一致,都需要安装软件包然后进行修改配置文件,限制文件,关闭swap分区等,这里仅用ser8做示范,ser9不再赘述。