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

news2025/1/16 16:12:47

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.coloradmin.cn/o/1400880.html

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

相关文章

六、数组(1)二维数组

一、二维数组定义方式 1、数据类型 数组名[行数][列数]; 2、数据类型 数组名[行数][列数]{{数据1,数据2},{数据3,数据4}}; 3、数据类型 数组名[行数][列数]{数据1,数据2,数据3,数据4}; 4、数据类型 数组名[][列数]{数据1,数据2,数据3,数据4}; 注:第二种定义方式更…

S32K3系列 --- 硬件I2C Mcal配置

前言 网上看到很多I2C的教程,基本都是模拟I2C,现在S32K3的芯片支持硬件I2C,我想着就配一个硬件的出来吧,这边记录一下,供大家学习。 一、I2C原理 这里主要教大家如何去配置,去使用。 原理的话可以参考这篇文章: 一文搞懂I2C通信总线_i2c通信的详细讲解-CSDN博客 I2…

生信人 RNA-seq

RNA-seq:6-qc-2 #先跑一个综合的 Multiqc 报告 #将fastqc生成的多个报告整合成一个报告,方便查看所有测序数据的质量。 conda install multiqc -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda cd /home/yinwen/RNA-seq_report/ mult…

【算法与数据结构】474、LeetCode一和零

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题要找strs数组的最大子集,这个子集最多含有 m m m个0和 n n n个1。本题也可以抽象成一个…

【LeetCode每日一题】2809. 使数组和小于等于 x 的最少时间

2024-1-19 文章目录 [2809. 使数组和小于等于 x 的最少时间](https://leetcode.cn/problems/minimum-time-to-make-array-sum-at-most-x/)思路: 2809. 使数组和小于等于 x 的最少时间 思路: 获取两个列表的长度n,并初始化一个二维数组f&…

Spring Boot整合Redis的高效数据缓存实践

引言 在现代Web应用开发中,数据缓存是提高系统性能和响应速度的关键。Redis作为一种高性能的缓存和数据存储解决方案,被广泛应用于各种场景。本文将研究如何使用Spring Boot整合Redis,通过这个强大的缓存工具提高应用的性能和可伸缩性。 整合…

从零开始c++精讲:第四篇——模板初阶

文章目录 一、泛型编程二、函数模板2.1函数模板概念2.2函数模板格式2.3函数模板原理2.4函数模板实例化2.5函数模板匹配原则 三、类模板3.1类模板的定义格式3.2类模板的实例化 一、泛型编程 如何实现一个通用的交换函数呢? void Swap(int& left, int& righ…

TCP/IP协议及配置、IP地址、子网掩码、网关地址、DNS与DHCP介绍

一、什么是服务器 能够为其他计算机提供服务的更高级的电脑 尺寸:Unit 1u1.75英寸44.45mm4.445cm IDC(机房) C/S结构 Client/Server客户端和服务端 二、TCP/IP协议 计算机与计算机之间通信的协议 三要素: IP地址 子网掩码 IP路由 I…

C++设计模式之 模板方法模式

【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是模板方法模式(第18种设计模式) 模板方法模式&#xff0…

大数据安全 | 期末复习(上)| 补档

文章目录 📚概述⭐️🐇大数据的定义、来源、特点🐇大数据安全的含义🐇大数据安全威胁🐇保障大数据安全🐇采集、存储、挖掘环节的安全技术🐇大数据用于安全🐇隐私的定义、属性、分类、…

Transformer 可解释性论文整理(超级详细)

Transformer 可解释性论文整理 前段时间想进一步的了解transformer的工作原理,于是找到了几篇可解释性的文章进行阅读,发现了许多比较有趣的现象和结论,对每篇文章都有自己的深度思考和理解,在此记录,欢迎交流。 1. …

「优选算法刷题」:二分查找

一、题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 …

【JavaEE进阶】实现验证码

文章目录 🌲实现说明🍃Kaptcha插件介绍🚩插件原理🚩引入依赖🚩⽣成验证码🚩Kaptcha详细配置 🍀准备⼯作🌴约定前后端交互接⼝🚩需求分析🚩接⼝定义&#x1f6…

力扣 第 122 场双周赛 解题报告 | 珂学家 | 脑筋急转弯 + 滑窗反悔堆

前言 整体评价 倒开差点崩盘,T4这个反悔堆写吐了,T3往众数上去猜了,幸好case良心。 T1. 将数组分成最小总代价的子数组 I 思路: 取 nums[1:] 的最小2个值 可以部分排序,这样更快捷 class Solution {public int minimumCost(in…

Github操作网络异常笔记

Github操作网络异常笔记 1. 源由2. 解决2.1 方案一2.2 方案二 3. 总结 1. 源由 开源技术在国内永远是“蛋疼”,这些"政治"问题对于追求技术的我们,形成无法回避的障碍。 $ git pull ssh: connect to host github.com port 22: Connection ti…

Qt QCustomPlot 绘制子轴

抄大神杰作:QCustomplot(五)QCPAxisRect进行子绘图-CSDN博客文章浏览阅读5.9k次,点赞7次,收藏60次。文中介绍了QCustomPlot 子绘图需要掌握的类,也就是Matlab中的subplot,最后给出了一个完整的例…

EtherNet/IP开发:C++搭建基础模块,EtherNet/IP源代码

这里是CIP资料的协议层级图,讲解协议构造。 ODVA(www.ODVA.org)成立于1995年,是一个全球性协会,其成员包括世界领先的自动化公司。结合其成员的支持,ODVA的使命是在工业自动化中推进开放、可互操作的信息和…

人工智能原理实验1(2)——传教士与野人问题

🧡🧡实验内容🧡🧡 有n个牧师和n个野人准备渡河,但只有一条能容纳c个人的小船,为了防止野人侵犯牧师,要求无论在何处,牧师的人数不得少于野人的人数(除非牧师人数为0),且假…

算法练习-替换数字(思路+流程图+代码)

难度参考 难度:简单 分类:字符串 难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。以下内容均为个人笔记,旨在督促自己认真学习。 题目 给定一个字符串S,它包含小写字母和数字字符&#xff0…

全国各省市上市公司数量数据,Shp、excel格式,含上市企业数量、行政区划中心点位经纬度等字段

基本信息. 数据名称: 全国各省市上市公司数量数据 数据格式: Shp、excel 数据时间: 2023年1月 数据几何类型: 面 数据坐标系: WGS84 数据来源:网络公开数据 数据字段: 序号字段名称字段说明1province省份名称2provin_dm省份代码3city城市名…