一、ELK日志分析系统
1、ELK的组成部分
E: Elasticsearch
L: Logstash
K: Kibana
2、日志服务器
优点
提高安全性
集中化管理
缺点
对日志分析困难
3、日志处理步骤
①将日志进行集中化管理
②将日志格式化(Logstash)并输出到Elasticsearch
③对格式化后的数据进行索引和存储
④前端数据的展示(Kibana)
二、Elasticsearsh概述
- 提供了一个分布式多用户能力的全文搜索引擎
1、Elasticsearch特性
Elasticsearch的核心概念
接近时实(NRT)
- 搜索速度非常的快,轻微的延迟。
集群(cluster)
- 将一个或多个节点组织在一起,组成一个cluster集群。
- 集群有一个唯一标志的名字,默认Elasticasearch,每个节点基于集群名字加入到集群中,且在集群中使用自己的名字来身份标识。
节点(node)
- 每一个节点就是一台单台服务器。
索引(index)
- 一个索引由一个名字来标识(必须全部是小写字母),并且当我们要多对应这个索引中的文档进行索引、更新、删除的时候,都要使用到这个名字。
类型(type)
- 在一个索引中,你可以定义一个或多种类型。
- 比如:当我们存储一个购物平台的数据时,可以定义一个用户数据类型,产品数据类型等。
文档(document)
- 一个文档是一个可被索引的基础信息单元
#索引(库)----》类型(表)------》文档(记录)
2、分片和副本
什么是分片?
- 索引存储的数据可能超过单个节点的硬件限制。
- 为了解决这个问题,ES提供了将索引分成多个分片的功能,当在创建索引时,可以定义想要的分片数量,每一个分片就是一个全功能独立的索引。
为什么要分片?
- 水平分割扩展,增大存储量
- 分布式并跨越分片操作, 提高性能和吞吐量
什么是副本?
- 为了健壮性,高可用性,可以故障切换。
- es将分片复制一份或多份放在不同的节点主机上,称为分片副本。
为什么要副本?
- 高可用性,以应对分片或者节点故障,出于这个原因,分片副本要在不同的节点上。
- 性能加强,增强吞吐量,搜索可以并行在所有副本上执行
3、es和传统数据库的区别
①结构名称不同
-
关系型数据库:数据库–>表–>行—>列
-
Elasticsearch:索引—>类型—>文档---->字段
②ES分布式,传统数据库遍历式索引
-
ES支持分片和复制,从而方便水平分割和扩展,复制保证可es的高可用与高吞吐。
-
在es中,当你创建一个索引(数据库)的时候,你可以指定你想要的分片的数量,每个分片本身也是一个功能完善并且独立的索引(数据库),索引可以被防止到集群中的任何节点上。
分片的优点
1、允许你水平分割/扩展你的内容容量
2、允许你在分片之上进行分布式的,并行的操作,进而提高性能/吞吐量
3、分片的分布,它的文档怎么聚合回搜索请求,完全有Elasticsearch管理
③ES采用倒排索引,传统数据库采用B+树索引
- 正排索引:id---->values
- 倒排索引:values—>id
④ES没有用户验证和权限控制
⑤ES没有事务的概念,不支持回滚,误删不能恢复
⑥ES免费,完全开源,传统的数据库部分免费
二、Logstash概述
- 一款强大的数据处理工具
- 可实现数据传输、格式处理、格式化输出
- 数据输入、数据加工(过滤、改写等)以及数据输出
由三个组件组成:Input、Output、Filter Plugin
- Input:获取日志
- Output:输出日志
- Filter Plugin:过滤日志、格式处理
1、Log Stash主要组件
- **Shipper(日志收集):**负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常远程代理端(agent)只需要运行这个组件即可
- **Indexer(日志存储):**负责接收日志并写入到本地文件
- **Broker(日志Hub):**负责连接多个Shipper和多个Indexer
- **Search and Storage:**允许对事件进行搜索和存储
- **Web Interface:**基于Web的展示界面
三、Kibana 概述
- 一个针对Elastcsearch的开源分析及可视化平台
- 搜索、查看存储在ES 索引中的数据
- 通过各种图标进行高级数据分析及展示
1、Kibana主要功能
①Elasticsearch无缝之集成
- kibana架构为ES 定制,可以将任意结构和非结构加入到ES索引。
②整合数据
- 更好的对ES 数据进行分析处理 。能够处理海量数据,智能的分析数据。
③让更多团队成员收益
④接口灵活,分享容易
- 使用Kibana可以更加方便地创建、保存、分享数据,并将可视化数据快速交流。
⑤配置简单
- 自带web服务器,快速启动运行
⑥可视化多数据源
- Kibana可以非常方便地把来自Logstash、ES-Hadoop、Beats或第三方技术的数据整合到Elasticsearch,支持的第三方技术包括Apache flume、 Fluentd 等。
⑦简单数据导出
- Kibana可以方便地导出感兴趣的数据,与其它数据集合并融合后快速建模分析,发现新结果。
四、ELK的优点
**1、处理方式灵活:**Elasticsearch是全文索引,具有强大的搜索能力
**2、配置相对简单,**Kibana的配置非常简单,Eslasticsearch则全部使用Json接口,配置也不复杂,Logstash的配置使用模块的方式,配置也相对简单。
**3、检索性高,**ELK架构通常可以达到百亿数据的查询秒级响应
**4、集群线性扩展,**Elasticsearch本身没有单点的挂念,自动默认集群模式,Elasticsearch和Logstash都可以
5、灵活扩展
6、页面美观。
五、部署ELK日志分析系统
1、部署环境
1.1 了解架构部署
主机名 | ip地址 | 主要软件 | 系统 |
---|---|---|---|
node1 | 20.0.0.55 | ElasticSearh、Kibana | centos7.5 |
node2 | 20.0.0.56 | ElasticSearh | centos7.5 |
httpd | 20.0.0.57 | Logstash、Apache | centos7.5 |
日志分析系统原理
首先有Apache产生大量的日志在本机中,那么Logstash就会input获取日志,然后进行Filter Plugin(过滤日志和格式处理),最后将处理好的日志outpu发送日志到ES的cluster集群中。
ES将收到的日志进行索引和存储。
最后可以使用Kibana进行查看分析日志。