layout: post # 使用的布局(不需要改)title: 日志管理-ELK # 标题
subtitle: 日志管理-ELK
date: 2019-09-28 # 时间
author: NSX # 作者
header-img: img/post-bg-2015.jpg #这篇文章标题背景图片
catalog: true # 是否归档
tags: #标签
- ELK
- 日志管理
背景
对于分布式系统,特别是基于容器的微服务系统,详细的系统日志和日志数据的实时收集和传输到集中平台是极其有必要的。主要基于两个原因,一是日志数据不能随容器的切换而丢失(当然也可以将日志数据存于持久存储层,但这种架构可能违背微服务自主和自助的设计原则),二是分布式的系统架构分散复杂,更加有必要对任何一个环节进行及时的监控。
什么是日志管理?
日志管理就是指对系统和应用程序产生的日志进行处理的方法,包括对日志进行统一收集,对日志数据进行筛选和解析,统一存储,还要让它们可以方便被检索。
目前常用的日志平台架构如下,服务器端用logstash与各个端的日志进行对接,存入elatic数据库中,然后通过kibana来编制报表展示监控结果,见下图所示。当然,在beat与logstash 之间,为了增加数据传输的可靠性和及时性,还可采用kafaka消息传输软件。
ELK介绍
ELK 是 Elasticsearch+Logstash+Kibana 的缩写:
ElasticSearch是一套搜索框架,提供了方便的接口,可以方便的做全文检索,可以用来对日志进行检索.
Logstash 是一个数据收集工具,可以用来收集日志数据,并将其输送给Elasticsearch存储供以后使用(如,搜索)。
Kibana 是一套可以和 ElasticSearch 交互的界面,通过Kibana可以方便的检索 ElasticSearch 内的所有数据,还可以用图形化的方式汇总、分析和搜索重要数据日志
大厂的日志管理系统的架构是什么样子?
参考
- 阿里云:《基于 ELK 实时日志分析的最佳实践》
- 新浪:《ELK Stack 在新浪微博的最佳实践》
- 新浪:《新浪是如何分析处理 32 亿条实时日志的?》
- 七牛:《如何快速搭建智能化的统一日志管理系统》