利用开源架构elk构建分布式日志系统

让编程成为一种习惯 让编程成为一种习惯     2022-08-15     643

关键词:

本文介绍了如何使用成熟的经典架构ELK(即Elastic search,Logstash和Kibana)构建分布式日志监控系统,很多公司采用该架构构建分布式日志系统,包括新浪微博,freewheel,畅捷通等。

背景
日志,对每个系统来说,都是很重要,又很容易被忽视的部分。日志里记录了程序执行的关键信息,ERROR和WARNING信息等等。我们可以根据日志做很多事情,做数据分析,系统监控,排查问题等等 。但是,任何一个中大型系统都不可能是单台Server,日志文件散落在几十台甚至成千上万台Server上,这给基于日志的数据分析、问题排查都带来了很大困难。

Centralized Logging

ELK
集中式日志存储(Centralized Logging)的概念应运而生,将产生在各台Server上的日志统一收集到一个日志平台中。ELK就是专门做这个事情的。ELK是Elasticsearch(以下简写为ES)+Logstash+Kibana的简称。ES负责数据的存储和索引,Logstash负责数据的调整、过滤、传输,Kibana负责数据的展示。

Ealsticsearch
首先说ES,它是一个基于Lucene的优秀的存储引擎,我们也可以把它看做一个PB级别的NoSQL DB。支持CRUD,多字段查询,Aggreagation,全文检索,可以说涵盖了各种各样的查询需求。 它自带了Replication和Sharding的功能,通过简单的配置就可以做数据复制和分片。并且,ES在NRT(Near Real Time)方面做了一些优化,使得应用在实时性方面有很好的表现。

Logstash
Logstash是一个非常灵活的数据处理和传输工具。我们可以不再需要自己写一堆wget, scp, Socket代码,来传输我们的数据。Logstash统一实现了每一环节的数据传输,我们只需要关注数据处理的逻辑。 我们也不再需要去学习各种各样的API,去发现如何得到数据(例如tail -f),如何写入数据(例如写入ES或MongoDB)。Logstash预置了一堆input & output plugin,通过配置就可以实现实时增量数据的流出和流入。例如我们用到的file input 和ES output 都已经有了。

Kibana
Kibana是一个强大的数据展示工具。大多数情况下,不需要开发任何代码,就可以得到一个Dashboard。
需要做的是:
(1)把数据放到ES中
(2)是在Kibana页面上配置报表模版,或按照规则写一套报表模版。

Architecture

FreeWheel - UI - Log Platform Architecture

上图是日志系统的架构图。我们的数据源是四个模块的日志文件,通过Logstash将数据实时导入到MQ中,再从MQ把数据实时导入到ES中。
使用MQ的目的是:
(1)减小峰值压力
(2)对实时数据做处理,避免这个处理放在应用Server,造成对应用的负担。
同时,根据MQ中的数据做规则匹配,会触发相应的Alert。其中如果发现是Error信息,会存到Jira中,用于问题记录、派发和追踪。Error如何存到Jira中有一些策略来控制,包括Error判重,已修复Bug又再次Alert,等等 。小时级、天级别的Alert通过一个后台调度的任务框架直接和ES交互。
ES结合了Hadoop Plugin,通过Hadoop2做Map Reduce的计算。


FreeWheel - UI - Dashboard of Throughput & Response time
(Hidden Y-axis data and query criteria)
最后就是Kibana,通过读取ES数据,来提供报表展示。我们现在是Kibana3&4混用,主要是使用Kibana3,并在Kibana3基础之上开发了一些Plugin。例如Menu,可选时区的Datepicker等。Kibana4刚刚发布没多久,并不是十分完善,所以我们还没有完全切换到4上。目前有一个报表是使用Kibana4开发的,用到了4提供的新功能,例如Percentile的Aggregation,多级Aggregation等。

日志平台应用

FreeWheel - Application on Log Platform
在前边我们也提到一些了,有了这个日志平台的数据之后,我们可以做很多事情。
(1)日志查询、问题排查、上线检查
(2)服务器监控,应用监控,错误报警,Bug管理
(3)性能分析,用户行为分析

总结
日志平台上线后,解决了很多原有的问题,它的重要性越来越强,未来我们的计划如下:
(1)更灵活的报表。Kibana解决了基础的报表需求,但不能实现逻辑复杂的报表。考虑扩展Kibana,支持定制化图表+Kibana混合而成的Dashboard。
(2)更强大的报警。参考或结合Watcher,Zabbix等,实现更强大更易用的报警配置。

67-日志分析系统elk-elk架构简述

...个实时的全文搜索,存储库和分析引擎。Elasticsearch是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。Elasticsearch支持数据的实时全文搜索搜索、支持分... 查看详情

elk+kafka构建日志收集系统之环境安装(代码片段)

...h、Logstash和Kibana三部分组件组成;Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口 查看详情

elk+kafka构建日志收集系统之环境安装(代码片段)

...h、Logstash和Kibana三部分组件组成;Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载... 查看详情

elk实现java分布式系统日志分析架构

...键字搜索本地日志,但越来越多的公司,项目开发中采用分布式的架构,日志会记录到多个服务器或者文件中,分析问题时可能需要查看多个日志文件才能定位问题,如果相关项目不是一个团队维护时沟通成本更是直线上升。把... 查看详情

elk分布式日志系统架构(代码片段)

filebeat=>kafka/redis=>logstash=>ElasticSearch=>kibana<=>nginx/haproxy<=日志查询用户Filebeat收集日志,发送到中间件Kafka/Redis消息列队暂存数据,供logstash拉取Logstash拉取并处理 查看详情

elk原理与介绍

...点上的日志统一收集,管理,访问。一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日... 查看详情

elk原理与介绍

...点上的日志统一收集,管理,访问。一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日... 查看详情

elk原理与介绍

...点上的日志统一收集,管理,访问。一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日... 查看详情

elk日志分析系统

...search、Logstash和Kibana三部分组件组成;Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Logstash是一个完全开源 查看详情

elk2.x日志搜集系统服务(代码片段)

一、ELK工作原理ElasticsearchElasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Logsta... 查看详情

centos7搭建elk开源实时日志分析系统

Elasticsearch是个开源分布式搜索引擎它的特点有分布式零配置自动发现索引自动分片索引副本机制restful风格接口多数据源自动搜索负载等。Logstash是一个完全开源的工具他可以对你的日志进行收集、分析并将其存储供以后使用如... 查看详情

第二十三周微职位elk日志系统

...elasticsearch就可以进行分析和查询了。我们需要的是一个分布式的,日志收集和分析系统 查看详情

分布式日志系统graylog、loki及elk的分析和对比

...新贵Loki,比ELK轻量多了1.为什么需要集中的日志系统?在分布式系统中,众多服务分散部署在数十台甚至是上百台不同的服务器上,要想快速方便的实现查找、分析和归档等功能,使用Linux命令等传统的方式查询到想要的日志就... 查看详情

一图看懂elk架构

...性、并非唯一性。Elasticsearch是使用java开发,基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索... 查看详情

亿级elk日志平台构建实践(代码片段)

...格式等操作,然后存储以供后续使用。Elasticsearch :分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch基于Lucene开发,现在使用最广的开源... 查看详情

elk日志分析平台架构剖析和常见问题(代码片段)

...输给Logstash,官方也推荐此工具。2、Elasticsearch是个开源分布式搜索引擎,提供搜集、分析 查看详情

elk日志分析系统

...Logstash和Kiabana三个开源工具组成:1:Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。2:Logstash是一个完全开源的工具... 查看详情

在windows系统下搭建elk日志分析平台

...abana三个开源工具组成:   Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。   Logstash是一个完全... 查看详情