ELK 概述
ELK是三个项目的简称,分别是Elasticsearch、Logstash 和 Kibana
- Elasticsearch 是一个实时的全文搜索,存储库和分析引擎。
- Elasticsearch 是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。
- Elasticsearch 支持数据的实时全文搜索搜索、支持分布式和高可用、提供API接口,可以处理大规模的各种日志数据的处理,比如: Nginx、Tomcat、系统日志等功能。
- Elasticsearch 基于 Java 语言开发,利用全文搜索引擎 Apache Lucene 实现
- 应用场景
- 应用程序搜索
- 网站搜索
- 企业搜索
- 日志处理和分析
- 基础设施指标和容器监测
- 应用程序性能监测
- 地理空间数据分析和可视化
- 安全分析
- 业务分析
- 基本概念
- Near Realtime(NRT) 几乎实时
- Cluster 集群
- Node节点
- Index 索引
- Type 类型
- Document 文档
- Shards & Replicas 分片与副本
- 相关概念在关系型数据库和ElasticSearch中的对应关系
关系型数据库 |
Elasticsearc |
数据库Database |
索引Index,支持全文检索 |
表Table |
类型Type |
数据行Row |
文档Document,但不需要固定结构,不同文档可以具有不同字段集合 |
数据列Column |
字段Field |
- Logstash 是数据处理的管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如Elasticsearch 等存储库中。
- 架构图
-
Logstash 是一个基于Java实现的开源的服务器端数据处理管道,允许您在将数据索引到Elasticsearch 之前同时从多个来源采集数据,并对数据进行过滤和转换。
-
可以通过插件实现日志收集和转发,支持日志过滤,支持普通log、自定义json格式的日志解析。
- Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。
- Kibana 是一款适用于 Elasticsearch 的基于Javascript语言实现的数据可视化和管理工具,可以提供实时的直方图、线形图、饼状图和地图。Kibana 同时还包括诸如 Canvas 和 Elastic Maps 等高级应用程序;Canvas 允许用户基于自身数据创建定制的动态信息图表,而 Elastic Maps 则可用来对地理空间数据进行可视化。
- 主要是通过接口调用elasticsearch的数据,并进行前端数据可视化的展现。比如:
- 搜索、查看并可视化 Elasticsearch 中所索引的数据,并通过创建柱状图、饼图、表格、直方图和地图对数据进行分析。
- 日志处理和分析
- 基础设施指标和容器监测
- 应用程序性能监测 (APM)
- 地理空间数据分析和可视化
- 安全分析
- 业务分析
- 借助网络界面来监测和管理 Elastic Stack 实例并确保实例的安全
- 针对基于 Elastic Stack 开发的内置解决方案(面向可观测性、安全和企业搜索应用程序),将其访问权限集中到一起
ELK 应用场景
运维主要应用场景:
- 将分布在不同主机的日志统一收集,并进行转换,通过集中的Web UI 进行查询和管理
- 通过查看汇总的日志,找到故障的根本原因
- Web 展示和报表功能
- 实现安全和事件等管理
大数据运维主要应用场景:
- 查询聚合, 大屏分析
- 预测告警, 网络指标,业务指标安全指标
- 日志查询,问题排查,基于API可以实现故障恢复和自愈
- 用户行为,性能,业务分析
ELK 应用架构
#日志访问入口采用代理,一般用nginx,或者haproxy(kibana默认没有权限管理,可用代理策略)
#进入Kibana应用内查看日志展示页面
#Kibana数据来源Elasticsearch
#Elasticsearch中的数据是经过Logstash清洗过的干净数据
#Logstash收集的服务器原始数据来源于filebeat对服务器各项数据的采集
#为了减轻日志收集的压力,在服务器和Logstash之间加上Redis缓存,如果日志数据量巨大可以用Kafaka消息队列处理(kafaka数据存在硬盘,读取数据是追加式)