草庐IT

Logstash 入门实战(3)--input plugin 介绍

且行且码 2023-04-18 原文

本文主要概述 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 => "/var/logstash/ls"
    data_timeout => 2
  }
}
 
output {
  stdout { 
    codec => rubydebug 
  }
}

该配置使用服务器模式,并将其配置为侦听在 /var/logstash/ls 路径中生成的 Unix 域套接字事件。

3.3.3、Websocket Input Plugin

WebSocket 协议使 Web 客户端(例如,浏览器)和 Web 服务器之间的交互具有较低的开销,从而实现了实时数据传输并允许在保持连接打开的同时来回传递消息。 Websocket 插件允许从打开的 Websocket 连接读取事件。 唯一必需的参数是打开 Websocket 连接的 URL。

websocket Input plugin 默认的情况下没有安装的,可按照如下的方法进行安装:

bin/logstash-plugin install logstash-input-websocket

 插件当前支持的唯一模式是客户端模式,在该模式下,插件连接到 Websocket 服务器并从服务器接收 Websocket 消息。

input {
  websocket {
    mode => "client"
    url => "ws://127.0.0.1:8080/websocket"
    codec => "plain"
  }
}
 
output {
  stdout { 
    codec => rubydebug 
  }
}

3.3.4、HTTP Input Plugin

HTTP Input Plugin 将 HTTP Post 请求(带有由应用程序发送的正文)转换为插件指定的端点,Logstash 会将消息转换为事件。 应用程序可以将 JSON,纯文本或任何格式的数据传递到端点,并使用相应的编解码器来转换消息。通过利用 Logstash 中可用的庞大插件生态系统,你可以直接在应用程序中触发 Logstash 中的可操作事件,并将其发送到 Elasticsearch。 该插件支持 HTTP 基本身份验证标头和 SSL,可通过 https 安全地发送数据,并提供验证客户端证书的选项。

input {
  http {
    host => "0.0.0.0"
    port => 8088
  }
}
 
output {
  stdout { 
    codec => rubydebug 
  }
}

启动 Logstash 后,可以使用客户端工具(如 Postman) 调用 http://10.49.196.11:8088 服务,给 Logstash 发送数据。

3.3.5、HTTP Poller

HTTP Poller 插件是 Logstash 中另一个基于 HTTP 的输入插件,它允许调用 HTTP API,将响应消息转换为事件并将消息沿管道发送(例如,发送到 Elasticsearch)。

input {
  http_poller {
    urls => {
      test1 => {
        url => "http://localhost:8080/test"
        method => get
      }
    }
    request_timeout => 60
    # Supports "cron", "every", "at" and "in" schedules by rufus scheduler
    # schedule => { every => "10s"}
    schedule => { cron => "* * * * * UTC"}
    codec => "json"
    # A hash of request metadata info (timing, response headers, etc.) will be sent here
    metadata_target => "http_poller_metadata"
  }
}

output {
  stdout { 
    codec => rubydebug 
  }
}

该配置每隔一分钟调用 http://localhost:8080/test 接口,并把请求的元信息存储在 http_poller_metadata 子段中。

3.4、发布/订阅管道

 在物联网,微服务和实时应用程序时代,应用程序之间的数据流和实时消息传递非常流行。 Logstash 对各种消息代理和数据流平台都有很好的支持。

3.4.1、Apache Kafka Plugin

Logstash Kafka 插件可轻松与 Kafka Producer 和 Consumer API 集成。你可以使用默认偏移量管理策略指定多个要订阅的主题。该插件的一个强大功能是,你可以运行多个读取同一主题的 Logstash 实例,以便在多个物理机之间分配负载。要使用此功能,你需要指定一个 group_id,该组创建一个由多个处理器组成的单个逻辑订户。主题中的消息将分发到具有相同 group_id 的所有 Logstash 实例。

input {
   kafka {
     bootstrap_servers => "localhost:9092"
     topics => "test"
     group_id => "mygroup"
  }
}

output {
  stdout { 
    codec => rubydebug 
  }
}

3.4.2、RabbitMQ Plugin

该插件使用 March Hare 包与 RabbitMQ 进行通信;大多数配置选项直接映射到标准的 RabbitMQ and AMQP 概念。

input {
  rabbitmq {
    host => "localhost"
    port => 5672
    user => "admin"
    password => "admin"
    queue => "test"
    durable => true
    codec => "plain" 
  }
}

output {
  stdout { 
    codec => rubydebug 
  }
}

4、总结

Logstash 支持各种流行的日志和事件源。 特别是,你可以将输入插件用于许多主要的网络协议,消息代理,IRC 服务器,数据库 和 Web 应用程序。更重要的是,Logstash 可以通过网络接收 bash 命令,系统日志和其他系统信息,本地文件和文件,将它们转换为有价值的事件,并过滤和丰富日志,以供 ELK 堆栈中的后续分析或你喜欢的任何其他日志分析解决方案 。 所有这些功能使 Logstash 成为用于传输和规范化数据的 ELK 堆栈的强大组件。

本文中介绍的插件只是 Logstash 输入插件的很小的一部分,可查看 Logstash 官方文档 了解更多信息。

 

参考:https://blog.csdn.net/UbuntuTouch/article/details/104260743

有关Logstash 入门实战(3)--input plugin 介绍的更多相关文章

  1. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  2. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  3. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  4. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  5. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  6. ruby-on-rails - Logstash 可以在 Rails 上使用 Ruby 吗? - 2

    有没有人得到Logstash在Rails上使用ruby​​?我的客户告诉我将Logstash用于日志收集器等。我正在使用ruby​​onrails技术。大部分都快完成了。但要求是将日志记录到logstash中。请让我知道这可能吗? 最佳答案 我为此编写了一个gem-logstasher.它将Rails日志写入一个单独的文件,采用纯json格式,无需任何处理即可由logstash使用。查看我的blog有关如何设置Logstash和Kibana的完整说明 关于ruby-on-rails-Lo

  7. ruby - 将 Logstash 中的时间戳时区转换为输出索引名称 - 2

    在我的场景中,Logstash收到的系统日志行的“时间戳”是UTC,我们在Elasticsearch输出中使用事件“时间戳”:output{elasticsearch{embedded=>falsehost=>localhostport=>9200protocol=>httpcluster=>'elasticsearch'index=>"syslog-%{+YYYY.MM.dd}"}}我的问题是,在UTC午夜,Logstash在外时区(GMT-4=>America/Montreal)结束前将日志发送到不同的索引,并且索引在20小时(晚上8点)之后没有日志,因为“时间戳”是UTC。我们已

  8. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

  9. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  10. Simulink方法总结和避坑指南(一)——Simulink入门与基本调试方法 - 2

    文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景  最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。  在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记

随机推荐