大数据-185 Elasticsearch - ELK 家族 Logstash 安装配置 Input 插件-stdin &stdout

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(已更完)
  • Elasticsearch(正在更新...)

章节内容

上节我们完成了如下的内容:

  • Elasticsearch DocValues 机制原理
  • Elasticsearch DocValues 压缩与禁用

简要介绍

Logstash 是一个开源的服务器端数据处理管道工具,主要用于实时收集、过滤、转换和输出数据。它可以从多种数据源(如日志文件、数据库、消息队列等)中收集数据,并经过自定义的过滤处理后,输出到目标系统(如 Elasticsearch、数据库或文件等)。作为 Elastic Stack(也称为 ELK Stack)的一部分,Logstash 通常与 Elasticsearch 和 Kibana 配合使用,用于实时日志处理、分析和可视化。

Logstash 的架构

Logstash 由三大核心组件组成:

  • 输入(Inputs): 输入插件用于收集数据,它能够从各种不同的数据源获取信息。支持的数据源包括日志文件、数据库、Kafka、HTTP API、消息队列(如 RabbitMQ)、系统标准输入等。

  • 过滤(Filters): 过滤器是数据处理和转换的关键部分。Logstash 使用过滤插件对输入的数据进行过滤和修改。常用的过滤插件有 grok、mutate、date、json、csv 等。你可以利用这些插件对数据进行解析、字段提取、格式化等处理。

  • 输出(Outputs): 输出插件将处理后的数据发送到指定的目标位置。常用的输出插件包括 Elasticsearch、文件系统、Kafka、数据库、标准输出等。

此外,Logstash 还支持编码器(Encoders)和解码器(Decoders),用于将数据编码或解码成特定格式,例如 JSON、XML、CSV 等。

Logstash 的工作流程

Logstash 的工作流程如下:

  • 数据输入(Input): Logstash 从数据源中收集原始数据,如应用程序日志、系统日志或网络流量日志等。
  • 数据过滤(Filter): 收集到的数据通过配置的过滤器进行处理。这一步可以解析日志、过滤无用数据、格式化字段、添加或删除字段、进-行数据聚合等操作。
  • 数据输出(Output): 最终经过处理的数据被输出到一个或多个目标系统,如 Elasticsearch 用于存储和搜索,或者输出到文件用于归档。

Logstash 的功能特性

  • 多种输入插件支持: Logstash 支持多种输入源,几乎可以从任何类型的系统或文件中收集数据。这些输入源可以是本地的日志文件、数据库、HTTP、TCP、UDP 连接等。
  • 强大的数据处理能力: Logstash 提供了丰富的过滤插件,可以对数据进行复杂的操作。通过 grok 插件,用户可以解析复杂的日志格式,提取关键信息。Logstash 还支持条件语句,可以根据条件对不同的数据进行不同的处理。
  • 灵活的输出机制: Logstash 支持多种输出方式,可以将数据发送到多个目标系统。常见的输出包括 Elasticsearch、文件系统、标准输出、Kafka 等。
  • 扩展性: Logstash 通过插件架构设计,用户可以根据需要开发和使用自定义插件,从而满足各种特殊需求。
  • 实时性: Logstash 可以实时处理大量数据,适合于实时日志分析、事件响应、监控告警等场景。
  • 错误处理和重试机制: Logstash 支持对处理失败的数据进行重试和错误处理,确保数据不丢失,并提供可靠的传输保障。

官方网站

shell 复制代码
https://www.elastic.co/logstash

对应的页面截图如下:

Logstash就是一个具备实时数据传输能力的管道,负责将数据信息从管道的输入传出到管道的输出端,与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。是一个 input | filter | output 的数据流。

项目下载

下载指定版本的Logstash,我这里适配着ES的版本,7.3版本:

shell 复制代码
https://www.elastic.co/downloads/past-releases#logstash

这里放一个直达链接,7.3 版本的:

shell 复制代码
https://www.elastic.co/downloads/past-releases/logstash-7-3-0

我这里直接下载到服务器上 h121.wzk.icu 节点。

shell 复制代码
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.3.0.tar.gz

对应的截图如下图所示:

解压配置

shell 复制代码
cd /opt/software
mv logstash-7.3.0 ../servers/
cd /opt/servers/logstash-7.3.0/

对应的截图如下所示:

Input插件

stdin与stdout

标准输入和标准输出,实现我们的数据从控制台输入,从控制台输出。

shell 复制代码
cd /opt/servers/logstash-7.3.0/
bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
{
  "@version" => "1",
  "host" => "h121.wzk.icu",
  "@timestamp" => 2024-08-16T08:33:13.126Z,
  "message" => "hello"
}

运行之后,可以看到控制台对应的输出为如下的内容:

监控日志文件变化

修改配置

Logstash 使用一个名叫 FileWatch 的 Ruby Gem 库来监听文件变化,这个库支持glob展开路径,而且会记录一个叫 .sincedb 的数据库文件来跟踪被监听的日志文件的当前读取位置。所以,不要担心 Logstash 会漏掉你的数据。

shell 复制代码
cd /opt/servers/logstash-7.3.0/config
vim monitor_file.conf

向其中写入对应的内容,并退出保存:

shell 复制代码
input{
  file{
    path => "/opt/servers/es/logs/wzkicu-es.log"
    type => "log"
    start_position => "beginning"
  }
}
output{
  stdout{
    codec=>rubydebug
  }
}

写入的内容如下图所示:

补充一下:start_positon => beginning 或者是 end

检查配置

通过下面的指令进行检查:

shell 复制代码
cd /opt/servers/logstash-7.3.0
bin/logstash -f /opt/servers/logstash-7.3.0/config/monitor_file.conf -t

如果成功会出现如下的内容:

shell 复制代码
root@h121:/opt/servers/logstash-7.3.0# bin/logstash -f /opt/servers/logstash-7.3.0/config/monitor_file.conf -t
Thread.exclusive is deprecated, use Thread::Mutex
Sending Logstash logs to /opt/servers/logstash-7.3.0/logs which is now configured via log4j2.properties
[2024-08-16T10:54:39,712][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2024-08-16T10:54:40,796][INFO ][org.reflections.Reflections] Reflections took 43 ms to scan 1 urls, producing 19 keys and 39 values 
Configuration OK
[2024-08-16T10:54:41,914][INFO ][logstash.runner          ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
root@h121:/opt/servers/logstash-7.3.0# 

对应的截图如下图所示:

可以看到:"Configuration OK",说明我们的配置文件是正确的。

启动服务

shell 复制代码
cd /opt/servers/logstash-7.3.0
bin/logstash -f /opt/servers/logstash-7.3.0/config/monitor_file.conf

启动结果如下图所示:

发送数据

我们监听到是ES的日志,只要你进行一些操作,就会看到日志被解析了:

其他参数

  • Path => 表示监控的文件路径Type=>给类型打标记,用来区分不同的文件类型。
  • Start_position=>从哪里开始记录文件,默认是从结尾开始标记,要是你从头导入一个文件就改成 beginning
  • discover_interval=>多久去监听path下是否有文件,默认是15s exclude =>排除什么
  • close_older=>一个已经监听中的文件,如果超过这个值的事件内没有更新内容,就关闭监听它的文件句柄。默认是3600秒,即1个小时。
  • sincedb=>path监控库存放位置(默认的读取文件信息记录在哪个文件中),默认在:/data/plugins/inputs/file。
  • sincedb_write_interval=>Logstash每隔多久写一次sincedb文件,默认是15秒
  • start_interval=>Logstash每隔多久检查一次被监听文件状态(是否有更新),默认是1秒。
相关推荐
Yaml444 分钟前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~1 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616881 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
aloha_7891 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
记录成长java2 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
睡觉谁叫~~~2 小时前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust
程序媛小果2 小时前
基于java+SpringBoot+Vue的旅游管理系统设计与实现
java·vue.js·spring boot
小屁孩大帅-杨一凡3 小时前
java后端请求想接收多个对象入参的数据
java·开发语言
java1234_小锋3 小时前
使用 RabbitMQ 有什么好处?
java·开发语言
TangKenny3 小时前
计算网络信号
java·算法·华为