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

news/2024/7/7 5:52:40 标签: 大数据, 搜索引擎, elasticsearch

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.niftyadmin.cn/n/5337184.html

相关文章

11.什么档次的原型模式和我写的一样

在《生化危机》系列电影中,克隆人是个频频出现的话题。保护伞公司为了需求复制出另一个战力相当的战士Alice,不惜克隆成百上千个Alice,然而直到最后,非但没有真正克隆出另一个完美的Alice,就连Alice自己也被证实是保护…

蓝桥杯真题(Python)每日练Day2

题目 题目分析 对于本题首先确定其数据结构为优先队列,即邮费最小的衣服优先寄,算法符合贪心算法。可以直接使用queue库的PriorityQueue方法实现优先队列。关于PriorityQueue的使用方法主要有: import queue q queue.Queue()# 队列 pq qu…

TensorFlow人工智能开源深度学习框架简单认识

TensorFlow是一个使用数据流图进行数值计算的开源深度学习框架。它由Google Brain团队开发,并于2015年开源发布。TensorFlow的核心概念是使用图表示计算任务,其中节点表示操作,边表示数据流动。 TensorFlow被广泛用于机器学习和深度学习任务…

017-信息打点-语言框架开发组件FastJsonShiroLog4jSpringBoot等

017-信息打点-语言框架&开发组件&FastJson&Shiro&Log4j&SpringBoot等 #知识点: 1、CMS指纹识别-不出网程序识别 2、开发框架识别-PHP&Python&Java 3、开发组件识别-Java常见安全漏洞组件 解决: 1、CMS识别到后期漏洞利用和代…

uniapp开发小程序—scroll-view实现内容滚动时, 标题也滚动

一、需求 scroll-view实现内容滚动时&#xff0c; 标题也滚动 二、效果 三、代码实现 <template><view class"content"><view class"head">头部固定区域</view><view class"list_box"><!-- 菜单左边 -->&l…

【算法详解】力扣69.x的平方根

一、题目描述 力扣链接&#xff1a;力扣69.x的平方根 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 注意&#xff1a;不允许使用任何内置指数函数和算符&#xff0c;…

工程师职称评审的流程

职称评审是对专业技术人员的专业考核评级&#xff0c;通过公平、工作的评审工作选拔优秀且专业的人才。职称评审的流程通常包括以下几个步骤&#xff1a; 公告评审标准和要求&#xff1a;评审机构根据不同行业、专业和职业领域的要求&#xff0c;制定相应的评审标准和要求&…

Ubuntu安装最新版Docker和Docker-Compose

ubuntu环境搭建专栏&#x1f517;点击跳转 Ubuntu系统环境搭建&#xff08;十&#xff09;——Ubuntu安装最新版Docker和Docker Compose 文章目录 Ubuntu系统环境搭建&#xff08;十&#xff09;——Ubuntu安装最新版Docker和Docker Compose1.添加Docker库1.1 安装必要的证书并…