ELK架构的应用与研究

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: ELK架构的应用与研究

ELK解决哪些问题?

在项目初期的时候,大家都是赶着上线,一般来说对日志没有过多的考虑,当然日志量也不大,所以用log4j就够了,随着应用的越来越多,日志散落在各个服务器的logs文件夹下,确实有点不大方便。

当我们需要日志分析的时候你大概会这么做:直接在日志文件中 grep、awk 就可以获得自己想要的信息。

ELK因此就应运而生,那么为什么要用ELK呢?ELK又能给我们解决哪些问题呢?

1.日志统一收集,管理,访问。查找问题方便安全

2.使用简单,可以大大提高定位问题的效率

3.可以对收集起来的log进行分析

4.能够提供错误报告,监控机制

 

ELK架构设计

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件

1. LogStash

    它可以流放到各自的服务器上收集Log日志,通过内置的ElasticSearch插件解析后输出到ES中

2.ElasticSearch

  这是一个基于Lucene的分布式全文搜索框架,可以对logs进行分布式存储,有点像hdfs。此为ELK的核心组件,日志的分析以及存储全部由es完成,因此在后面的课程中我们还会对此进行重点讲解。

3. Kibana

  它可以多维度的展示es中的数据。这也解决了用mysql存储带来了难以可视化的问题。他提供了丰富的UI组件,简化了使用难度,数据在es中的展示是比较让人蛋疼的,后面再讲es的时候让大家看看。

4.Filebeat

轻量级的日志收集工具。Filebeat用于日志收集和传输,相比Logstash更加轻量级和易部署,对系统资源开销更小。

 

目前ELK主要有两种框架:

1.普通框架

2.个性化扩展框架(针对日志数据需要二次处理以及多方使用的场景)


 

ELK的配置

按天生成索引,logstash的配置文件

input {
  file {
    codec => json
    path => "D://SpringCloud/spring-cloud-docker-microservice-book-code/trace/microservice-simple-provider-user-trace-elk/build/*.json"
  }
}
filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp}\s+%{LOGLEVEL:severity}\s+\[%{DATA:service},%{DATA:trace},%{DATA:span},%{DATA:exportable}\]\s+%{DATA:pid}---\s+\[%{DATA:thread}\]\s+%{DATA:class}\s+:\s+%{GREEDYDATA:rest}" }
  }
}
output {
  elasticsearch {
    hosts => "127.0.0.1:9200"
  index => "elk-java-log-%{+YYYY.MM.dd}"
  }
}

启动logstash

f:
cd  F:/tool/logstash-5.4.3
bin/logstash.bat -f  config/logstash.conf

Kibina的使用

Dev Tools   下执行ES索引的增删改查操作

语法见https://blog.csdn.net/lzhcoder/article/details/89819140

Discover     对elk日志进行过滤和查询

 

查询技巧

在Discover界面的搜索栏输入要查询的字段。查询语法是基于Lucene的查询语法。允许布尔运算符、通配符和字段筛选。注意关键字要大写。如查询类型是http,且状态码是302。type: http AND http.code: 30

查询可以包含一个或多个字或者短语。短语需要使用双引号引起来。如:

正则表达式过滤器和表达式

允许一个字段值在某个区间。[] 包含该值,{}不包含。

布尔查询

布尔运算符(AND,OR,NOT)允许通过逻辑运算符组合多个子查询。

运算符AND/OR/NOT必须大写

NOT type: mysql

mysql.method: SELECT AND mysql.size: [10000 TO *]

(mysql.method: INSERT OR mysql.method: UPDATE) AND responsetime: [30 TO *]

 

查询某段时间的日志

添加日志过滤条件

 


相关实践学习
利用Elasticsearch实现地理位置查询
本实验将分别介绍如何使用Elasticsearch7.10版本进行全文检索、多语言检索和地理位置查询三个Elasticsearch基础检索子场景的实现。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1天前
|
Cloud Native Java 微服务
使用Java构建可伸缩的云原生应用架构
使用Java构建可伸缩的云原生应用架构
|
1天前
|
Kubernetes 监控 API
深入理解微服务架构及其在现代后端开发中的应用
随着云计算和容器技术的飞速发展,微服务架构已成为现代后端开发中的一项关键技术。本文将深入探讨微服务的设计理念、优势与挑战,并基于最新的行业数据和案例分析,揭示微服务如何优化后端系统的性能和可维护性。通过引用权威研究和技术报告,我们将展示微服务架构在处理复杂业务逻辑、提高开发效率以及增强系统的可扩展性和容错能力方面的实际效益。
12 0
|
1天前
|
大数据 数据处理 数据中心
x86和x64架构的区别及应用
x86和x64架构的区别及应用
|
1天前
|
存储 运维 负载均衡
构建高可用性的Java应用架构
构建高可用性的Java应用架构
|
4天前
|
弹性计算 负载均衡 Java
如何设计一个高可用的Java应用架构
如何设计一个高可用的Java应用架构
|
4天前
|
设计模式 监控 Java
打造高效的Java应用架构:从入门到精通
打造高效的Java应用架构:从入门到精通
|
5天前
|
运维 分布式计算 Cloud Native
云原生架构在现代企业中的应用与挑战
本文旨在深入探讨云原生技术在当代企业中的实际应用情况及其所面临的挑战。通过分析来自权威机构的数据、引用先进的科学理论,并结合具体案例研究,文章将详细阐述云原生技术的发展趋势、优势以及实施过程中可能遇到的问题。此外,文章还将提供针对性的解决策略,以帮助企业更好地利用云原生技术提升业务效率和创新能力。
|
5天前
|
缓存 C语言 计算机视觉
程序与技术分享:CPU0处理器的架构及应用
程序与技术分享:CPU0处理器的架构及应用
|
5天前
|
存储 边缘计算 Cloud Native
“论模型驱动架构设计方法及其应用”写作框架,软考高级,系统架构设计师
模型驱动架构设计是一种用于应用系统开发的软件设计方法,以模型构造、模型转换和精化为核心,提供了一套软件设计的指导规范。在模型驱动架构环境下,通过创建出机器可读和高度抽象的模型实现对不同问题域的描述,这些模型独立于实现技术,以标准化的方式储存,利用模型转换策略来驱动包括分析、设计和实现等在内的整个软件开发过程。
|
6天前
|
Kubernetes 测试技术 持续交付
深入理解微服务架构及其在现代后端系统中的应用
本文将深入探讨微服务架构的核心概念、设计原则以及如何在现代后端系统中实现和优化它。我们将从微服务的定义开始,逐步展开讨论其优势、面临的挑战,以及如何克服这些挑战。同时,文章还会涉及微服务与容器化技术、持续集成/持续部署(CI/CD)的协同作用,以及微服务架构的未来发展趋势。读者将获得对微服务架构全面而深刻的理解,并能够识别在实施过程中可能遇到的陷阱和解决方案。
25 1