基于ELK实时日志分析的最佳实践

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
性能测试 PTS,5000VUM额度
简介: 摘要:在2018云栖大会深圳峰会大数据分析与可视化专场上,由阿里巴巴搜索引擎事业部开放搜索团队的吴迪带来了“基于ELK实时日志分析的最佳实践”的主题分享。介绍了传统的日志分析、ELK的概念和ELK实时日志分析的实践。

在2018云栖大会深圳峰会大数据分析与可视化专场上,由阿里巴巴搜索引擎事业部开放搜索团队的吴迪带来了“基于ELK实时日志分析的最佳实践”的主题分享。介绍了传统的日志分析、ELK的概念和ELK实时日志分析的实践。
数十款阿里云产品限时折扣中赶快点击这里领券开始云上实践吧!
直播视频回顾
以下为精彩视频内容整理:

什么是日志

首先来说一下日志,日志是属于程序的一部分,在编写程序的时候也就写好了日志。日志的作用是为了排查问题,尤其是突发的问题,一般线上出了问题首先翻日志。日志还可以给我们提供报警监控的功能,通过监控日志的变化,通过日志中可以看出系统出现的问题甚至做出预测。

传统的日志分析

通常用Linux中小工具去搜索关键字能得到我们需要用到的信息。这种传统的日志分析的效率是非常低的,尤其是当业务越来越多系统越来越庞大的时候,这时在搜集日志就会变得非常的困难。下面是针对传统日志分析过程中遇到的几点问题:
1、日志的集中收集与存储:当有上千个节点的时候,日志是分布在许多机器上,如果要获取这些日志的文件,不可能一台一台的去查看,所以这就是很明显的一个问题。
2、 日志搜索:这种搜索是基于文件的,并且这种效率也会比较低,并不能表达出逻辑上的关系,并不能对系统的全局作出判定。
3、 分析聚合及可视化:由于日志分布在不同的机器上所以查看起来很困难。
4、 安全、角色管理:当系统变大后就会有上百个人来查看日志,不同角色不同级别的人看到的是不同的日志而不是所有的人都能看到所有的日志,所以传统的日志可能就会有安全上的问题。
5、 可伸缩性:当系统越来越大的时候,会产生大量的日志。

ELK

现在在开源的生态里面,解决日志收集、搜索、日志聚合和日志分析的一个技术站就是ELK。可能大家已经接触过ELK,但在这里再给大家介绍一下,ELK是Elasticsearch+Logstash+Kibana的缩写。
Elasticsearch是一套搜索的框架,它的内核是Lucene,它把Lucene这个算法做了封装,提供了很方便使用的接口,以及有非常强大的扩展的能力。用Elasticsearch就可以很快速的做到全文检索的一个服务。
Logstash也是Elasticsearch公司的一个产品,是用来做数据源的收集,最初它是为了做日志但后来它不光做日志的收集只要是数据都可以用它来收集,它就是一个收集器。
Kibana可以把它理解为一个UI,但它不是一个简单的UI,通过Kibana可以看到ES上的所有数据,在这上面可以做各种的展示可以做各种图形化的界面。
这是ELK的一个介绍。因为ELK在开源的搜索领域是非常的火热,只要提到搜索都会想到Elasticsearch,提到数据的搜集就会想到Logstash,所以现在这套组件都成了标配了。

阿里云Elasticsearch生态

_1


这是一个阿里云的Elasticsearch生态,所有的这些组件都是基于阿里云的。可以看到这个Beats和Logstash是平行的,它俩的作用基本类似。和阿里云合作最重要的一点就是X-Pack,X-Pack提供了很多强大的功能,比如说Security就能解决前边的一些问题,不同级别的人可以看到不同的字段。数据本身也可以得到一个保护,安全也基本上可以放心。再介绍一下Alerting,如果用户在世界的多个地方登录了可以通过Alerting这个功能报警出来,可以做一个预警,因为这种行为可能是被黑客入侵。Monitoring是为了监控整个Elasticsearch技术站的组件。Graph可以分析出在Elasticsearch上所有的数据之间的关系,来帮我们更好的组织数据。Reporting是可以通过对数据的一些计算,能够分析出数据的变化,然后通过Reporting的机制告诉我们这些数据的变化。MachineLearning是在把数据导入Elasticsearch以后通过MachineLearning以后能够通过统计学上的一些计算能够分析出Graph一段时间的数据,甚至可以预测出未来变化的走向。所有的这一切都是建立在阿里云上面的。

数据安全

_2


右边这个大的虚线框是VPC网络,用户的数据和Elasticsearch的数据站都是在VPC里面,接触阿里云的ECS、VPC可能都知道它对于用户来说就是一个封闭的网络,外面进不去里面出不来,除非用户授权。右侧是用户的应用服务,用户的搜索都是在用户的VPC里面。中间是公网服务,通过有密码的保护,黑白名单的限制来保护服务暴露在公网上的安全性。Logstash可以把语音服务器、云数据库和云存储的数据都是可以导入到VPC里面的ES服务,用户这边可以使用到ES的数据。这样一来就可以保护用户的数据不被泄露。

Logstash架构

_3


Logstash这个架构非常简单,Input就是我能对接各种数据源,比如数据库、OSS等都可以对接。Filter做一些数据的处理,处理完了以后输出,输出可以输出到ES也可以输出到别的系统。所以Date Source通过Logstash输出到Date Destination。

通过Kibana搜索日志

把日志导入到ES这个技术站里面之后,其实就是通过ES解决了日志聚合的问题,可以散布在各个机器上的日志收集到一块,通过ES聚合在一起,通过Kibana就可以很方便的去搜索日志。

通过ES API定制搜索条件

通过API去搜索日志库,通过Kibana可以直接写查询的条件,这个是非常的方便的。

阿里云Elasticsearch性能

刚刚说了Elasticsearch的特性,我们在回来说一下Elasticsearch在阿里云上的一些性能。

_4


我们做了一个Elasticsearch的压测主要是5.5.3版本的,分别在2核4G、4核16G、16核64G的上做了一个压测。使用的是官方的压测工具,没有改任何的参数,都是默认的参数。可以看到这条绿色的线是官方的geonames3.3GB,单doc311B,在16和64G的时候可以达到每秒14万doc。后来做了更进一步的压测就是说多线程的时候它的性能会更好。这个比市面上的同类软件是要高很多的。

业务架构

_5


当需要搭建ELK的时候业务架构是什么样的。先看一下Beats,Beats是可以和业务部署在一起。Beats可以直接到Elasticsearch也可以直接到Logstash,Beats和Logstash的整合应用是现在比较流行的。整体的架构来看Logstash和Elasticsearch一般会分开部署,因为Logstash属于CPU密集型的组件,Elasticsearch属于I/O密集型的组件,所以在部署的时候会把两者分开。

实践

基于机器学习的日志分析

_6


机器学习可以对日志进行分析,这个虚线分析出这段时间内的一个趋势,然后分析所有日志的时候就会发现数据不太对的时候就可以通过Reporting来反馈给我们,并且还可以预测出趋势。

ELK监控告警

ELK监控报警是对ELK技术栈的一个报警,是对索引、节点的一个监控。我们致力于把搜索事业部一些很强大的功能通过阿里云这个平台向外输出,其实这个特性就是我们技术沉淀的一个输出,它会自动的分析整个ES的健康状况。然后把ELK的架构做一个自动的优化。

本文由云栖志愿小组陈欢整理编辑

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
10天前
|
开发者 Python
基于Python的日志管理与最佳实践
日志是开发和调试过程中的重要工具,然而,如何高效地管理和利用日志常常被忽略。本文通过Python中的logging模块,探讨如何使用日志来进行调试、分析与问题排查,并提出了一些实际应用中的优化建议和最佳实践。
|
23天前
|
消息中间件 Kafka 开发工具
rsyslog+ELK收集Cisco日志
rsyslog+ELK收集Cisco日志
|
25天前
|
JSON Java fastjson
Java日志通关(五) - 最佳实践
作者日常在与其他同学合作时,经常发现不合理的日志配置以及五花八门的日志记录方式,后续作者打算在团队内做一次Java日志的分享,本文是整理出的系列文章第五篇。
|
1月前
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
92 6
|
19天前
|
SQL 数据库 Java
Hibernate 日志记录竟藏着这些秘密?快来一探究竟,解锁调试与监控最佳实践
【8月更文挑战第31天】在软件开发中,日志记录对调试和监控至关重要。使用持久化框架 Hibernate 时,合理配置日志可帮助理解其内部机制并优化性能。首先,需选择合适的日志框架,如 Log4j 或 Logback,并配置日志级别;理解 Hibernate 的多级日志,如 DEBUG 和 ERROR,以适应不同开发阶段需求;利用 Hibernate 统计功能监测数据库交互情况;记录自定义日志以跟踪业务逻辑;定期审查和清理日志避免占用过多磁盘空间。综上,有效日志记录能显著提升 Hibernate 应用的性能和稳定性。
28 0
|
21天前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
22天前
|
消息中间件 Prometheus 监控
Producer的监控与日志记录最佳实践
【8月更文第29天】在分布式系统中,消息队列作为关键组件之一,其稳定性和性能至关重要。生产者(Producer)负责生成并发送消息到消息队列中,因此确保生产者的健康运行是非常重要的。本文将探讨如何为生产者设置监控和日志记录,以跟踪其健康状况和性能指标。
24 0
|
1月前
|
存储 应用服务中间件 nginx
部署ELK+filebeat收集nginx日志
部署ELK+filebeat收集nginx日志
部署ELK+filebeat收集nginx日志
|
30天前
|
存储 数据可视化 Linux
在Linux中,如何使用ELK进行日志管理和分析?
在Linux中,如何使用ELK进行日志管理和分析?
|
2月前
|
存储 分布式计算 监控
日志数据投递到MaxCompute最佳实践
日志服务采集到日志后,有时需要将日志投递至MaxCompute的表中进行存储与分析。本文主要向用户介绍将数据投递到MaxCompute完整流程,方便用户快速实现数据投递至MaxCompute。
158 2