Logstash【从无到有从有到无】【L12】部署和扩展Logstash

目录

1.部署和扩展Logstash

1.1.入门指南

1.2.介绍Logstash

1.3.缩放摄取(Scaling Ingest)

1.4.Beats与Logstash

1.5.可扩展性(Scalability)

1.6.弹性(Resiliency)

1.7.处理(Processing)

1.8.安全传输(Secure Transport)

1.9.监控方式(Monitoring)

1.10.添加其他流行资源(Adding Other Popular Sources)

1.11.TCP,UDP和HTTP协议

1.12.网络和安全数据

1.13.集中式系统日志服务器

1.14.基础设施与应用数据和物联网

1.15.集成消息传递队列

1.16.弹性和恢复(Resiliency and Recovery)

1.17.其他消息队列集成


1.部署和扩展Logstash(Deploying and Scaling Logstash)

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

本文档的目的是重点介绍Logstash的最常见体系结构模式,以及如何随着部署的增长而有效地扩展。重点将放在操作日志,指标和安全性分析用例上,因为它们往往需要更大规模的部署。根据您自己的要求,此处提供的部署和扩展建议可能会有所不同

 

1.1.入门指南

对于初次使用的用户,如果您只是想尾随日志文件以掌握Elastic Stack的功能,我们建议您尝试使用Filebeat Modules。Filebeat模块使您能够在几分钟内快速收集,解析和索引常用日志类型,并查看预建的Kibana仪表板(dashboards )。Metricbeat模块提供类似的体验,但带有度量标准数据。 在这种情况下,Beats会将数据直接传送到Elasticsearch,在其中摄取节点(Ingest Nodes)将处理和索引您的数据。

 

1.2.介绍Logstash

将Logstash集成到您的体系结构中的主要好处是什么?

  • 通过摄取高峰扩展-Logstash具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻背压
  • 从其他数据源(例如数据库,S3或消息传递队列)中提取数据
  • 将数据发送到多个目的地,例如S3,HDFS或写入文件
  • 使用条件数据流逻辑组成更复杂的处理管道

 

1.3.缩放摄取(Scaling Ingest)

Beats和Logstash使摄取变得很棒。 它们共同提供了可扩展且具有弹性的全面解决方案。 您能期待什么?

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

 

1.4.Beats与Logstash

Beats运行在数千台边缘主机服务器上,将日志收集,拖尾和运送到Logstash。Logstash用作集中式流引擎,用于数据统一和扩充。Beats输入插件(Beats input plugin)为Beats公开了一个基于确认的安全终结点,以将数据发送到Logstash。

强烈建议启用持久队列,并且这些体系结构特征假定已启用它们。 我们建议您查看Persistent Queues文档,以了解功能优势以及弹性的更多详细信息。

 

1.5.可扩展性(Scalability)

Logstash是水平可伸缩的,可以形成运行同一管道的节点组。Logstash的自适应缓冲功能即使在吞吐量变化不定的情况下,也可以促进流畅的流传输。如果Logstash层成为摄取瓶颈,则只需添加更多节点即可进行横向扩展。

以下是一些一般性建议:

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

1.6.弹性(Resiliency)

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

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

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

 

1.7.处理(Processing)

Logstash通常将提取带有grok 或 dissect的字段,增强地理信息( geographical),并可以使用文件,数据库或Elasticsearch(filedatabase, , Elasticsearch)查找数据集进一步丰富事件。 请注意,处理复杂性会影响整体吞吐量和CPU利用率。 确保检查其他可用的过滤器插件(available filter plugins.)。

 

1.8.安全传输(Secure Transport)

在整个交付链中都可以使用企业级安全性。

Beats to Logstash以及Logstash to Elasticsearch的传输都建议使用有线加密。
与Elasticsearch进行通讯时,有很多安全选项,包括基本身份验证,TLS,PKI,LDAP,AD和其他自定义领域。 要启用Elasticsearch安全性,请参阅Securing the Elastic Stack.

 

1.9.监控方式(Monitoring)

在运行Logstash 5.2或更高版本时,Monitoring UI可以深入了解您的部署指标,帮助您观察性能并在扩展时缓解瓶颈。 监视是基本许可证下的X-Pack功能,因此可以免费使用。 首先,请参阅Monitoring Logstash

如果首选外部监视,则有些 Monitoring APIs会返回时间点指标快照。

 

1.10.添加其他流行资源(Adding Other Popular Sources)

用户可能还有其他收集日志数据的机制,可以很容易地将它们集成并集中到Elastic Stack中。 让我们看一下几种情况:

 

1.11.TCP,UDP和HTTP协议

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

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

对于高可用性方案,应添加第三方硬件或软件负载平衡器(例如HAProxy),以将流量散发到一组Logstash节点。

 

1.12.网络和安全数据

尽管Beats可能已经满足了您的数据提取用例,但网络和安全性数据集却以多种形式出现。 让我们来谈谈其他一些摄取要点。

  • 网络线路数据-使用 Packetbeat收集和分析网络流量。
  • Netflow v5 / v9 / v10-Logstash可以使用Netflow codec理解来自Netflow / IPFIX导出程序的数据。
  • Nmap-Logstash使用Nmap codec接受并解析Nmap XML数据。
  • SNMP陷阱-Logstash具有本机SNMP陷阱输入。
  • CEF-Logstash使用 CEF codec从Arcsight SmartConnectors等系统接收并解析CEF数据。 有关更多详细信息,请参阅此博客系列(blog series)。

 

1.13.集中式系统日志服务器

现有的syslog服务器技术(例如rsyslog和syslog-ng)通常将syslog发送到Logstash TCP或UDP端点,以进行提取,处理和持久化。 如果数据格式符合RFC3164,则可以将其直接输入到Logstash syslog input中。

 

1.14.基础设施与应用数据和物联网

可以使用Metricbeat收集基础结构和应用程序指标,但是应用程序还可以将Webhooks发送到Logstash HTTP输入,或者使用HTTP poller input plugin从HTTP端点轮询指标。

对于使用log4j2登录的应用程序,建议使用SocketAppender将JSON发送到Logstash TCP输入。 另外,log4j2也可以登录到文件以通过FIlebeat进行收集。 不建议使用log4j1 SocketAppender。

诸如Raspberry Pi,智能手机和联网车辆之类的IoT设备通常通过以下协议之一发送遥测数据。

 

1.15.集成消息传递队列

如果您将消息队列技术用作现有基础架构的一部分,那么将数据放入弹性堆栈很容易。 对于使用Redis或RabbitMQ等外部排队层仅通过Logstash进行数据缓冲的现有用户,建议使用Logstash持久队列而不是外部排队层。 通过消除摄取架构中不必要的复杂性,这将有助于总体上简化管理。

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

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

 

1.16.弹性和恢复(Resiliency and Recovery)

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

如果将Kafka配置为保留较长时间的数据,则在灾难恢复和调和的情况下,可以从Kafka重新处理数据。

 

1.17.其他消息队列集成

尽管不需要额外的排队层,但Logstash可以使用无数其他消息排队技术,例如RabbitMQRedis。 它还支持从诸如 Pub/SubKinesis和 SQS的托管排队服务中提取。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值