Spring Cloud集成集成ELK完成日志收集实战(完成日志收集实战(elasticsearch、、
logstash、、kibana))
简介简介
对于日志来说,最常见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:logstash(收集)、(收集)、
elasticsearch(存储(存储+搜索)、搜索)、kibana(展示)(展示),我们将这三个组合起来的技术称之为ELK,所以说ELK指的是
Elasticsearch、Logstash、Kibana技术栈的结合。ELK对外作为一个日志管理系统的开源方案,能够可靠和安全地从任何格式
的任何来源获取数据,并实时搜索、分析和可视化。
1 Elasticsearch
elasticsearch是一个高可扩展的、开源的、全文本搜索和分析的引擎是一个高可扩展的、开源的、全文本搜索和分析的引擎。它能够近乎实时地存储,检索和分析大量数据,通常
用作底层引擎/技术,为具有复杂搜索特性和需求的应用程序提供动力。
elasticsearch的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的
封装,提供了 REST API 的操作接口,开箱即用。
1.1节点和集群节点和集群
elasticsearch 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 elasticsearch 实例。单个单个
elasticsearch 实例称为一个节点(实例称为一个节点(node)。一组节点构成一个集群()。一组节点构成一个集群(cluster))。
1.2索引(索引(Index))
elasticsearch 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。所
以,elasticsearch 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必
须是小写。
下面的命令可以查看当前节点的所有 Index。
curl -X GET ‘http://localhost:9200/_cat/indices?v’
1.3文档(文档(Document))
索引里面的单条记录称为文档(索引里面的单条记录称为文档(Document),多个文档就组成了一个索引),多个文档就组成了一个索引。文档是用JSON格式表示。同一个索引的文档不
要求有相同的结构(scheme),但是最好保持相同,这样有利于提高搜索效率。一个简单的文档示例:
{
“user”: “张三”,
“profession”: “java工程师”,
}
1.4 碎片和副本碎片和副本
索引可能存储大量数据,超出单个节点的硬件限制。例如,一个包含10亿个文档的索引占用了1TB的磁盘空间,它可能不适合
于单个节点的磁盘,或者可能太慢,无法单独为单个节点提供搜索请求。为了解决这个问题,Elasticsearch提供了将索引细分
为多个碎片的功能。当你创建索引时,可以简单地定义你想要的碎片的数量。每个碎片本身都是一个功能齐全、独立的“索
引”,可以驻留在集群中的任何节点上。
总而言之,每个索引可以分成多个碎片。一个索引也可以被复制零次(意思是没有副本)或多次。一但复制,每个索引将具有
主碎片(原始碎片)和复制碎片(主碎片的副本)。在创建索引时,每个索引可以定义碎片和副本的数量。默认情况
下,Elasticsearch中的每个索引分配5个主碎片和1个副本。
关于elasticsearch的深入了解请参考elastic官方网站:https://www.elastic.co/cn/
2 Logstash
Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据
标准化到你所选择的目的地。
2.1管道管道
logstash的事件处理管道通常具有一个或多个的输入插件、过滤器、输出插件的事件处理管道通常具有一个或多个的输入插件、过滤器、输出插件。logstash的事件处理通常分为三个阶段:输入
→过滤器→输出。
2.2输入输入
数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择 ,可以在同一时间从众多常用
来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数
据。
评论0