设为首页 加入收藏

TOP

Logstash 入门实战(3)--input plugin 介绍(一)
2023-07-25 21:26:38 】 浏览:72
Tags:Logstash --input plugin 介绍

本文主要概述 Logstash 的一些最受欢迎的输入插件,以大致了解 Logstash 的用途;相关的环境及软件信息如下:CentOS 7.9、Logstash 8.2.2。

1、什么是 Logstash input 插件

Logstash 用作日志管道,用于侦听已配置日志源(例如,应用程序,数据库,消息代理)的事件,使用过滤器和编解码器对其进行转换和格式化,并运送到输出位置(例如,Elasticsearch 或 Kafka)。

Logstash 如此强大,因为它可以聚合来自多个源(例如 Redis,Apache HTTP 或 Apache Kafka)的日志,这些源位于多个节点上,并将它们放入由多个工作程序和线程管理的高效日志处理队列中。 Logstash 优化了输入和输出目标之间的日志流,从而确保了容错性能和数据完整性。 Logstash 的最大优点之一是可以使用众多过滤器和编解码器,这些过滤器和编解码器可以从日志中提取模式并将日志转换为适合在 Elasticsearch 和 Kibana 中进行分析的丰富数据对象。 这些功能使原始日志能够快速转换为可操作的对象,从而使你的业务受益。

输入插件是 Logstash 管道的重要组件,它们充当输入日志源和 Logstash 过滤功能之间的中间件。 通常,每个输入插件都允许连接到指定的日志源提供程序并使用其 API 提取日志。

2、查看 Logstash 的所有 input 插件

在 Logststash 的安装目录下,可通过如下的命令来查询所有内置的 Logstash 的输入插件:

./bin/logstash-plugin list --group input

3、常用 input 插件

3.1、Beats 家族

Elastic Beats 系列包括许多针对各种数据(日志,指标,事件等)的摄入。 Filebeat 用于日志传送,Packetbeat 用于网络数据传送以及 Metricbeat 用于系统和应用程序指标监视。 Elasticsearch 还提供 Windows 事件日志的 Winlogbeat,审计数据的 Auditbeat 和正常运行时间监视的 Heartbeat。其中的一些 Beat(例如 Filebeat)允许将日志直接传送到你的 Elasticsearch 索引。

随之而来的自然问题是:为什么要使用 Logstash 呢?

主要有两个原因:
  • 日志聚合。如果你有多个节点,并且有许多应用程序实例在生成日志,则需要一个集中的日志记录目标来进行日志管理。日志聚合背后的基本动机是, 你希望将日志放在一个地方以进行更好的处理。你还想控制与 Elasticsearch 的索引连接的数量。如果连接过多,你的 Elasticsearch 集群可能会遇到超时,高队列数量和不良响应能力,所有这些都会对性能产生不利影响。为避免这种情况,你可以使用 Logstash 汇总 Beats 收集的日志,并使用有效的 Logstash 工作线程创建有效的日志队列和批处理,这可以大大减少索引操作的次数,从而减少 Elasticsearch 的负担。
  • Logstash 非常适合日志过滤和日志增强。日志过滤在生产环境中非常有用,在生产环境中,你希望排除某些日志数据以节省存储空间并使分析更加集中。另外,许多日志数据都以难以处理的非结构化纯文本格式提供。要准备此原始数据以在 Elasticsearch 中进行分析和聚合,你需要将日志消息转换为结构化的数据对象,并使用人类可读的字段来映射到特定类型,例如字符串,日期,整数等。转换日志数据后,你可以应用各种指标和汇总以在 Kibana 中产生有价值的可视化效果,或者通过你的大数据分析工具或 ML 算法发现数据模式。

在 Logstash 中使用 Beats 组件非常简单:

input {
     beats {
     port => 5044
  }
}
 
output {
    stdout {
    codec => rubydebug
  }
}

然后在 Beats 中配置 Logstash 的地址即可,如:localhost:5044。

3.2、Exec 及 File Input Plugins

 Exec 插件使你可以定期在系统中运行 bash 命令,并将其输出发送到 Logstash。 此功能对于监视系统状态并在 Kibana 中可视化它可能很有用。如:

input {
  exec {
    interval => 10
    command => "top -n 1 -b|head -5"
  }
}
 
output {
  stdout {
    codec => rubydebug
  }
}

该配置每隔 10 秒运行 top 命令并把结果输出到 Logstash 的控制台上。

File input plugin 允许通过类似于 Unix 系统上的 tail -0F 命令的方式尾随事件来流式处理文件中的事件。 本质上,此插件用作文件监视程序,将文件末尾的新行视为新事件。 此功能使该插件可用于在添加新行时跟踪更改的日志文件。 另外一个好处是,该插件会存储它跟踪的每个文件的位置,这样就可以在停止和重新启动 Logstash 时从中断处上次的位置开始处理文件。

input {
  file {
    path => ["/home/hadoop/app/nginx-1.8.0/logs/access.log"]
    #type => "system"
    start_position => "beginning"
  }
}

output {
    stdout {
    codec => rubydebug
  }
}

该配置监控 Nginx 的访问日志并把日志内容输出到 Logstash 的控制台上。

3.3、Tracking Network Events, Chat, and Email Servers

Logstash 为各种网络,进程间通信(IPC),聊天和电子邮件协议生成的事件和日志提供了出色的支持;Logstash 支持 UDP,Unix 域套接字,Websocket,HTTP 等。

3.3.1、UDP Plugin

该插件允许通过 UDP 网络读取消息。 插件唯一需要的配置字段是 port,它指定 Logstash 侦听的 UDP 端口。

input {
  udp {
    port => 25000
    workers => 4
    codec => json
  }
}
 
output {
  stdout { 
    codec => rubydebug 
  }
}

你可以选择使用 JSON 编解码器将 UDP 消息转换为 JSON 对象,还可以使用 queue_size 参数控制消息队列的大小,并使用 worker 参数指定用于处理 UDP 数据包的工作线程数。

另起一个终端,运行如下命令进行测试:

nc -u 127.0.0.1 25000

3.3.2、Unix Domain Sockets

UNIX 套接字是一种进程间通信(IPC)机制,它允许在同一计算机上运行的进程之间进行双向数据交换。 你可以使用此插件捕获应用程序发出的 Unix 域套接字事件(消息)。 与文件输入插件类似,每个事件等于套接字发出的一行文本。 该插件支持两种模式:服务器和客户端。 在服务器模式下,它将监听客户端连接,在客户端模式下,观察客户端何时连接到服务器。

input {
  unix {
    mode => "server"
    path =&g
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇day03-2-拓展 下一篇Java实现7种常见密码算法

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目