elasticsearch+logstash+kibana---ELKK日志分析平台实战

一.elasticsearch
1.elasticsearch介绍
Elasticsearch 是一个开源的分布式搜索分析引擎,建立在一个全 文搜索引擎库 Apache Lucene基础之上。

Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜 索引擎:

一个分布式的实时文档存储,每个字段 可以被索引与搜索 • 一个分布式实时分析搜索引擎 • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构 化数据
2.elasticsearch中的基础模块
• cluster:管理集群状态,维护集群层面的配置信息。
• alloction:封装了分片分配相关的功能和策略。
• discovery:发现集群中的节点,以及选举主节点。
• gateway:对收到master广播下来的集群状态数据的持久化存储。
• indices:管理全局级的索引设置。
• http:允许通过JSON over HTTP的方式访问ES的API。
• transport:用于集群内节点之间的内部通信。 • engine:封装了对Lucene的操作及translog的调用。
3.elasticsearch的应用场景
• 信息检索
• 日志分析
• 业务数据分析
• 数据库加速
• 运维指标监控
4.elasticsearch安装与配置
软件下载: https://elasticsearch.cn/download/
当我们得到elasticsearch安装包后可以直接使用rpm命令进行安装兵启动服务
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第1张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第2张图片
此时查询发现端口9200开启则说明安装并启动成功,接下来我们试着访问本机的9200端口观察效果
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第3张图片
此效果为无问题的反馈,接下来进行配置文件的修改
在这里插入图片描述
在这里插入图片描述
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第4张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第5张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第6张图片
上面做出的修改示意如下:
cluster.name: my-es #集群名称
node.name: elk1 #运行此elasticsearch虚拟机主机名。注意:需要解析
path.data: /var/lib/elasticsearch #数据目录(默认)
path.logs: /var/log/elasticsearch #日志目录(默认)
bootstrap.memory_lock: true #锁定内存分配(可有可无)
network.host: 172.25.0.7 #主机ip(最好写入0.0.0.0监听本机所有端口)
http.port: 9200 #http服务端口
cluster.initial_master_nodes: [“elk1”] #在此为了方便我们直接将此虚拟机设为集群的master
discovery.seed_hosts: [“elk1”, “elk2”,“elk3”] ##节点列表

除了对服务本身的配置文件修改外,我们还需要对系统环境进行配置
在这里插入图片描述
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第7张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第8张图片
在这里插入图片描述
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第9张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第10张图片
本来应该再进行如下步骤以x设置不超过物理RAM的50%,以确保有足够的物理RAM留给内核文件 系统缓存。但不要超过32G。,但是由于笔者物理机实际内存大小问题在此不做限制
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第11张图片
在系统环境配置完成后重载环境并重启服务
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第12张图片
为了进行更直观的实验我们再配置两台同样具有elasticsearch的虚拟机
在此我们在其他虚拟机安装好elasticsearch后将所需的前面配置好的虚拟机上的服务及环境配置文件拷贝
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第13张图片
在此我们只需要手动改掉配置文件中的本机主机名以及进行swap分区设置即可
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第14张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第15张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第16张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第17张图片
在这里插入图片描述
在配置好后另外两台虚拟机均可访问到本机的9200端口
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第18张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第19张图片
5.elasticsearch插件安装(只需要一台部署即可,需要进行控制或查看时可通过集群访问)
下载elasticsearch-head插件
• # wget https://github.com/mobz/elasticsearch-head/archive/master.zip
• # unzip elasticsearch-head-master.zip
注意:head插件本质上是一个nodejs的工程,因此需要先安装node
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第20张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第21张图片
更换npm源安装
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第22张图片
使用更换好的cnpm安装
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第23张图片
在这里我们遇到如下错误:
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第24张图片在这里是由于进行安装时下载的phantomjs的压缩包缺少解压工具而无法解压导致报错,出现此报错我们有以下方法可以解决此报错:找到对应的压缩包进行手动解压安装
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第25张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第26张图片
进行到这里又遇到了依赖性问题,我们进行依赖性的安装
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第27张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第28张图片在依赖性验证成功后继续安装
解压elasticsearch-head-master.zip压缩包并进入其解压目录启动head插件并打入后台,然后修改ES主机ip和端口

elasticsearch+logstash+kibana---ELKK日志分析平台实战_第29张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第30张图片
修改ES跨域主持
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第31张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第32张图片
在这里插入图片描述
服务重启成功后打开浏览器访问head插件服务
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第33张图片
创建索引
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第34张图片
查看ES状态
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第35张图片
6.elasticsearch节点角色
Master:
主要负责集群中索引的创建、删除以及数据的Rebalance等操作。Master不负责数据的索引和检索,所以负载较轻。当Master节点失联或者挂掉的时候,ES集群会自动从其他Master节点选举出一个Leader
Data Node:
主要负责集群中数据的索引和检索,一般压力比较大
Coordinating Node:
原来的Client node的,主要功能是来分发请求和合并结果的。所有节点默认就是Coordinating node,且不能关闭该属性
Ingest Node:
专门对索引的文档做预处理

1.在生产环境下,如果不修改elasticsearch节点的角色信息,在高数据量,高并发的场景下集群容易出现脑裂等问题。
2.默认情况下,elasticsearch集群中每个节点都有成为主节点的资格,也都存储数据,还可以提供查询服务。
3.节点角色是由以下属性控制:
node.master: false|true 这个属性表示节点是否具有成为主节点的资格.注意:此属性的值为true,并不意味着这个节点就是主节点。因为真正的主节点,是由多个具有主节点资格的节点进行选举产生的
node.data: true|false 这个属性表示节点是否存储数据
node.ingest: true|false 是否对文档进行预处理
search.remote.connect: true|false 是否禁用跨集群查询
默认情况下这些属性的值都是true
7.elasticsearch节点优化
1.不同的节点
第一种组合:(Data node)
node.master: false
node.data: true
node.ingest: false
search.remote.connect: false
这种组合表示这个节点没有成为主节点的资格,也就不参与选举,只会存储数据。
这个节点称为data(数据)节点。在集群中需要单独设置几个这样的节点负责存储数据。后期提供存储和查询服务
第二种组合:(master node)
node.master: true
node.data: false
node.ingest: false
search.remote.connect: false
这种组合表示这个节点不会存储数据,有成为主节点的资格,可以参与选举,有可能成为真正的主节点。
这个节点我们称为master节点
第三种组合:(Coordinating Node)
node.master: false
node.data: false
node.ingest: false
search.remote.connect: false
这种组合表示这个节点即不会成为主节点,也不会存储数据,
这个节点的意义是作为一个协调节点,主要是针对海量请求的时候可以进行负载均衡
第四种组合:(Ingest Node)
node.master: false
node.data: false
node.ingest: true
search.remote.connect: false
这种组合表示这个节点即不会成为主节点,也不会存储数据,
这个节点的意义是ingest节点,对索引的文档做预处理
2.生产集群中可以对这些节点的职责进行划分
建议集群中设置3台以上的节点作为master节点,这些节点只负责成为主节点,维护整个集群的状态。
再根据数据量设置一批data节点,这些节点只负责存储数据,后期提供建立索引和查询索引的服务,这样的话如果用户请求比较频繁,这些节点的压力也会比较大。
所以在集群中建议再设置一批协调节点,这些节点只负责处理用户请求,实现请求转发,负载均衡等功能
3.节点需求
master节点:普通服务器即可(CPU、内存 消耗一般)
data节点:主要消耗磁盘、内存。
path.data: data1,data2,data3
这样的配置可能会导致数据写入不均匀,建议只指定一个数据路径,磁盘可以使用raid0阵列,而不需要成本高的ssd。

二.logstash
1.logstash简介
Logstash是一个开源的服务器端数据处理管道。
logstash拥有200多个插件,能够同时从多个来源采集数据, 转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(大多 都是 Elasticsearch。)
Logstash管道有两个必需的元素,输入和输出,以及一个可选 元素过滤器
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第36张图片
输入:采集各种样式、大小和来源的数据
Logstash 支持各种输入选择 ,同时从众多常用来源捕捉事件。
能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、 数据存储以及各种 AWS 服务采集数据。
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第37张图片
过滤器:实时解析和转换数据
数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件, 识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、 更快速地分析和实现商业价值

输出:选择您的存储库,导出您的数据
尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索 和分析带来无限可能,但它并非唯一选择。Logstash 提供众多输出选择,您可以将数据发送到您要指定的地 方,并且能够灵活地解锁众多下游用例。

2.Logstash安装与配置
首先我们得到logstash的依赖性与logstash的安装包并安装
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第38张图片
进入logstash的源码目录并编辑环境变量
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第39张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第40张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第41张图片
标准输入到标准输出
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第42张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第43张图片
logstash如何区分设备、文件名、文件的不同版本,logstash会把进度保存到sincedb文件中
sincedb文件一共6个字段
inode编号
文件系统的主要设备号
文件系统的次要设备号
文件中的当前字节偏移量
最后一个活动时间戳(浮点数)
与此记录匹配的最后一个已知路径
/usr/share/logstash/data/plugins/inputs/file

3.logstash插件
file输出插件(把交互的内容放入文件中)
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第44张图片

elasticsearch+logstash+kibana---ELKK日志分析平台实战_第45张图片
指定配置文件运行
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第46张图片
进行交互
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第47张图片
查看结果
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第48张图片
file输入插件(读取已有文件内容)
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第49张图片
指定配置文件运行
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第50张图片
由于未使用了交互插件所以这里只出现回执效果
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第51张图片
接下来我们试着读取系统日志文件
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第52张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第53张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第54张图片
这里成功的显示出系统文件,但是当我们第二次执行插件时出现以下效果
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第55张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第56张图片
这里我们发现日志没有内容了。这是为什么呢?
因为我们在读取日志文件时logstash会自动标记上一次读到了哪里所以再一次读取的时候会从上一次的标记点开始读取

接下来我们试着把前面日志内容作为信息放入主机中在浏览器上使用插件查看
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第57张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第58张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第59张图片
出现返回信息后我们在浏览器上查看
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第60张图片
可见此时我们创建的信息主分片被放在了elk3上,副分片被放在了elk4上

我们还可以将logstash伪装成日志服务器来接收远程日志
首先我们修改输入输出模块在其中加入一台elasticsearch虚拟机的ip
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第61张图片
修改需要远程读取日志的elasticsearch虚拟机的配置文件打开514端口使其对logstash机器的连通并重启服务
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第62张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第63张图片
执行文件查看效果
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第64张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第65张图片
这时我们便可以读取来自远程主机的日志了

在我们正常建立日志信息以后在web浏览器上进行查看时由于其为java语句会导致日志杂乱的情况,可以看出日志信息非常杂乱很难进行分析,所以在这里我们可以把多行日志记录合并为一行事件
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第66张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第67张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第68张图片

grok过滤插件-apache服务日志过滤实战
yum install httpd -y
systemctl start httpd
echo server5 > index.html
[root@foundation2 software]# ab -c1 -n100 http://172.25.6.13/index.html  #压测一下

cd /var/log/httpd/
ll -d
chmod 755 .  #可进入权限,logstash后台运行时是以普通用户运行

input {
        file {
        path => "/var/log/httpd/access_log"
        start_position => "beginning"
        }
}
filter {
  grok {
    match => { "message" => "%{HTTPD_COMBINEDLOG}" }
  }
}
output {
        stdout { }
        elasticsearch {
        hosts => ["172.25.6.10:9200"]
        index => "apache-%{+yyyy.MM.dd}"
        }
}
cd /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.1.2/patterns
cat httpd

elasticsearch+logstash+kibana---ELKK日志分析平台实战_第69张图片
在这里插入图片描述
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第70张图片
在这里插入图片描述
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第71张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第72张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第73张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第74张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第75张图片
三.kibana
1.kibana部署
使用RPM包进行kibana的安装elasticsearch+logstash+kibana---ELKK日志分析平台实战_第76张图片
修改配置文件,写上部署kibana虚拟机的ip以及master的ip并把语言设为中文
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第77张图片

elasticsearch+logstash+kibana---ELKK日志分析平台实战_第78张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第79张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第80张图片
设置自启并查询端口是否打开
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第81张图片
为了更方便展示效果我们在其他虚拟机上安装httpd服务及其工具
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第82张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第83张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第84张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第85张图片
经过压测后会产生很多日志文件
接下来进入web浏览器进入装kibana的虚拟机的5601端口进行操作
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第86张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第87张图片
随便选一个模块继续操作
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第88张图片
在这里插入图片描述
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第89张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第90张图片
点击右上角的播放(开始)按钮
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第91张图片
将日期设为today并点击refresh
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第92张图片
出现各虚拟机我们压测的次数的柱状图
点击保存并输入名字
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第93张图片
回到主页我们点击创建新的仪表板
在这里插入图片描述

点击添加在这里插入图片描述
选择我们创建好的图形并添加
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第94张图片
展示效果如下:
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第95张图片
四.轻量级的filebeat
由于使用elasticsearch每次使用输入输出模块等待时间过长,所以我们这里使用更轻量级的filebeat进行再次实验
1.安装配置
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第96张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第97张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第98张图片
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第99张图片
使用后效果如下
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第100张图片
针对不同的filebeat建立index索引,便于分类管理

elasticsearch+logstash+kibana---ELKK日志分析平台实战_第101张图片

elasticsearch+logstash+kibana---ELKK日志分析平台实战_第102张图片

elasticsearch+logstash+kibana---ELKK日志分析平台实战_第103张图片
注意:此处所有需要此服务的节点必须都进行如上的修改elasticsearch+logstash+kibana---ELKK日志分析平台实战_第104张图片
由于我只进行了一个节点的配置,所以此处只进行一个节点你的验证
elasticsearch+logstash+kibana---ELKK日志分析平台实战_第105张图片

elasticsearch+logstash+kibana---ELKK日志分析平台实战_第106张图片

你可能感兴趣的:(elasticsearch+logstash+kibana---ELKK日志分析平台实战)