Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【全文检索_11】Logstash 基本使用

【全文检索_11】Logstash 基本使用

作者头像
Demo_Null
发布于 2021-03-02 07:33:05
发布于 2021-03-02 07:33:05
78800
代码可运行
举报
文章被收录于专栏:Java 学习Java 学习
运行总次数:0
代码可运行

1.1 基本介绍

1.1.1 工作原理

  Logstash 是由 JRuby 编写的,使用基于消息的简单架构,在 JVM 上运行(本篇博客主要介绍 Logstash 基本使用,介绍请见 ☞【全文检索_09】Logstash 基本介绍)。Logstash 的事件处理流水线有三个主要角色完成:inputs → filters → outputs。必须定义这些过程的配置才能使用 Logstash,尽管不是每一个都必须的。在过滤器的部分,它可以对数据源的数据进行分析,丰富,处理等等,但是我们可以不使用过滤器。在输出的部分,我们可以有多于一个以上的输出。

1.1.2 各组件可用插件

1.1.3 启动参数

参数

说明

举例

-e

立即执行,使用命令行里的配置参数启动实例

./bin/logstash -e 'input { stdin {} } output { stdout {} }'

-f

指启动实例的配置文件

./bin/logstash -f first-pipeline.conf

-t

测试配置文件的正确性

./bin/logstash -f first-pipeline.conf -t

-l

Logstash 内部日志输出目录

./bin/logstash -f first-pipeline.conf -l logs/test.log

-w

指定 filer 线程数量,默认线程数是 5

./bin/logstash -f first-pipeline.conf -w 10

1.2 inputs

1.2.1 File 监听插件

☞ 概述

  文件监听插件主要用来抓取文件的变化信息,将变化信息封装成 event 进程处理或者传递。这里介绍几个 File 插件的参数以及简单示例,详细内容见

☞ 官方文档

☞ 常用参数

参数

类型

默认值

说明

path

Array

匹配监听文件【必设项】

exclude

Array

排除项,排除匹配某个文件

close_older

Number

1 hour

设置文件多久秒内没有更新就关掉对文件的监听

delimiter

String

\n

文件内容的行分隔符

start_position

beginning / end

end

选择 Logstash 最初开始读取文件的位置,默认从结尾开始

除上述特有参数以外,还有诸多类似于下表的公共参数,所有插件中均可使用公共参数。详见 ☞ 官方文档

参数

类型

默认值

说明

add_field

Hash

{}

添加自定义字段

codec

Codec

plain

输入输出时对数据编解码

enable_metric

Boolean

true

为此插件实例禁用或启用度量标准日志记录

id

String

添加唯一 id

tags

Array

添加标签

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
input
  file {
    path => ["/var/log/*.log", "/var/log/message"]
    start_position => "beginning"
  }
}

1.2.2 Beats 监听插件

☞ 概述

  Beats插件用于建立监听服务,该输入插件使 Logstash 接收 Filebeat 或者其他 beat 发送的事件。这里介绍几个 Beats 插件的参数以及简单示例,详细内容见

☞ 官方文档

☞ 常用参数

参数

类型

默认值

说明

host

String

0.0.0.0

监听的 IP 地址

port

Number

监听的端口【必设项】

ssl

Boolean

false

是否启用 ssl

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
input {
  beats {
    port => 5044
  }
}

1.2.3 TCP 监听插件

☞ 概述

  TCP 插件通过 TCP Socket 读取事件,像标准输入和文件输入一样,每个事件都假定为一行文本。根据模式,可以接受来自 Client 的连接,也可以连接到 Server。这里介绍几个 TCP 插件的参数以及简单示例,详细内容见

☞ 官方文档

☞ 常用参数

参数

类型

默认值

说明

host

String

0.0.0.0

监听的 IP 地址

port

Number

监听的端口【必设项】

mode

String

server

若是 server 则监听 client 连接;若是 client 则连接 server

proxy_protocol

Boolean

false

是否启用代理协议,支持 V1

ssl_enable

Boolean

false

是否启用 ssl

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
input {
  tcp {
    port => 12345
    codec => json
  }
}

1.2.4 Redis 监听插件

☞ 概述

  Redis 插件将从 Redis 实例读取事件;Redis v1.3.1+ 支持 Logstash 使用的 list 命令,而Redis v1.3.8+ 支持 Logstash 使用的 channel 命令。虽然可以使这些低版本 Redis 正常工作,但在较新的稳定版本中将获得最佳性能和稳定性。建议使用 2.6.0+ 版本。 详见 ☞ 官方文档

☞ 常用参数

参数

类型

默认值

说明

host

String

127.0.0.1

监听的 IP 地址

port

Number

6379

监听的端口

data_type

String

Redis 工作方式,有三种参数:list/channel/pattern_channel

db

Number

0

Redis 数据库号

key

String

监听的健【必设项】

password

String

登录密码

ssl

Boolean

false

是否启用 ssl

timeout

Number

5

超时时间,单位为秒

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
input {
	redis {
		data_type => "list"
		key => "logstash-test-list"
		host => "127.0.0.1"
		port => 6379
	}
}

1.2.5 Syslog 监听插件

☞ 概述

  Syslog 插件将 syslog 消息作为事件通过网络读取。当然,syslog 是一个非常混乱的名词。默认情况下,此输入仅支持 RFC3164 syslog,如果提供了功能性的 grok_pattern,则可以读取和解析一些非标准的 syslog 格式。详见 ☞ 官方文档

☞ 常用参数

参数

类型

默认值

说明

host

String

0.0.0.0

监听的 IP 地址

port

Number

514

监听的端口

proxy_protocol

Boolean

false

是否启用代理协议,支持 V1

grok_pattern

String

<%{POSINT:priority}>%{SYSLOGLINE}

默认值应读取并正确解析与 RFC3164 完全兼容的 syslog行。覆盖此值,以使用有效的 grok_pattern 解析非标准行。

syslog_field

String

message

编解码器在解析其余数据之前先处理数据。

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
input {
  syslog {
    port => 12345
    codec => cef
    syslog_field => "syslog"
    grok_pattern => "<%{POSINT:priority}>%{SYSLOGTIMESTAMP:timestamp} CUSTOM GROK HERE"
  }
}

1.3 outputs

1.3.1 ElasticSearch 输出插件

☞ 概述

  如果打算使用 Kibana Web 界面来分析 Logstash 转换的数据,请使用 Elasticsearch 输出插件将数据导入 Elasticsearch。此输出仅说明 HTTP 协议,因为它是与 Elasticsearch 进行交互的首选协议。在以前的版本中,可以 transport 协议与 Elasticsearch 通信,该协议现在保留用于节点之间的内部集群通信。 Elasticsearch V7.0.0 中已弃用使用传输协议与集群进行通信,而在 V8.0.0中已将其删除。详见 ☞ 官方文档

☞ 常用参数

参数

类型

默认值

说明

hosts

URI

//127.0.0.1

Elasticsearch 服务地址,配置多个开启负载均衡

index

String

logstash-%{+yyyy.MM.dd}

存入 Elasticsearch 索引

ilm_enabled

true/false/auto

auto

是否启用 ILM 功能

user

String

登录用户

password

String

登录密码

proxy

URI

转发 HTTP 代理

template

Path

设置模板路径,不设则使用默认模板

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "filebeat-%{type}-%{+yyyy.MM.dd}"
        template_overwrite => true
    }
}

1.3.2 Redis 输出插件

☞ 概述

  用于将事件写入 Redis 中进行缓存,通常情况下 Logstash 的 Filter 处理比较吃系统资源,复杂的 Filter 处理会非常耗时,如果事件产生速度比较快,可以使用 Redis 作为 buffer 使用。详见 ☞ 官方文档

☞ 常用参数

参数

类型

默认值

说明

host

String

127.0.0.1

监听的 IP 地址

port

Number

6379

监听的端口

data_type

list/channel

Redis 工作方式

db

Number

0

Redis 数据库号

key

String

key 名

password

String

登录密码

timeout

Number

5

超时时间,单位为秒

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
output {
    redis {
        host => "127.0.0.1"
        port => 6379
        data_type => "list"
        key => "logstash-list"
    }
}

1.3.3 File 输出插件

☞ 概述

  File 插件将事件写入磁盘上的文件,默认情况下,以 json 格式每行写入一个事件。可以使用行编解码器自定义行格式。详见 ☞ 官方文档

☞ 常用参数

参数

类型

默认值

说明

path

String

要写入文件的路径【必设项】

gzip

Boolean

false

在写入磁盘之前,先对输出流进行 gzip 处理。

write_behavior

String

append

append: 追加写;overwrite: 覆盖写

flush_interval

Number

2

日志文件刷新间隔,单位为秒

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
output {
    file {
        path => "./test-%{+YYYY-MM-dd}.txt"
    }
}

1.4 filters

1.4.1 grok 正则捕获

☞ 概述

  Grok 是将非结构化日志数据解析为结构化和可查询内容的好方法。该工具非常适合 syslog 日志, apache 和其他 Web 服务器日志,mysql 日志,以及通常用于人类而非计算机使用的任何日志格式。详见 官网文档

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
filter {
 grok {
    match => {
      "message" => "Duration: %{NUMBER:duration}"
    }
  }
}

1.4.2 date 时间处理插件

☞ 概述

  date 时间处理插件用于解析字段中的日期,然后使用该日期或时间戳作为事件的 logstash 时间戳。详见 官网文档

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
filter {
      date {
        match => [ "logdate", "MMM dd yyyy HH:mm:ss" ]
      }
    }

1.4.3 mutate 数据修改插件

☞ 概述

  mutate 数据修改插件提供了丰富的基础类型数据处理能力。可对字段执行常规变异,即重命名,删除,替换和修改事件中的字段。详见 官网文档

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
filter {
    mutate {
        split => ["hostname", "."]
        add_field => { "shortHostname" => "%{hostname[0]}" }
    }

    mutate {
        rename => ["shortHostname", "hostname" ]
    }
}

1.4.4 JSON 格式解码插件

☞ 概述

  这是一个 JSON 解析过滤器。它采用一个包含 JSON 的现有字段,并将其扩展为 Logstash 事件内的实际数据结构。默认情况下,它将解析的 JSON 放在 Logstash 事件的根中,但是可以使用目标配置将此过滤器配置为将 JSON 放入任何任意事件字段中。详见 官网文档

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
filter {
  json {
    source => "message"
    target => "doc"
  }
}

1.5 codecs

1.5.1 plain 插件

☞ 概述

  plain 插件用于纯文本,事件之间没有定界。这主要用于已在其传输协议中定义了帧的输入​​和输出。详见 官网文档

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
output {
  # 输出到控制台
  stdout { 
    codec => plain
  }
}

1.5.2 rubydebug 插件

☞ 概述

  rubydebug 编解码器将使用 Ruby Amazing Print 库输出 Logstash 事件数据。详见 官网文档

☞ 示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
output {
  # 输出到控制台
  stdout { 
    codec => rubydebug 
  }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ELK学习笔记之Logstash详解
官方介绍:Logstash is an open source data collection engine with real-time pipelining capabilities。简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。
Jetpropelledsnake21
2018/12/05
5.6K0
ELK学习笔记之Logstash详解
Elastic Stack日志收集系统笔记 (logstash部分)
Logstash管道有两个必需的元素,input和output,以及一个可选的元素filter。输入插件使用来自源的数据,过滤器插件在您指定时修改数据,输出插件将数据写入目标。
没有故事的陈师傅
2019/07/27
3.3K0
【全文检索_09】Logstash 基本介绍
  ELK 是 Logstash(收集)、Elasticsearch(存储 + 搜索)、Kibana(展示),这三者的简称,以前称为 ELK Stack,现在称为 Elastic Stack,后来还加入了 Beats 来优化 Logstash。我们之前介绍了 Elasticsearch 和 Kibana 的简单使用,现在重点介绍一下 Logstash。   Logstash 是一个开源数据收集引擎,具有实时管道功能。Logstash 可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。Logstash 使用 JRuby 开发,Ruby 语法兼容良好,非常简洁强大,经常与 ElasticSearch,Kibana 配置,组成著名的 ELK 技术栈,非常适合用来做日志数据的分析。当然 Logstash 也可以单独出现,作为日志收集软件,可以收集日志到多种存储系统或临时中转系统,如 MySQL,redis,kakfa,HDFS, lucene,solr 等,并不一定是 ElasticSearch。
Demo_Null
2021/03/02
6940
【全文检索_09】Logstash 基本介绍
Elasticsearch系列组件:Logstash强大的日志管理和数据分析工具
Logstash 是一个开源的数据收集引擎,它具有实时管道功能,可以用来统一处理来自不同源的数据,并将其发送到你选择的目标。Logstash 支持多种类型的输入数据,包括日志文件、系统消息队列、数据库等,可以对数据进行各种转换和处理,然后将数据发送到各种目标,如 Elasticsearch、Kafka、邮件通知等。
栗筝i
2023/10/23
3.2K0
Elasticsearch系列组件:Logstash强大的日志管理和数据分析工具
LogStash的安装部署与应用
1、Logstash是一个接收,处理,转发日志的工具; 2、Logstash支持网络日志、系统日志、应用日志、apache日志等等,总之可以处理所有日志类型; 3、典型应用场景ELK:logstash负责采集、解析日志,elasticsearch负责数据存储,kibana负责前端报表展示。
趣学程序-shaofeer
2019/09/19
2.8K0
LogStash的安装部署与应用
logstash的各个场景应用(配置文件均已实践过)
1) datasource->logstash->elasticsearch->kibana
Jetpropelledsnake21
2019/05/19
3.8K0
一文快速上手Logstash
Elasticsearch是当前主流的分布式大数据存储和搜索引擎,可以为用户提供强大的全文本检索能力,广泛应用于日志检索,全站搜索等领域。Logstash作为Elasicsearch常用的实时数据采集引擎,可以采集来自不同数据源的数据,并对数据进行处理后输出到多种输出源,是Elastic Stack 的重要组成部分。本文从Logstash的工作原理,使用示例,部署方式及性能调优等方面入手,为大家提供一个快速入门Logstash的方式。文章最后也给出了一些深入了解Logstash的的链接,以方便大家根据需要详细了解。
michelmu
2018/10/10
51.8K13
一文快速上手Logstash
ELK学习笔记之Logstash和Filebeat解析对java异常堆栈下多行日志配置支持
logstash官方最新文档。 假设有几十台服务器,每台服务器要监控系统日志syslog、tomcat日志、nginx日志、mysql日志等等,监控OOM、内存低下进程被kill、nginx错误、mysql异常等等,可想而知,这是多么的耗时耗力。 logstash采用的是插件化体系架构,几乎所有具体功能的实现都是采用插件,已安装的插件列表可以通过bin/logstash-plugin list --verbose列出。或者访问https://www.elastic.co/guide/en/logstash/current/input-plugins.html、https://www.elastic.co/guide/en/logstash/current/output-plugins.html。
Jetpropelledsnake21
2018/12/05
3.6K0
《Learning ELK Stack》3 使用Logstash采集、解析和转换数据
3 使用Logstash采集、解析和转换数据 理解Logstash如何采集、解析并将各种格式和类型的数据转换成通用格式,然后被用来为不同的应用构建多样的分析系统 ---- 配置Logstash 输入插
yeedomliu
2020/07/02
1.7K0
logstash 配置
https://github.com/chudaozhe/efk/tree/master/logstash
崔哥
2022/05/25
5320
分布式日志收集之Logstash 笔记(一)
(一)logstash是什么? logstash是一种分布式日志收集框架,开发语言是JRuby,当然是为了与Java平台对接,不过与Ruby语法兼容良好,非常简洁强大,经常与ElasticSearch,Kibana配置,组成著名的ELK技术栈,非常适合用来做日志数据的分析。 当然它可以单独出现,作为日志收集软件,你可以收集日志到多种存储系统或临时中转系统,如MySQL,redis,kakfa,HDFS, lucene,solr等并不一定是ElasticSearch。 官网下载地址:https:
我是攻城师
2018/05/14
1.7K0
Logstash:处理多个 input
这里的 input 可以支持多个 input,同时多个 worker 可以处理 filter 及 output:
腾讯云大数据
2020/07/31
2.8K0
Logstash:处理多个 input
数据管道 Logstash 入门
•监听某个目录下的日志文件,读取文件内容,处理数据,写入 influxdb 。•从 kafka 中消费消息,处理数据,写入 elasticsearch 。
凌虚
2020/11/09
1.8K0
【全文检索_10】Filebeat 基本使用
  Filebeat 是 Beats 的一员,用于转发和集中日志数据的轻量级传送工具。当面对成百上千、甚至成千上万的服务器、虚拟机和容器生成的日志时,Filebeat 将为您提供一种轻量型方法,监视指定的日志文件或位置,收集日志事件,并将它们转发到 Elasticsearch、 Logstash 等。
Demo_Null
2021/03/02
1.7K0
【全文检索_10】Filebeat 基本使用
【ES私房菜】Logstash 安装部署及常用配置
该文章介绍了如何基于Logstash的配置文件,实现不同来源的日志的收集、处理和转发。主要包括了Kafka、Filebeat、Fluentd、Graylog、Elasticsearch、Kibana和Logstash等多个组件的配置和使用方法。同时,文章还提供了在CentOS系统上部署Logstash的步骤和示例配置文件。
张戈
2017/09/28
6.9K0
【ES私房菜】Logstash 安装部署及常用配置
Elastic 技术栈之 Logstash 基础
Elastic 技术栈之 Logstash 基础 本文是 Elastic 技术栈(ELK)的 Logstash 应用。 如果不了解 Elastic 的安装、配置、部署,可以参考:Elastic 技术栈之快速入门 简介 Logstash 可以传输和处理你的日志、事务或其他数据。 功能 Logstash 是 Elasticsearch 的最佳数据管道。 Logstash 是插件式管理模式,在输入、过滤、输出以及编码过程中都可以使用插件进行定制。Logstash 社区有超过 200 种可用插件。 工作原理
静默虚空
2018/03/16
2.5K0
Elastic 技术栈之 Logstash 基础
LogStash的配置详解
Logstash用{}来定义区域。区域内可以包括插件去预定义,可以在一个区域内定义多个插件。插件区域则可以定义键值对来设置。示例:
趣学程序-shaofeer
2023/09/09
1.6K0
logstash高速入口
Logstash是一个接收,处理,转发日志的工具。支持系统日志,webserver日志。错误日志。应用日志,总之包含全部能够抛出来的日志类型。
全栈程序员站长
2022/07/06
8130
logstash_output_kafka:Mysql同步Kafka深入详解
实际业务场景中,会遇到基础数据存在Mysql中,实时写入数据量比较大的情景。迁移至kafka是一种比较好的业务选型方案。
铭毅天下
2019/05/08
3K0
logstash_output_kafka:Mysql同步Kafka深入详解
WAF防火墙数据接入腾讯云ES最佳实践(上)
本文描述问题及解决方法适用于 腾讯云 Elasticsearch Service(ES)。
岳涛
2023/08/09
1.5K2
WAF防火墙数据接入腾讯云ES最佳实践(上)
相关推荐
ELK学习笔记之Logstash详解
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验