前往小程序,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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
HTTP状态码大全
HTTP状态码,即HTTP协议状态码,是我们访问网站时会遇到的,服务器端返回的Http响应码,不同的数字分别代表着不同的响应状态。我们在做SEO或做网页开发过程中需要了解5类比较重要的HTTP状态码,可以根据请求响应代码检查服务器及程序是否正常,判断网页处于什么工作状态。我们就需要了解不同的状态码分别是什么含义。
摘繁华
2022/09/16
2.5K0
HTTP1.1协议状态码
此类状态码仅由 状态行 和可选响应头组成的临时响应, 并以空行终止。此类状态码没有必需的标题。由于HTTP / 1.0没有定义任何1xx状态代码,因此服务器必须禁止向HTTP / 1.0客户端发送1xx响应。
星尘的一个朋友
2020/11/25
2.7K0
HTTP状态码列表
1xx消息——请求已被服务器接收,继续处理 2xx成功——请求已成功被服务器接收、理解、并接受 3xx重定向——需要后续操作才能完成这一请求 4xx请求错误——请求含有词法错误或者无法被执行 5xx服务器错误——服务器在处理某个正确请求时发生错误 100199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程。 200299:表示成功接收请求并已完成整个处理过程。常用200 300399:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、常用302(意味着你请求我,我让你去找别人),307和304(我不给你这个资源,自己拿缓存) 400499:客户端的请求有错误,常用404(意味着你请求的资源在web服务器中没有)403(服务器拒绝访问,权限不够) 500~599:服务器端出现错误,常用500
Li_XiaoJin
2022/06/10
8450
看“猫”片, 学HTTP状态码
我们用浏览器访问网页时,浏览器会向网页所在服务器发出请求。服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
zhaoolee
2019/02/26
2.2K0
⚡3分钟⚡熟悉面试常问状态码,面试官都听呆了
· 100 - Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新) · 101 - Switching Protocols 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)
江一铭
2022/06/16
1.9K0
⚡3分钟⚡熟悉面试常问状态码,面试官都听呆了
HTTP状态码有哪些?「前端每日一题v22.11.9」
HTTP状态码表示超文本传输协议响应状态的3位数字代码。三位数字的第一个数字表示五种状态之一
FE情报局
2022/12/05
5510
HTTP状态码有哪些?「前端每日一题v22.11.9」
HTTP状态码及其含义
        开发Web项目的时候,因为环境搭建和配置的原因,经常会出现部署失败的情况;搭建这个博客的时候,也因为php-admin缺少某些库的原因,导致出现502的稀有的http状态。平时不是很留意这些状态码信息,也不是很了解出现这种状态的内在原因,每次出现都要查找。为了详细梳理和备忘,整理一份http状态码及其含义的解析。
王金龙
2018/09/05
1.8K0
HTTP状态码合集
请求的初始部分已收到,但尚未被服务器拒绝。在请求已完全收到并执行后,服务器打算发送最终响应。
BinGo_Blog
2022/11/01
1.3K0
HTTP响应状态码含义
1xx:信息 100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。
团团生活志
2022/08/16
1.3K0
C# HTTP系列5 HttpWebResponse.StatusCode属性
HttpWebResponse.StatusCode 属性获取响应的状态。对应 HttpStatusCode 枚举值之一。
张传宁IT讲堂
2019/09/17
2.3K0
聊一聊HTTP协议常见的状态码及含义
在测试的过程中会遇到多种协议,比如ARP地址解析协议,FTP文件传输协议,HTTP超文本传输协议,IP互联网协议,SMTP简单邮件传输协议,TCP传输控制协议,UDP用户数据报协议等等,今天聊一聊HTTP协议常见的状态码及含义。 1xx、2xx、3xx、4xx、5xx。每个类别下的具体状态码需要详细说明。比如1xx是信息性状态码,像100 Continue和101 Switching Protocols。2xx是成功,比如200 OK,201 Created,204 No Content。3xx是重定向,包括301、302、304等。4xx是客户端错误,比如404 Not Found,403 Forbidden。5xx是服务器错误,如500 Internal Server Error。
漫谈测试
2025/03/22
1500
聊一聊HTTP协议常见的状态码及含义
Ajax Status请求状态
  这篇文章主要介绍了各类Http请求状态(status)及其含义。   需要的朋友可以过来参考下,希望对大家有所帮助。Web服务器响应浏览器或其他客户程序的请求时,其应答一般由以下几个部分组成:一个状态行,几个应答头,一个空行,内容文档。下面是一个最简单的应答 : 状态行包含HTTP版本、状态代码、与状态代码对应的简短说明信息。   在大多数情况下,除了Content-Type之外的所有应答头都是可选的。但Content-Type是必需的,它描述的是后面文档的MIME类型。虽然大多数应答都包含一个文档,但也有一些不包含,例如对HEAD请求的应答永远不会附带文档。有许多状态代码实际上用来标识一次失败的请求,这些应答也不包含文档(或只包含一个简短的错误信息说明)。 当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码。状态代码可以指明具体请求是否已成功,还可以揭示请求失败的确切原因。
Marco爱吃红烧肉
2021/07/23
1.9K0
网站状态码大全
404,503,301,网站状态码是最常见的,但是作为一个站长应该掌握更多网站状态码,以便应对网站出现的各种各样的错误,能更快修复错误。以下是杨小杰blog为大家整理的一些网站状态码。 100  Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新) 101  Switching Protocols 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新) 200  OK 一切正常,对GET和POST请求的应答文档跟在后面。
Youngxj
2018/06/07
1.5K0
RFC2616-HTTP1.1-Status Code(状态码规定部分—译文)
part of Hypertext Transfer Protocol -- HTTP/1.1
zaking
2018/08/13
9960
SIP协议学习笔记
友情提示:初次接触SIP(Session Initiation Protocol)协议的同学,强烈建议先将文末参考文章中的链接,先看至少二遍!
菩提树下的杨过
2020/12/07
2.3K0
SIP协议学习笔记
HTTP状态码大全
写在前面 我们在开发Web服务的时候,经常会遇到404,500等错误。对于初学者来说遇到错误,不知如何下手,今天我们来看看每个状态都表示什么意思? HTTP状态码(HTTP Status Code)是
互扯程序
2018/03/26
1.5K0
HTTP状态码大全
状态码在后端开发中常常遇到的场景
场景:在服务器还在处理请求时,客户端已经关闭了连接。 Nginx:当Nginx作为Web服务器正在处理请求,但客户端在响应发送前断开了连接,Nginx可能会记录499状态码。这种情况可能由网络问题、客户端程序错误或客户端机器故障引起。
GeekLiHua
2025/01/21
1330
喵星人教你 HTTP 状态码
HTTP 状态码(英语:HTTP Status Code)是用以表示 HTTP 响应状态的 3 位数字代码。比如:
HelloGitHub
2021/05/14
6900
http状态码
chimchim
2023/10/17
2690
关于常见状态码,你了解多少?
大家好,我是坚果,今天在逛github的时候发现一个文档HTTP 接口设计指北,顺便了解了一下,觉得不错,就把关于状态码的知识整理了一下。
徐建国
2022/03/30
8900
相关推荐
HTTP状态码大全
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验