基于Elasticsearch+Logstash+Kibana+Filebeat的日志收集分析及可视化

sudo rm /var/lib/dpkg/lock*

sudo dpkg --configure -a

apt update

tail -f /var/log/car.log

1.1、项目概述

海量的业务应用,也带来了海量的日志数据,给业务应用的运维带来了新的挑战。例如,我们常用的网约车应用,单个平台的日订单数量可以达到上亿条,产生各种类型的日志数据,像用户业务方面会产生交易日志、评价日志、投诉日志等;运营业务方面会产生工单日志、账单日志、用户操作日志等;支撑业务运行方面会产生系统日志、安全日志等等。

当系统发生故障,或者业务出现异常时,运维工程师需要登录到日志所在的服务器上,使用vim、sed、grep等工具进入日志文件中查找故障原因。在没有日志收集、分析、可视化工具的情况下,日志的查找,问题的分析、定位是一个非常繁琐的工作,尤其是目前使用虚拟机或容器实现业务应用的分布式部署,运维管理员需要深入到每一个虚拟机和容器中,进行日志的查找、分析和诊断,工作量和工作难度可想而知。
为解决这些问题,业界已经有了较多的成熟产品和解决方案,像简单的Syslog-ng、Rsyslog,已经商业化的Splunk,还有开源的Scribe、Fluent等等。

但是目前使用热度最高的还是ELKF的组合。ELKF是Elasticsearch、Logstash、Kibana和FileBeat的首字母简称,提供分布式的实时日志搜集和分析的监控,为运维人员提供数据查找、服务诊断、数据分析的一站式日志收集、查找、分析解决方案。

1.1.1、项目简介

首先介绍Elasticsearch、Kibana、Logstash和Filebeat的技术知识。其次,介绍了Elasticsearch、Kibana、Kafka、Logstash和Filebeat的安装部署方法,并演示了在两个节点上分别部署Elasticsearch、Kibana、Kafka、Logstash和Filebeat软件和依赖软件。最后,案例使用Python代码模拟网约车平台的日志数据,使用Filebeat收集日志数据,使用kafka将日志数据流转到Logstash中进行初步的数据过滤和清洗,使用ElasticSearch存储过滤后的日志数据,并且使用Kibana对日志数据从平台约车评价、地域约车、用户群体和网约车平台数字化运营等不同角度进行数据分析。实现了日志的统一收集、过滤、分析、展示的过程。
本项目适合初学者学习搭建ELKF架构以及该架构的工作流程,也适合运维工程师使用本章节提供的方法,解决生产环境中日志管理的问题。

1.1.2、项目适用对象

1.1.3、项目时间安排

1.1.4、项目环境要求

在这里插入图片描述g&pos_id=img-9fTMyybz-1705674811606)

1.1.5、项目架构及流程

1.1.6、项目技术知识

(1)ELK Stack

(2)Filebeat轻量型日志收集器

Filebeat隶属于Beats,是使用Go语言实现的轻量级日志收集器,也是Elastic stack里面的一员。FileBeat是一个没有任何依赖的二进制文件,且占用资源极少,重构了Logstash采集器源码,根据配置将对应位置的日志进行读取,并将它们发送到Logstash或Elasticsearch等。Filebeat可靠性强,能够保证日志至少会上报一次,如果出现中断,能够在恢复正常后,从中断前停止的位置继续开始,不错过任何检测信号。

Filebeat的工作流程如下图所示:当Filebeat启动时,它同时会启动一个或者多个查找器(prospector)用于检测指定目录或者文件。对于存在查找器的日志文件,FIlebeat 会启动收集进程(harvester)。每一个进程都能够为新内容读取单个日志文件,并将数据发送到后台处理程序(Spooler)中,后台处理程序负责将多个进程中的数据进行聚合,最后发送聚合的数据到指定的目的地。

在这里插入图片描述

(3)Logstash日志分析过滤工具

Logstash作为一款功能强大的数据处理工具,能够从许多不同的来源采集数据并转换数据,再将其发送到指定位置,不会受到格式或者复杂度的影响。

Logstash事件处理过程包括三个阶段:输入(Inputs)、过滤(Filters)、输出(Outputs)。在输入阶段,Logstash从数据源处采集数据,在过滤阶段根据要求对数据进行修改,在输出阶段把数据写入指定位置,通常用于日志分析过滤、应用日志、webserver日志、错误日志等。

(4)Elasticsearch分布式日志搜索引擎

Lucene是用于全文检索和搜寻的开源式库,提供了一个高性能、全功能的应用式接口,用来做全文搜索引擎。但Lucene使用时繁琐、复杂,于是出现了Elasticsearch,它基于Java语言编写,对Lucene 进行了一层封装,提供了RESTful web接口让全文检索变得简单。

Elasticsearch是面向文档的(document oriented),这意味着它可以存储整个对象或文档。然而它不仅仅是存储,还会索引每个文档的内容使之可以被搜索。能够对文档(并不是成行成列的数据)进行索引、搜索、排序和过滤操作。

(5)Kibana日志汇总、分析和搜索展示系统

(6)Kafka分布式消息系统

Kafka是一款高吞吐量的分布式发布、订阅消息引擎系统,是Apache基金会顶级开源项目之一,使用Scala和Java编程语言编写。Kafka可以实现不同系统之间消息传递,实现松耦合的异步数据处理。通俗来讲,就是A系统将消息发送给Kafka,B系统再从Kafka读取A系统发送的消息,Kafka从中起到一个消息传递的桥梁作用。Kafka两种运行模式,分别是:点对点传输和发布订阅传输。

1.2、项目环境部署

grok插件

grok插件是Logstash最重要的插件之一,用于非结构化数据解析为结构化和可查询的数据。即将一个key对应的一长串非结构化的value,转成多个结构化的key-value。

从数据分析的角度:非结构化数据不便于检索、统计、分析。

非结构化数据变成结构化数据后才有检索、统计、分析的价值。

mutate数据修改插件

提供了丰富的基础类型数据处理能力,可以重命名、删除、替换和修改事件中的字段。

mutate数据修改插件

常用的配置选项
add_field向事件添加新字段,也可以添加多个字段
remove_field从事件中删除任意字段
add_tag向事件中添加任意标签,在tag字段中添加一段自定义的内容,当tag字段中超过一个内容的时候会变成数组
remove_tag从事件中删除标签(如果存在)
convert将字段值转换为另一种数据结构
id向现场事件添加唯一的ID
lowercase将字符串字段转换为其小写形式
replace用新值替换字段
strip删除开头和结尾的空格
uppercase将字符串字段转换为其小写形式
update用新值更新现有字段
rename重命名事件中的字段
gsub通过正则表达式替换字段中匹配到的值
merge合并数组或hash事件
split通过指定的分隔符分割字段中的字符串为数组

multiline

java错误日志一般都是一条日志很多行的,会把堆栈信息打印出来,当经过logstash解析后,每一行都会当做一条记录存放在ES,那这种情况肯定是需要处理的。这里就需要使用multiline插件,对属于同一条日志的记录进行拼接。

(4)Elasticsearch分布式日志搜索引擎

提供了丰富的基础类型数据处理能力。可以重命名

在这里插入图片描述

Lucene是用于全文检索和搜寻的开源式库,提供了一个高性能、全功能的应用式接口,用来做全文搜索引擎。但Lucene使用时繁琐、复杂,于是出现了Elasticsearch,它基于Java语言编写,对Lucene 进行了一层封装,提供了RESTful web接口让全文检索变得简单。

Elasticsearch是面向文档的(document oriented),这意味着它可以存储整个对象或文档。然而它不仅仅是存储,还会索引每个文档的内容使之可以被搜索。能够对文档(并不是成行成列的数据)进行索引、搜索、排序和过滤操作。

(1)Index索引

(2)Type类型

(3)Filed字段

Filed字段相当于数据表的字段,将文档数据根据不同属性进行分类标识。

(4)Mapping映射

Mapping是对处理数据的方式和规则做一些限制,如某个字段的数据类型、默认值、分析器、是否被索引等等。通过建立映射,可以有效提高数据处理的性能,相当于为结构化数据表添加主键、外键的操作。

(5)Document文档

文档是能够被索引的基础信息单元,如一个产品文档、一个订单文档。文档为JSON格式,JSON是互联网数据交互格式。在一个index/type里面,可以存储任意多的文档。需要注意的是,虽然文档存在于一个索引中,必须赋予文档一个索引的type。插入索引库以文档为单位,类比与数据库中的一行数据。

(6)Cluster集群

集群是由一个或者多个节点组织在一起,一起持有数据并提供索引、搜索功能。一个集群的默认标识为“elasticsearch”,是唯一的名字标识。

(7)Node节点

ElasticSearch是分布式的架构,多个实例协同工作、存储数据、参与索引和检索。一个ElasticSearch的实例成为一个Node节点。虽然每台服务器能够运行多个ElasticSearch实例,但建议生产环境中一台服务器运行一个实例。

(8)Shards&Replicas分片和复制

一个索引能够存储远远超过单个结点硬件限制的数据量,这是因为Elasticsearch能够将索引划分成多份,称之为分片。创建索引时,可以指定分片的数量。每一分片也是一个独立的“索引”,可以将其置于集群中的任何节点上。

由于网络和云的环境,随时存在失败的可能性。例如,某个分片、节点突然处于离线状态或异常消失了,需要为分片创建一份或多份拷贝,建立故障转移机制,该机制叫做复制分配,简称分片。

Elasticsearch&Kibana安装

在这里插入图片描述

java安装成功

在这里插入图片描述

vi+路径

shift+g+g进入最低端

摁i,左下角出现insert

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

创建topic

在这里插入图片描述

模仿生产消息

在这里插入图片描述

模拟消费消息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

认真学习正则表达式

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

tail -f /var/log/car.log

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

es索引与mysql索引的区别
正排索引(forward index):正排索引也称为“前向索引”。它是创建倒排索引的基础,通过 **文档到关键字(doc->word)**的映射。以文档的ID为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。

(1)LocalId字段(表中简称"Lid"):表示一个文档的局部编号。

(2)WordId字段:表示文档分词后的编号,也可称为"索引词编号"。

(3)NHits字段:表示某个索引词在文档中出现的次数。

(4)HitList变长字段:表示某个索引词在文档中出现的位置,即相对于正文的偏移量。

倒排索引 ,一般也被称为反向索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。

ES 倒排索引包含两个部分:单词词典和倒排列表

倒排列表记载了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息及频率(作关联性算分),每条记录称为一个**倒排项(**Posting)。

倒排所有主要的作用就是召回,正排索引的作用主要是排序(计算分数),聚合等操作,获取dataid对应的detail信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/637963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

I.MX8QM EC20适配

Android SDK:imx8_13.0.0_1.2.0(android 13 u-boot 2022.04 kernel 5.15.74) 一、内核修改 添加PID、VID。在“drivers/usb/serial/option.c”中可以看到EC25的PID和VID已经添加,而且这个EC25的PID和VID与EC20的相同,所以这里可以不用修改…

Traceroute 详解

前言 如果您是网络管理员,系统管理员或任何系统操作团队的一员,那么您可能已经听说过名为TRACEROUTE的工具。默认情况下,它是大多数操作系统中都提供的非常方便的工具。 网络管理员和系统管理员在日常活动中最常使用此工具。它基本上是一个…

二叉树 - 堆 | 数据结构中的小技巧大作用

📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构冒险记 ✅C语言进阶之路 🌅 有航道的人,再渺小也不会迷途。 文章目录 一、堆的概念及介绍二、结构图示三、堆的代码实现(图解)3.1 创…

HackTheBox - Medium - Linux - Noter

Noter Noter 是一种中型 Linux 机器,其特点是利用了 Python Flask 应用程序,该应用程序使用易受远程代码执行影响的“节点”模块。由于“MySQL”守护进程以用户“root”身份运行,因此可以通过利用“MySQL”的用户定义函数来利用它来获得RCE并…

快速上手的AI工具-文心3.5vs文心4.0

前言 大家好晚上好,现在AI技术的发展,它已经渗透到我们生活的各个层面。对于普通人来说,理解并有效利用AI技术不仅能增强个人竞争力,还能在日常生活中带来便利。无论是提高工作效率,还是优化日常任务,AI工…

一篇文章看懂云渲染,云渲染是什么?云渲染如何计费?云渲染怎么选择

云渲染是近年兴起的新行业,很多初学者对它不是很了解,云渲染是什么?为什么要选择云渲染?它是如何计费的又怎么选择?这篇文章我们就带大家了解下吧。 云渲染是什么 云渲染简单来说就是把本地的渲染工作迁移到云端进行的…

以超市数据微案例-fineBI可视化分析

一、入门案例: 2.分析思路: 数据清晰界面中添加毛利额计算 **所以在新增步骤之后,必须点击保存并更新,否则可视化界面中无法使用最新的数据 4、数据可视化分析 1)销售额最高的十大商品种类 为1-8月超市数据&#xff…

响应式编程

Reactive-Stream Reactive Streams是JVM面向流的库的标准和规范 1、处理可能无限数量的元素 2、有序 3、在组件之间异步传递元素 4、强制性非阻塞,背压模式 在Java中,常用的背压机制是响应式流编程中的反压(Reactive Streams Backpressure)。反压是一种生产者-消费者模型,…

【刷题笔记4】

动态规划题目汇总 斐波那契数列:1,1,2,3,5,8,13…… 递归一把解决三类问题:1.数据定义是按照递归的(斐波那契数列)。2.问题解法是按递归算法实现的。 3.数据…

JUC-Java内存模型JMM

JMM概述 Java Meory Model java内存模型。在不同的硬件和不同的操作系统上,对内存的访问方式是不一样的。这就造成了同一套java代码运行在不同的操作系统上会出问题。JMM就屏蔽掉硬件和操作系统的差异,增加java代码的可移植性。这是一方面。 另一方面JM…

ios适配虚拟home键

在H5开发过程中遇到一个兼容性问题。iphone手机的虚拟home键会对屏幕底部的内容造成遮挡。要处理此问题,需要清楚安全区域这个概念。 安全区域 根据刘海和虚拟Home键,Apple为其设备提供了屏幕安全区域的视觉规范 竖屏:竖屏的时候&#xff…

UE5 C++学习笔记 常用宏的再次理解

1.随意创建一个类,他都有UCLASS()。GENERATED_BODY()这样的默认的宏。 UCLASS() 告知虚幻引擎生成类的反射数据。类必须派生自UObject. (告诉引擎我是从远古大帝UObject中,继承而来,我们是一家人,只是我进化了其他功能…

矩阵和矩阵如何相乘?

矩阵与矩阵相乘遵循特定的数学规则。为了相乘,第一个矩阵的列数必须等于第二个矩阵的行数。矩阵乘法的结果是一个新矩阵,其行数等于第一个矩阵的行数,列数等于第二个矩阵的列数。矩阵乘法不满足交换律,即 AB≠BA。 例子&#xff…

131. 分割回文串 - 力扣(LeetCode)

问题描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 输入示例 s "aab"输出示例 [["a","a","b"],["…

Unity 面试篇|(九)操作系统与网络篇 【全面总结 | 持续更新】

目录 1. 客户端与服务器交互方式有几种?2. OSI七层模型有哪些,每一层的作用3. UDP/TCP含义,区别4. TCP/IP协议栈各个层次及分别的功能?5. 写出WWW的几个方法?6. Socket粘包7. Socket的封包、拆包8. Socket 客户端 队列…

数学建模常见算法的通俗理解(2)

目录 6 K-Means(K-均值)聚类算法(无需分割数据即可分类) 6.1 粗浅理解 6.2 算法过程 6.2.1 选定质心 6.2.2 分配点 6.2.3 评价 7 KNN算法(K近邻算法)(K个最近的决定方案) 7.…

【每日一题】按分隔符拆分字符串

文章目录 Tag题目来源解题思路方法一:遍历方法二:getline 写在最后 Tag 【遍历】【getline】【字符串】【2024-01-20】 题目来源 2788. 按分隔符拆分字符串 解题思路 方法一:遍历 思路 分隔符在字符串开始和结束位置时不需要处理。 分隔…

Crow:实现点击下载功能

Crow:设置网站的index.html-CSDN博客 讲述了如何完成一个最简单的网页的路由 很多网页提供了下载功能,怎么实现呢,其实也很简单。 假设网页的目录结构如图 $ tree static static ├── img │ └── goodday.jpg └── index.html //index.html <html> <body&…

专业137总分439东南大学920专业基础综合考研经验电子信息与通信电路系统芯片

我本科是南京信息工程大学&#xff0c;今年报考东南大学信息学院&#xff0c;成功逆袭&#xff0c;专业137&#xff0c;政治69&#xff0c;英语86&#xff0c;数一147&#xff0c;总分439。以下总结了自己的复习心得和经验&#xff0c;希望对大家复习有一点帮助。啰嗦一句&…

C++ :命名空间域

目录 冲突与命名&#xff1a; 举个例子&#xff1a; 全局与局部&#xff1a; 域作用限定符&#xff1a; 命名空间域&#xff1a; 冲突与命名&#xff1a; 在C语言中&#xff0c;我们通常会使用stdlib.h 而stdlib.h 本质上是一个函数的库&#xff0c;在程序中使用的大多数…