Logstash:部署和扩展 Logstash

news2024/11/15 19:35:33

Elastic Stack 用于大量用例,从操作日志和指标分析到企业和应用程序搜索。 确保你的数据可扩展、持久且安全地传输到 Elasticsearch 非常重要,尤其是对于任务关键型环境。

本文档的目的是强调 Logstash 最常见的架构模式以及如何随着部署的增长而有效扩展。 重点将围绕操作日志、指标和安全分析用例,因为它们往往需要更大规模的部署。 此处提供的部署和扩展建议可能因你自己的要求而异。

让我们开始吧

对于初次使用的用户,如果你只是想跟踪日志文件以掌握 Elastic Stack 的强大功能,我们建议你尝试使用 Filebeat Modules。有关 Filebeat 模块的使用,请详细阅读文章 “Beats:Beats 入门教程 (二)”。 Filebeat 模块使你能够快速收集、解析和索引流行的日志类型,并在几分钟内查看预构建的 Kibana 仪表板。 Metricbeat 模块提供了类似的体验,但带有指标数据。 在这种情况下,Beats 会将数据直接发送到 Elasticsearch,其中 Ingest Nodes 将处理和索引你的数据。

 

Logstash 介绍

将 Logstash 集成到您的架构中有哪些主要好处?

  • 通过摄取峰值进行扩展 —— Logstash 有一个自适应的基于磁盘的缓冲系统,可以吸收传入的吞吐量,从而减轻背压
  • 从数据库、S3 或消息队列等其他数据源获取
  • 将数据发送到多个目的地,如 S3、HDFS,或写入文件
  • 使用条件数据流逻辑组成更复杂的处理管道

有关 Beats 和 Logstash 的比较,请详细阅读文章 “Beats:Elastic Beats 介绍 及和 Logstash 的比较”。

摄取扩容

Beats 和 Logstash 让 ingest 变得很棒。 它们共同提供了一个可扩展且有弹性的综合解决方案。 你能期待什么?

  • 水平可扩展性、高可用性和可变负载处理
  • 具有至少一次传递保证的消息持久性
  • 具有身份验证和线路加密的端到端安全传输 

Beats 和 Logstash

Beats 在数以千计的边缘主机服务器上运行,收集、跟踪日志并将其发送到 Logstash。 Logstash 用作数据统一和丰富的集中式流引擎。 Beats 输入插件公开了一个安全的、基于确认的端点,供 Beats 将数据发送到 Logstash。

注意:强烈建议启用持久队列,并且这些架构特征假定它们已启用。 我们鼓励你查看持久队列 (PQ) 文档以获得功能优势和有关弹性的更多详细信息。

可扩展性

Logstash 是水平可扩展的,可以形成运行相同管道的节点组。 Logstash 的自适应缓冲功能即使在可变吞吐量负载下也能促进流畅的流式传输。 如果 Logstash 层成为摄取瓶颈,只需添加更多节点以进行横向扩展。 以下是一些一般性建议:

  • Beats 应该在一组 Logstash 节点之间进行负载平衡。
  • 建议至少使用两个 Logstash 节点以实现高可用性。
  • 每个 Logstash 节点只部署一个 Beats 输入是很常见的,但也可以为每个 Logstash 节点部署多个 Beats 输入,以便为不同的数据源公开独立的端点。

韧性

在此摄取流中使用 Filebeat 或 Winlogbeat 进行日志收集时,可以保证至少一次交付。 从 Filebeat 或 Winlogbeat 到 Logstash,以及从 Logstash 到 Elasticsearch,这两种通信协议都是同步的并且支持确认。 其他 Beats 尚不支持这种机制。

Logstash 持久队列提供跨节点故障的保护。 对于 Logstash 中的磁盘级弹性,确保磁盘冗余很重要。 对于本地部署,建议你配置 RAID。 在云端或容器化环境中运行时,建议你使用具有反映数据 SLA 的复制策略的永久性磁盘。

注意:确保 queue.checkpoint.writes: 1 设置为至少一次保证。 有关更多详细信息,请参阅持久队列持久性文档。

数据处理

Logstash 通常会使用 grok 或 dissect 提取字段,增加地理信息,并可以使用文件、数据库或 Elasticsearch 查找数据集进一步丰富事件。更多关于丰富数据的过滤器,请参考 “Logstash:通过 lookups 来丰富数据”。 请注意,处理复杂性会影响整体吞吐量和 CPU 利用率。 确保检查其他可用的过滤器插件。

安全传输

在整个交付链中提供企业级安全性。

  • 建议对从 Beats 到 Logstash 的传输以及从 Logstash 到 Elasticsearch 的传输使用有线加密。
  • 与 Elasticsearch 通信时有很多安全选项,包括基本身份验证、TLS、PKI、LDAP、AD 和其他自定义领域。 要启用 Elasticsearch 安全性,请参阅保护集群。

监控

运行 Logstash 5.2 或更高版本时,监控 UI 提供对部署指标的深入可见性,有助于观察性能并在扩展时缓解瓶颈。 监控是基本许可证下的一项 X-Pack 功能,因此可以免费使用。 要开始使用,请参阅监控 Logstash。

如果首选外部监控,可以使用返回时间点指标快照的监控 API。

添加其他流行源

用户可能有其他收集日志数据的机制,并且很容易将它们集成并集中到 Elastic Stack 中。 让我们来看看几个场景:

 

TCP、UDP 和 HTTP 协议

TCP、UDP 和 HTTP 协议是将数据馈送到 Logstash 的常用方法。 Logstash 可以使用相应的 TCP、UDP 和 HTTP 输入插件公开端点侦听器。 下面列举的数据源通常是通过这三种协议之一获取的。

注意:TCP 和 UDP 协议不支持应用程序级别的确认,因此连接问题可能会导致数据丢失。

对于高可用性场景,应添加第三方硬件或软件负载均衡器,如 HAProxy,将流量扇出到一组 Logstash 节点。

网络和安全数据

尽管 Beats 可能已经满足你的数据摄取用例,但网络和安全数据集有多种形式。 让我们谈谈其他一些摄取点。

  • 网络线路数据 - 使用 Packetbeat 收集和分析网络流量。
  • Netflow v5/v9/v10 - Logstash 使用 Netflow 编解码器理解来自 Netflow/IPFIX 导出器的数据。
  • Nmap - Logstash 使用 Nmap 编解码器接受和解析 Nmap XML 数据。
  • SNMP 陷阱 - Logstash 有一个本机 SNMP trap input。
  • CEF - Logstash 使用 CEF 编解码器接受和解析来自 Arcsight SmartConnectors 等系统的 CEF 数据。 有关更多详细信息,请参阅此博客系列。

基础设施和应用程序数据和物联网

可以使用 Metricbeat 收集基础设施和应用程序指标,但应用程序也可以将 webhook 发送到 Logstash HTTP 输入或使用 HTTP 轮询器输入插件从 HTTP 端点轮询指标。

对于使用 log4j2 记录的应用程序,建议使用 SocketAppender 将 JSON 发送到 Logstash TCP 输入。 或者,log4j2 也可以将日志记录到文件中,以便使用 FIlebeat 进行收集。 不推荐使用 log4j1 SocketAppender。

Raspberry Pi、智能手机和联网车辆等物联网设备通常通过其中一种协议发送遥测数据。

与消息队列集成

如果你正在利用消息队列技术作为现有基础设施的一部分,那么将该数据导入 Elastic Stack 将很容易。 对于使用外部队列层(如 Redis 或 RabbitMQ)仅用于 Logstash 数据缓冲的现有用户,建议使用 Logstash 持久队列而不是外部队列层。 这将通过消除摄取架构中不必要的复杂层来帮助整体简化管理。

对于想要从现有 Kafka 部署中集成数据或需要临时存储的底层使用的用户,Kafka 可以充当数据中心,Beats 可以持久保存在其中,Logstash 节点可以从中使用数据。

 其他 TCP、UDP 和 HTTP 源可以使用 Logstash 作为管道持久保存到 Kafka,以代替负载均衡器实现高可用性。 然后,一组 Logstash 节点可以使用 Kafka 输入从主题中消费,以进一步转换和丰富传输中的数据。

韧性和恢复

当 Logstash 从 Kafka 消费时,应该启用持久队列并将增加传输弹性以减轻 Logstash 节点故障期间重新处理的需要。 在这种情况下,建议使用默认的持久队列磁盘分配大小 queue.max_bytes:1GB。

如果 Kafka 配置为长时间保留数据,在容灾和对账的情况下,可以从 Kafka 重新处理数据。

其他消息队列集成

虽然不需要额外的队列层,但 Logstash 可以使用无数其他消息队列技术,如 RabbitMQ 和 Redis。 它还支持从 Pub/Sub、Kinesis 和 SQS 等托管队列服务中摄取数据。

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

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

相关文章

c++学习之c++对c的扩展2

目录 1.c/c中的const 1 const概述 2 c/c中const的区别 c中的: c中的const: c/c中的const异同 c中const修饰的变量,分配内存情况 尽量以const替换define 2.引用 函数的引用: 引用的本质 指针的引用 5 常量引用 内联函数 内联函数…

(排序7)归并排序(递归)

归并排序 归并排序采用的是两个有序数组的归并。比如说现在想让一个数组有序。之前我们讲过,如果说你现在有两个有序数组的话,那么我们就可以把这两个有序数组给他合并成一个有序数组。两个有序区间归并的思路其实很简单(这个也是归并的单趟…

Android 自定义View 之 计时文字

计时文字前言正文一、XML样式二、构造方法三、API方法四、使用五、源码前言 在Android开发中,常常会有计时的一些操作,例如收验证码的时候倒计时,秒表的计时等等,于是我就有了一个写自定义View的想法,本文效果图。 正文…

Vue2-黑马(八)

目录: (1)router-动态路由 (2)router-重置路由 (3)router-页面刷新 (1)router-动态路由 我们有这样一个需求,不同的用户根据自己的身份不一样,…

Seaborn 数据可视化基础

目录 介绍 知识点 Seaborn 介绍 快速优化图形 Seaborn 绘图 API 一、散点图: 参数hue hue hue_order 参数style 二 、线形图 三、类别图 绘制箱线图 绘制小提琴图 绘制增强箱线图 绘制点线图 绘制条形图 绘制计数条形图 四、分布图 五、回归图 …

nginx配置

单线程应用 稳定性高 系统资源消耗低 线程切换消耗小 对HTTP并发连接处理能力高 单台服务器可支持2w个并发请求 nginx与apache区别 Nginx相对于Apache的优点: 轻量级,同样是 web 服务,比Apache 占用更少的内存及资源,高并发&#xff0…

攻防世界-file_include(convert.iconv的使用)

代码审计,存在文件包含,直接上伪协议 发现不行,应该是存在字符过滤 知识盲区: 1.file://协议,需要填写绝对路径,只能读取txt文件,后面直接跟绝对路径。 file:///etc/passwd 2.php://filter …

深入浅出 Golang 内存管理

了解内存管理~ 前言: 本节课主要介绍了内存管理知识与自动内存管理机制,并对目前 Go 内存管理过程中存在的问题提出了解决方案,同时结合了上次课程学习的《Go 语言性能优化》相关知识,提供可行性的优化建议 … 自动内存管理 Go…

spring-boot怎么扫描不在启动类所在包路径下的bean

前言: 项目中有多个模块,其中有些模块的包路径不在启动类的子路径下,此时我们怎么处理才能加载到这些类; 1 使用SpringBootApplication 中的scanBasePackages 属性; SpringBootApplication(scanBasePackages {"com.xxx.xx…

C++linux高并发服务器项目实践 day5

Clinux高并发服务器项目实践 day5程序和进程单道、多道程序设计时间片并行和并发进程控制块(PCB)进程状态转换进程的状态进程相关命令进程号和相关函数进程创建父子进程的关系GDB多进程调试程序和进程 程序是包含一系列信息的文件,这些信息描…

你知道怎么实现定时任务吗?

诸位读者都知道笔者写东西都是用到才写,笔者的学习足迹自从参加工作之后就是 非系统 学习了,公司里源代码只要有笔者不知道的技术细节,笔者就会仔细的研究清楚,笔者是不喜欢给自己留下问题的那种学习习惯。 为何要写 笔者最近负…

如何使用Thymeleaf给web项目中的网页渲染显示动态数据?

编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 服务器软件:apache-tomcat-8.5.27 目录一. 什么是Thymeleaf?二. MVC2.1 为什么需要MVC?2.2 MVC是什么?2.3 MVC和三层架构之间的关系及工…

AI绘图体验:想象力无限,创作无穷!(文生图)

基础模型:3D二次元 PIXEL ART (1)16-bit pixel art, outside of caf on rainy day, light coming from windows, cinematic still(电影剧照), hdr (2) 16-bit pixel art, island in the clouds, by studio ghibli(吉卜力工作室…

配置基于WSL2的Docker环境并支持CUDA

导言 Content 正如前文windows 10 开启WSL2介绍的,我们可以在windows10中使用linux子系统。今天本文介绍如何在此基础上安装Docker并支持在wsl中使用GPU。 准备工作 加入windows insider preview。建议选Dev通道,不要选Beta。 安装Nvidia WSL2-compa…

【数据结构】-计数排序

🎇作者:小树苗渴望变成参天大树 🎉 作者宣言:认真写好每一篇博客 🎊作者gitee:link 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 文章目录前言一、计数排序二、排序算法复杂度…

Nginx网站服务配置

一、Nginx概述 1.1 Nginx概述 Nginx: Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件…

分布式计算技术(上):经典计算框架MapReduce、Spark 解析

当一个计算任务过于复杂不能被一台服务器独立完成的时候,我们就需要分布式计算。分布式计算技术将一个大型任务切分为多个更小的任务,用多台计算机通过网络组装起来后,将每个小任务交给一些服务器来独立完成,最终完成这个复杂的计…

07 -全局状态管理

全局状态管理 7-1:开篇 在上一章中我们完成了 “一半” 的文章搜索功能,并且留下了一些问题。那么这些历史残留的问题,我们将会在本章节中通过 全局状态管理工具 进行处理。 那么究竟什么是 全局状态管理工具,如何在 uniapp 中…

【Flutter进阶】聊一聊组件中的生命周期、状态管理及局部重绘

前言 说到生命周期,熟悉Android开发的小伙伴一定第一时间会想到Activity的生命周期,由于在Flutter中一切都是组件,所以组件的生命周期其实是类似的。 在这个过程中组件的状态——State就非常重要,它记录这整个组件内可变部分的状…

【SSM整合】1—Spring和Mybatis整合

⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ Spring专栏👉https://blog.csdn.net/weixin_53580595/category_12279588.html SpringMVC专栏👉htt…