ELK(elasticsearch+logstash+kibana+beats)

news2025/1/11 22:38:24

什么是ELK

  • Elasticsearch:Elasticsearch(以下简称ES) 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 ES是 Elastic Stack 的核心,采用集中式数据存储,可以通过机器学习来发现潜在问题。ES能够执行及合并多种类型的搜索(结构化数据、非结构化数据、地理位置、指标)。支持 PB级数据的秒级检索。

  • Kibana:Kibana 是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成

  • Logstash:Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到合适的的“存储库”中。

  • Beats:Beats 是一套免费且开源的轻量级数据采集器,集合了多种单一用途数据采集器。它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据。

为什么要使用ELK

  • 严格按照开发标准来说,开发人员是不能登录生产服务器查看日志数据的

  • 一个应用可能分布于多态服务器,难以查找

  • 同一台服务区可能部署多个应用,日志分散难以管理

  • 日志可能很大,单个文件通常能达到GB级别,日志无法准确定位,日志查询不方便且速度慢

  • 通常日志文件以非结构化存储,不支持数据可视化查询。

  • 不支持日志分析(比如慢查询日志分析、分析用户画像等)。

使用场景

  • 采集业务日志

  • 采集Nginx日志

  • 采集数据库日志,如MySQL

  • 监控集群性能指标

  • 监听网络端口

  • 心跳检测

Logstash

开源的流数据处理、转换(解析)和发送引擎,可以采集来自不同数据源的数据,并对数据进行处理后输出到多种输出源

工作原理

Logstash的每个处理过程均以插件的形式实现,Logstash的数据处理过程主要包括: Inputs , Filters , Outputs 三部分

数据采集:Inputs

数据过滤:Filter

数据存储:output

Beats

Beats 是一套免费且开源的轻量级数据采集器,集合了多种单一用途数据采集器。它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据。

beats替换了logstash一部分功能(input  采集功能)。因为logstash比较重量级,占用较多资源;而Beats相对轻量级。

Beats的基本特性

  • 开源:Beats 是一个免费且开放的平台,集合了多种单一用途数据采集器,各司其职,功能分离。社区中维护了上百个beat

  • 轻量级:体积小,职责单一、基于go语言开发,具有先天性能优势,不依赖于Java环境,对服务器资源占用极小。Beats 可以采集符合 Elastic Common Schema (ECS) 要求的数据,可以将数据转发至 Logstash 进行转换和解析。

  • 可插拔:Filebeat 和 Metricbeat 中包含的一些模块能够简化从关键数据源(例如云平台、容器和系统,以及网络技术)采集、解析和可视化信息的过程。只需运行一行命令,即可开始探索。

  • 高性能:对CPU、内存和IO的资源占用极小。

  • 可扩展:由于Beats开源的特性,如果现有Beats不能满足开发需要,我们可以自行构建,并且完善Beats社区

 组件

  • Filebeat:文件日志监控采集 ,主要用于收集日志数据

  • Metricbeat:进行指标采集,指标可以是系统的,也可以是众多中间件产品的,主要用于监控系统和软件的性能

  • Packetbeat: 是一个实时网络数据包分析器,通过网络抓包、协议分析,基于协议和端口对一些系统通信进行监控和数据收集。可以将其与Elasticsearch一起使用,以提供应用程序监视和性能分析系统。

  • Heartbeat:心跳检测 (在配置的Url中喊一句:喂,有活着的么?有的话吱个声!)

  • Winlogbeat:Windows事件日志

  • Auditbeat:审计数据(收集审计日志)

  • Functionbeat:云服务生成的日志和指标收集器

Kibana

Kibana 是一个免费且开放的可视化系统,能够让您对 Elasticsearch 数据进行可视化,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。

之前用的比较多的就是kibana的dev tools的功能,用于写dsl

 kibana中的discover支持可视化的查看数据

基于ELK搭建日志采集系统

流程 

安装logstash

下载:

Past Releases of Elastic Stack Software | Elastic

直接解压

启动:切换到bin目录  ./logstash

./logstash -e 'input{stdin{}}' output{stdout{}}'

-e:加启动选择

stdin:标准化输入

stdout:标准化输出

 在config/logstash-sample.conf中配置

启动时,加 -f指定配置文件

 ./bin/logstash  config/logstash-sample.conf

结果

stdin、stdout:方便排查日志采集问题

FileBeat

安装地址:

Filebeat 7.13.0 | Elastic

原理

 为什么要使用fileBeat

因为logstash有日志采集的功能,但是logstash比较重量级,如果放在业务服务器上,比较占用资源。所以,使用fileBeat在业务服务器上进行日志采集,然后把采集到的日志输出到logstash(单独的服务器)上,这样采集日志就不会占用业务服务器空间

 

filebeat配置

inputs配置

 启动fileBeat

 -e:对启动日志进行输出 

-c:指定配置文件

将fileBeat的输出改为logstash(filebeat.yml)

 logstash的默认端口号:5044

 修改logstash的输入为beats(logstash-sample.conf)

修改logstash的输出为es(logstash-sample.conf)

 output中可以加多个(stdout、elasticsearch等)

可以通过配置,将一部分日志归为一条日志(比如说一些错误日志)

multiline.type: pattern   # 匹配格式是正则
multiline.pattern: '^\['  # 匹配的正则表达式
multiline.negate: true    # 匹配上正则表示是一条数据(false表示匹配不上为新的一条数据)
multiline.match: after    # 匹配不上的追加在上一条后面

logstash添加filter过滤器

logstash最常用的filter是grok

kibana中可以写grok

 将logstash中的filter配置成写的grok正则

启动filebeat前,先把data数据删除(避免之前的日志已经采集过了,没有产生新的日志 )

rm -rf data/

区分input

一个beats可以有多个input,但是只能输出到同一个es的索引中,不方便做数据区分

可以给不同的input加标签区分

 在logstash中进行判断,然后区分index

可以根据grok判断

想根据日志级别区分不同的日志,生成不同的index,可以根据grok中的LOGLEVEL判断

如果要自定义正则表达式的话,可以在logstash的patterns文件中写

 也可以通过字符串判断

基于FileBeat采集nginx日志

安装nginx

查找nginx安装路径

修改nginx配置文件中日志采集格式为json

nginx.conf 

改动后需要重启nginx

修改filebeat支持json输入

 

基于filebeat采集系统日志syslog

format是一种日志规范

采集系统日志

udp、tcp的默认端口是514

修改配置文件 

 重启系统服务

查看系统服务状态 

 在logstash中区分tcp、udp索引

 使用logger测试tcp

 

 使用netcat测试udp

后面的udp.yml是自己创建的文件

数据可视化操作

kibana的dashboard

 管理index patterns

 创建index pattern

方便更好的看一类es索引数据

 创建dashboard

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

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

相关文章

ylb-接口2首页产品数据和接口3产品列表

总览: 1、service处理(分页查询) 在api模块下service包,创建一个产品接口ProductService:(目前方法为分页查询queryByTypeLimit(Integer pType,Integer pageNo,Integer pageSize)) package…

如何破解中小企业数字化转型难点?建议来了!

打开任何一个搜索引擎,只要输入“中小企业数字化转型”,关于痛点、难处的文章就会铺面而来,难在哪里,其实很好解答,关键在于,如何解决这一个个难处。 PS:给大家整理了一份完整版的《中小企业如…

物理层 ———— 奈氏准则 香农定理

1. 失真的现象----码间串扰 2.奈氏准则 eg: 3.香农定理 eg: 3.两个准则的比较

excel表格设置下拉选项

excel表格设置下拉选项 最后保存,即可设置完成。

RAM Failed to establish a new connection: [Errno 11001] getaddrinfo failed

在跑RAM(​Recognize Anything Model​)的时候报了一个错: Failed to establish a new connection: [Errno 11001] getaddrinfo failed ① 没有帮助我解决,对大家可能有用: 查到别人的解决方案是: 开放C:\Windows\System32\drivers\etc\hos…

和chatgpt学架构02-环境搭建

目录 1 安装vs code2 vs code功能介绍3 安装nodejs4 安装vue5 在vs code打开工程总结 我们在上一篇 技术选型 里咨询了chatgpt前后端的框架选择和数据库的选择。有了框架之后就需要选择合适的开发工具了,继续咨询一下chatgpt 我现在选型,前端使用vue&am…

Kubernetes集群故障排查—审计

Kubernetes 审计(Auditing) 功能提供了与安全相关的、按时间顺序排列的记录集, 记录每个用户、使用 Kubernetes API 的应用以及控制面自身引发的活动。 审计功能使得集群管理员能够回答以下问题: 发生了什么?什么时候…

跨文化合作:如何解决海外网红营销中的文化差异?

随着社交媒体的快速发展,海外网红营销已成为许多品牌和企业获取国际市场的有效方式。然而,由于不同国家和地区存在着独特的文化差异,如语言、价值观、习俗等,这也给品牌进行海外网红营销带来了一系列挑战。本文Nox聚星将和大家探讨…

linux主机上面使用kubectl连接 Kubernetes 集群

**kubectl连接Kubernetes集群,应用场景在一台linux主机上面可以使用kubectl命令查看k8s集群信息。 1、首先需要在linux或者debain上安装kubectl命令。 官网安装地址:https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux/#install-kubec…

什么是70v转12v芯片?

问:什么是70v转12v芯片? 答:70v转12v芯片是一种电子器件,其功能是将输入电压范围在9v至100v之间的电源转换为稳定的12v输出电压。这种芯片通常被用于充电器、车载电池充电器和电源适配器等设备中。 问:这种芯片的最大…

回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于ELM-Adaboost极限学…

Flink-端到端精确一次(End-To-End Exactly-Once)

1.总结 目的:想要在故障恢复后不丢数据 输入端 保证可以重复发送数据如果是kafka,Flink负责维护offset,不用kafka维护设置kafka的隔离级别为:读已提交flink 开启检查点采用对齐或者不对齐的精确一次输出端 kafka 幂等事务两阶段…

让你不再疑惑加水印用什么软件

每个人都有自己的独特创意和作品,而在现今互联网时代,分享和传播作品已成为一种普遍现象。然而,随着互联网的发展,越来越多的作品被人恶意盗用和复制,使得原创作者的权益受到了侵害。为了保护自己的作品,加…

每天一道大厂SQL题【Day27】脉脉真题实战(三)连续两天活跃用户

文章目录 每天一道大厂SQL题【Day27】脉脉真题实战(三)连续两天活跃用户每日语录第26题 中级题: 活跃时长的均值1. 需求列表思路分析 答案获取加技术群讨论附表文末SQL小技巧 后记 每天一道大厂SQL题【Day27】脉脉真题实战(三)连续两天活跃用户 大家好,我是Maynor。…

Vue中的事件处理

一,基本使用 1.使用v-on:事件名或者事件名绑定事件 常见的事件有: onclick, 鼠标单击事件; ondblclick, 鼠标双击事件;onmousedown,鼠标按下去的事件;onmouseup,鼠标弹起事件; onmouseover,onmouseente…

mybatis-plus逻辑删除与唯一约束冲突问题

问题描述: 在使用mybatis-plus进行数据库的增删查改的时候,我们一般都会设置用户名为唯一索引(为什么?因为用户名肯定不能重复) 当第一次新增用户时,会在数据库插入一条用户数据:能插入成功代…

计算机科学与技术专业课程内容汇总

大学课程结束了,真的好快。昨天把专业课程涉及到的内容汇总了下,还是挺多的,存到网盘里也不会丢,电脑存储空间还能扩大。 把网盘链接放在这里,希望大家共勉。图片中所涉内容仅为部分课程。 链接:https://…

Jmeter测试 Websocket服务器

目录 一、Jmeter 安装1.1 自定义 JMeter 的 JVM 设置 二、WebSocket插件安装三、环境准备3.1 连接数限制修改 四、测试4.1 脚本构建4.1.1 连接请求4.1.2 心跳4.1.3 WebSocket request-response Sampler4.1.4 WebSocket Single Write Sampler4.1.5 WebSocket Single Read Sample…

Mac配置CMake

目录 写在前面命令行安装安装包安装准备配置 参考完 写在前面 1、本文内容 Mac上配置CMake 2、平台 Mac 3、转载请注明出处: https://blog.csdn.net/qq_41102371/article/details/131807995 命令行安装 通过brew安装,先安装brew https://blog.csdn.n…

Sourcetree 同时推送两个仓库

Sourcetree 同时推送两个仓库 添加远端仓库添加完成推送推送完成git 命令版 添加远端仓库 注意名称不能相同 ,自己取个名子区分一下,别把自己搞懵就行了。 添加完成 推送 选择仓库。选择目标分支。并勾选跟踪。推送。 推送完成 推送完成后,…