ELK前端日志分析、监控系统

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 前端日志与后端日志不同,具有很强的自定义特性,不像后端的接口日志、服务器日志格式比较固定,大部分成熟的后端框架都有非常完善的日志系统,借助一些分析框架,就可以实现日志的监控与分析,这也是运维工作的一部分。

前端日志与后端日志不同,具有很强的自定义特性,不像后端的接口日志、服务器日志格式比较固定,大部分成熟的后端框架都有非常完善的日志系统,借助一些分析框架,就可以实现日志的监控与分析,这也是运维工作的一部分。

什么是ELK

ELK在服务器运维界应该是运用的非常成熟了,很多成熟的大型项目都使用ELK来作为前端日志监控、分析的工具。

那么首先,我们来了解下什么是ELK,ELK实际上是三个工具的集合:

  • E:Elasticsearch
  • L:Logstash
  • K:Kibana

这三个工具各司其职,最终形成一整套的监控架构。

Elasticsearch

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

我们使用Elasticsearch来完成日志的检索、分析工作。

Logstash

Logstash是一个用于管理日志和事件的工具,你可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等。

我们使用Logstash来完成日志的解析、存储工作。

Kibana

Kibana是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持。

我们使用Kibana来进行日志数据的展示工作。

以上三个框架,就构成了我们这套架构的核心。如果你想进一步了解这套架构,可以去他的官网上进行了解:

https://www.elastic.co/

这里也讲一个真实的故事——Elasticsearch项目的来历。

Elasticsearch 来源于作者 Shay Banon 的第一个开源项目 Compass 库,而这个 Java 库最初的目的只是为了给 Shay 当时正在学厨师的妻子做一个菜谱的搜索引擎。2010 年,Elasticsearch 正式发布。至今已经成为 GitHub 上最流行的 Java 项目,不过 Shay 承诺给妻子的菜谱搜索依然没有面世。

不得不说,还真是面向对象编程……

ELK架构图解

下面这张图很好的解释了什么是ELK:

8ed94f3e4fb8ad26ee057cd59bda19a43aed2c3d

当然,这也是最简单的ELK架构,在后端运维架构中,可能远不止如此,比如,还需要加入Kafka活这Redis等等,这里我们不做过多的讨论,我们只讨论最基础的架构。

ELK环境搭建

有同事问我,配置一套ELK环境需要多长时间,我说,大概需要20分钟,另外,其中大概有15分钟是在下载!

f1ec47810ad9a43426f25c19e5912f1ac829133e

由于现在整个ELK项目基本上都已经被elastic这个公司收购了,所以,在它的官方网站上可以很容易的找到配置Guide。

https://www.elastic.co/start

按照这个配置指南,基本上很快就可以完成ELK的搭建,我们唯一需要做的,就是找到一份Log,然后配置下,让他展示出来就完了。

下载好tar包后,请尽量使用tar指令解压,不然就会像我的同事TT那样因为解压后的权限折腾上很长时间。

配置Logstash

我们首先需要在Logstash的文件根目录下创建一个配置文件,我这里举一个例子:

input {
    file {
        path => "/Users/xuyisheng/Downloads/temp/log.txt"
        ignore_older => 0
        sincedb_path => "/dev/null"
    }
}
output {
    elasticsearch{}
    stdout{}
}

这个配置相信不用我多说,大家也能看懂,当然,这是一个非常基本的配置,只是从固定的文件中去读取Log信息并写入到elasticsearch,并不做任何处理工作。

写好配置文件后,只需要通过如下所示的指令启动Logstash即可:

  logstash-5.0.1 bin/logstash -f logstash.conf

启动之后,Logstash就会从文件中读取信息了。

配置Elasticsearch和Kibana

为什么Logstash我要单独讲,而Elasticsearch和Kibana我可以放一起讲呢?因为——这两个的配置实在是太简单了,简单到你根本不用配置任何东西……

只需要两个指令就完成了,启动Elasticsearch:

  elasticsearch-5.0.0 bin/elasticsearch

启动Kibana:

  kibana-5.0.0-darwin-x86_64 bin/kibana

OK,等程序启动完成,只需要打开localhost:5601就可以看见Kibana的界面了。

给大家看几张截图,简单的体会下它的强大就好(由于我这里项目是公司的,所以就从网上找了一些,是一样的)

123c45fcdf2d18a7d212e3b13f40bc6bd44bdd79

这个是Kibana3的界面。

f052230eba84250b307c7b0b80a8dbcb3b3e1e3a

这个是Kibana5的界面,大家可以根据自己的需要选择不同的Kibana版本,反正配置都是一句话。

ELK的优势

ELK在运维上的优势我们就不具体的说了,什么分布式啊、什么消息队列、消息缓存啊,太多了,但我们其实并不用太关心。

强大的搜索

这是elasticsearch的最强大的功能,他可以以分布式搜索的方式快速检索,而且支持DSL的语法来进行搜索,简单的说,就是通过类似配置的语言,快速筛选数据。

强大的展示

这是Kibana的最强大的功能,他可以展示非常详细的图表信息,而且可以定制展示内容,将数据可视化发挥的淋漓尽致。

所以,借助ELK的这两大优势,我们可以让前端日志的分析与监控展现出强大的优势。

ELK使用场景

据我所知,现在已经有非常多的公司在使用这套架构了,例如Sina、饿了么、携程,这些公司都是这方面的先驱。同时,这套东西虽然是后端的,但是『他山之石,可以攻玉』,我们将这套架构借用到前端,可以使用前端日志的分析工作,同样是非常方便的。这里我举一些常用的使用场景。

  • 业务数据分析

    通过客户端的数据采集系统,可以将一些业务流程的关键步骤、信息采集到后端,进行业务流程的分析。

  • 错误日志分析

    类似Bugly,将错误日志上报后,可以在后端进行错误汇总、分类展示,进行错误日志的分析。

  • 数据预警

    利用ELK,可以很方便的对监控字段建立起预警机制,在错误大规模爆发前进行预警。

ELK的基本介绍就到这里,其实还有很多东西没有讲,例如使用Logstash对日志内容的处理、已经elasticsearch的搜索语法等等,如果大家有兴趣,可以在下面留言,如果感兴趣的人比较多,我会在后面的文章中进行进一步的分析。

一年一度的CSDN博客之星评选又开始了,欢迎大家给我投票:
http://blog.csdn.net/vote/candidate.html?username=x359981514
有了各位的支持,我才有动力能够继续写出更多更好的文章,非常感谢大家的支持。

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
1月前
|
Prometheus 监控 Cloud Native
基于docker搭建监控系统&日志收集
Prometheus 是一款由 SoundCloud 开发的开源监控报警系统及时序数据库(TSDB),支持多维数据模型和灵活查询语言,适用于大规模集群监控。它通过 HTTP 拉取数据,支持服务发现、多种图表展示(如 Grafana),并可结合 Loki 实现日志聚合。本文介绍其架构、部署及与 Docker 集成的监控方案。
266 122
基于docker搭建监控系统&日志收集
|
1月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
376 64
搭建ELK日志收集,保姆级教程
|
1月前
|
Prometheus 监控 Java
日志收集和Spring 微服务监控的最佳实践
在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
152 1
日志收集和Spring 微服务监控的最佳实践
|
24天前
|
存储 缓存 监控
用 C++ 红黑树给公司电脑监控软件的日志快速排序的方法
本文介绍基于C++红黑树算法实现公司监控电脑软件的日志高效管理,利用其自平衡特性提升日志排序、检索与动态更新效率,并结合实际场景提出优化方向,增强系统性能与稳定性。
54 4
|
6月前
|
监控 测试技术 Go
告别传统Log追踪!GOAT如何用HTTP接口重塑代码监控
本文介绍了GOAT(Golang Application Tracing)工具的使用方法,通过一个Echo问答服务实例,详细展示了代码埋点与追踪技术的应用。内容涵盖初始化配置、自动埋点、手动调整埋点、数据监控及清理埋点等核心功能。GOAT适用于灰度发布、功能验证、性能分析、Bug排查和代码重构等场景,助力Go项目质量保障与平稳发布。工具以轻量高效的特点,为开发团队提供数据支持,优化决策流程。
389 89
|
7月前
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
538 90
|
6月前
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
通过引入 Sidecar 容器的技术,SAE 为用户提供了更强大的自定义日志与监控解决方案,帮助用户轻松实现日志采集、监控指标收集等功能。未来,SAE 将会支持 istio 多租场景,帮助用户更高效地部署和管理服务网格。
472 52
|
10月前
|
缓存 监控 前端开发
基于 CoffeeScript 的内网管理监控软件前端代码优化
本文探讨了基于CoffeeScript的内网管理监控软件前端代码优化方法,包括数据请求缓存、界面更新采用虚拟DOM技术以及增强错误处理机制,旨在提升软件性能、响应速度和用户体验。
112 4
|
7月前
|
数据采集 运维 监控
数据采集监控与告警:错误重试、日志分析与自动化运维
本文探讨了数据采集技术从“简单采集”到自动化运维的演进。传统方式因反爬策略和网络波动常导致数据丢失,而引入错误重试、日志分析与自动化告警机制可显著提升系统稳定性与时效性。正方强调健全监控体系的重要性,反方则担忧复杂化带来的成本与安全风险。未来,结合AI与大数据技术,数据采集将向智能化、全自动方向发展,实现动态调整与智能识别反爬策略,降低人工干预需求。附带的Python示例展示了如何通过代理IP、重试策略及日志记录实现高效的数据采集程序。
329 7
数据采集监控与告警:错误重试、日志分析与自动化运维
|
7月前
|
存储 监控 算法
基于 PHP 语言的滑动窗口频率统计算法在公司局域网监控电脑日志分析中的应用研究
在当代企业网络架构中,公司局域网监控电脑系统需实时处理海量终端设备产生的连接日志。每台设备平均每分钟生成 3 至 5 条网络请求记录,这对监控系统的数据处理能力提出了极高要求。传统关系型数据库在应对这种高频写入场景时,性能往往难以令人满意。故而,引入特定的内存数据结构与优化算法成为必然选择。
169 3