由于我的项目中使用的是Filebeat作为一个日志数据采集器,那有没有其他的更好的日志收集分析采集器呢?
ELK与我之前的项目的异同之处:那个基于kafka的nginx web日志收集分析与监控平台与ELK都是使用filebeat进行日志收集,然后使用kafka作为消息中间件存储数据,然后使用python编写的一个消费者程序将清洗的日志存入了数据库,而ELK则是使用logstash对数据进行格式化处理,然后再放到elasticsearch上,可以用来存储数据,也可以用来对数据进行搜索,最后再由kibana作前端展示。ELK中的Elasticsearch服务器相当于项目中的kafka,ELK中的Logstash相当于项目中的filebeat。
一、ELK是什么
而ELK就是由elastic公司提供的一套完整的日志收集、展示解决方案,是三个产品的首字母的缩写,分别是ElasticSearch、Logstash 和Kibana。这三个工具组合形成了一套实用、易用的监控架构。很多公司利用它来搭建可视化的海量日志分析平台。
其中- E: ElasticSearch(ES),负责日志的存储和检索;
- L:Logstash,负责日志的收集,过滤和格式化;
- K:Kibana,负责日志的展示统计和数据可视化;
1、ElasticSearch
ElasticSearch是一个基于Apache Lucene的搜索服务器。它提供了一个分布式的免费全文搜索和分析引擎,使用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据,基于restful web接口。设计用于云计算中,能够达到实时搜索、稳定,可靠,快速、安装使用方便。Elasticsearch以其简单的REST风格API、分布式特性、速度和扩展性而闻名,是Elastic Stack的核心组件;Elastic Stack是一套适用于数据采集、扩充、存储、分析和可视化的免费开源工具。人们通常将Elastic Stack称为ELK Stack(代指Elasticsearch、Logstash 和 Kibana),目前Elastic Static包括一系列丰富的轻量级数据采集代理,这些代理统称为Beats,可用来向Elasticsearch发送数据。
1.1 ElasticSearch的用途是什么?
Elasticsearch在速度和扩展性方面都表现出色,而且还能够索引多种类型的内容,这意味着其可用于多种用例:
- 应用程序搜索
- 网站搜索
- 企业搜索
- 日志处理和分析
- 基础设施指标和容器监测
- 应用程序性能监测
- 地理空间数据分析和可视化
- 安全分析
- 业务分析
1.1 ElasticSearch的用途是什么?
原始数据会从多个来源(包括日志、系统指标和网络应用程序)输入到Elasticsearch中。数据采集是指在Elasticsearch中进行索引之前解析、标准化并充实这些原始数据的过程。这些数据在Elasticsearch中索引完成之后,用户便可以针对他们的数据运行复杂的查询,并使用聚合来检索自身数据的复杂汇总。在Kibana中,用户可以基于自己的数据创建强大的可视化,分享仪表板,并对Elastic Stack进行管理。
1.2 ElasticSearch的索引是什么?
ElasticSearch索引是指相互关联的文档集合。Elasticsearch会以JSON文档的形式存储数据。每个文档都会在一组键(字段或属性的名称)和它对应的值(字符串、数字、布尔值、日期、数值组、地理位置或其他类型的数据)之间建立联系。
Elasticsearch使用的是一种名为排序索引的数据结构,这一结构的设计可以运行十分快速地进行全文本检索。倒排索引会列出在所有文档中出现的每个特有词汇,并且可以找到包含每个词汇的全部文档。
在索引的过程中,Elasticsearch会存储文档并构建倒排索引,这样用户便可以近时地对文档数据进行搜索。索引过程是在索引API中启动的,通过此API即可以向特定索引中添加JSON文档,也可以更改索引中的JSON文档。
2、Logstash
Logstash是一个用于管理日志和事件的工具,可以用来对数据进行聚合和处理,并将数据发送到Elasticsearch。Logstash是一个开源的服务器端数据处理管道。你可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其他模块调用,例如搜索、存储等。
3、Kibana
Kibana 是一款适用于 Elasticsearch 的数据可视化和管理工具,可以提供实时的直方图、线形图、饼状图和地图。Kibana 同时还包括诸如 Canvas 和 Elastic Maps 等高级应用程序;Canvas 允许用户基于自身数据创建定制的动态信息图表,而 Elastic Maps 则可用来对地理空间数据进行可视化。是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持。
二、ELK有什么优势
1、它具有强大的搜搜功能,elasticsearch可以以分布式搜索的方式快速检索,而且支持DSL的语法来进行搜索,简单的说,就是通过类似配置的语言,快速筛选出数据。
2、具有完美的展示功能,可以展示非常详细的图表信息,而且可以定制展示内容,将数据可视化发挥的出来。
3、分布式功能,能够解决大型集群运维工作很多问题、包括监控、预警、日志收集解析等。
三、ELK的用途
ELK能做什么呢?
应用出现故障的时候,需要通过日志排查故障信息。当应用已经部署了多个环境的时候,这时的排查会造成一个巨大的损耗。而ELK就可以多对个环境的日志进行收集、过滤、存储、检错,可视化。此时我们就只需要查看kibana上的日志信息,就可以找到故障所在的地方。
针对应用在生产环境上的表现需要数据支撑,如访客数、功能调用量、出错率等。这类数据的收集,当然可以通过使用别的产品或编写一套程序进行输出,是有其一定的效果。但能够像ELK这样对应用无入侵,且功能强大的开源软件很少。
简单的来说,日志收集是一个服务的所有行为的数据。而ELK 则对服务数据进行分析。
ELK组件在海量日志系统的运维中,可以用来解决:
1、分布式日志数据集中式查询和管理。
2、系统监控,包括系统硬件和应用各个组件的监控。
3、故障排查
4、安全信息和事件管理
5、报表功能
ELK在数据运维系统中,主要用来解决的问题为:
1、日志查询、问题排查、上线检查
2、服务器监控,应用监控,错误报警,bug管理
3、性能分析,用户行为分析,安全漏洞分析,时间管理
更多信息可以查看官方详解:https://www.elastic.co/cn/what-is/elasticsearch