当前位置: 首页 > article >正文

大数据-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 支持对处理失败的数据进行重试和错误处理,确保数据不丢失,并提供可靠的传输保障。

官方网站

https://www.elastic.co/logstash

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

项目下载

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

https://www.elastic.co/downloads/past-releases#logstash

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

https://www.elastic.co/downloads/past-releases/logstash-7-3-0

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

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.3.0.tar.gz

对应的截图如下图所示:
在这里插入图片描述

解压配置

cd /opt/software
mv logstash-7.3.0 ../servers/
cd /opt/servers/logstash-7.3.0/

对应的截图如下所示:
在这里插入图片描述

Input插件

stdin与stdout

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

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 会漏掉你的数据。

cd /opt/servers/logstash-7.3.0/config
vim monitor_file.conf

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

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

写入的内容如下图所示:
在这里插入图片描述
补充一下:start_positon => beginning 或者是 end

检查配置

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

cd /opt/servers/logstash-7.3.0
bin/logstash -f /opt/servers/logstash-7.3.0/config/monitor_file.conf -t

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

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”,说明我们的配置文件是正确的。

启动服务

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秒。

http://www.kler.cn/news/362787.html

相关文章:

  • 如何利用ChatGPT提升SEO内容排名
  • visual studio设置修改文件字符集方法
  • tracert和ping的区别
  • ecmp观察
  • Java安全编程:公钥加密和私钥签名的实践指南
  • 数据结构——广义表
  • RabbitMQ与Kafka的使用场景差异
  • Sparksql 动态shuffle partition
  • 写了一个SpringBoot的后端管理系统(仅后端)pine-manage-system
  • 【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (四):状态码的使用
  • 软件测试与软件缺陷的基础知识
  • Triton语言:机器学习领域的新星,能否挑战CUDA的霸主地位? ​​​​​​​
  • Zookeeper面试整理-分布式系统知识
  • Oracle OCP认证考试考点详解082系列01
  • perl统一修改文件前缀并排序
  • Embedding实现GPT回答和知识库内容相关的内容
  • LabVIEW继电器视觉检测系统
  • CSS3文本阴影、文本换行、文本溢出、文本修饰、文本描边的使用
  • 项目打包不同环境
  • 【D3.js in Action 3 精译_036】4.1 DIY 实战:在 Observable 平台实现 D3折线图坐标轴的绘制
  • AudioSegment 提高音频音量 - python 实现
  • 消息队列(仿RabbitMQ)—— 生产消费模型
  • 钉钉消息推送工具类
  • 使用皮尔逊相关系数矩阵进行特征筛选
  • Windows系统启动MongoDB报错无法连接服务器
  • 码支付源码2024又一款全新码支付源码