Logstash学习总结

本文介绍了Logstash的安装过程,以及从命令行输入内容、指定格式输出、使用Elasticsearch存储日志、过滤器解析日志到ES、从文件读取日志等多个简单使用示例。Logstash作为ELK Stack的一部分,扮演数据搬运工的角色,通过输入插件、过滤器和输出插件实现数据收集、处理和存储。文章还简述了Logstash的架构、配置语法及插件配置,强调了其在日志管理中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 

背景

先介绍下ELK stack

Elasticsearch

Elasticsearch 是基于 JSON 的分布式搜索和分析引擎,专为实现水平扩展、高可用和管理便捷性而设计

Logstash

Logstash 是动态数据收集管道,拥有可扩展的插件生态系统,能够与 Elasticsearch 产生强大的协同作用。

Kibana

Kibana 能够以图表的形式呈现数据,并且具有可扩展的用户界面,供您全方位配置和管理 Elastic Stack

ELK典型使用场景

用Elasticsearch作为后台数据的存储,kibana用来前端的报表展示。Logstash在其过程中担任搬运工的角色

我们先把logstash安装然后简单用起来,然后详细解析logstash

安装

依赖:jdk7及以上版本

Logstash版本:2.3.4

步骤: 
1. 官网下载tar.gz包

链接地址:链接 
2. 扔到机器上解压

tar zxvf logstash-2.3.4.tar.gz

安装完成

简单使用示例

1.命令行输入内容然后让logstash输出内容

进到bin目录下运行:

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

logstach输出:

Settings: Default pipeline workers: 2
Pipeline main started

表示启动成功

在控制台输入123,然后logstash输出如下:

123
2017-11-02T02:42:50.836Z localhost.localdomain 123

解释:

每位系统管理员都肯定写过很多类似这样的命令:

cat randdata | awk '{print $2}' | sort | uniq -c | tee sortdata。

这个管道符 | 可以算是 Linux 世界最伟大的发明之一(另一个是“一切皆文件”)。 
Logstash 就像管道符一样!

你输入(就像命令行的 cat )数据,然后处理过滤(就像 awk 或者 uniq 之类)数据,最后输出(就像 tee )到其他地方。

当然实际上,Logstash 是用不同的线程来实现这些的

数据在线程之间以 事件 的形式流传。不要叫行,因为 logstash 可以处理多行事件。

Logstash 会给事件添加一些额外信息。最重要的就是 @timestamp,用来标记事件的发生时间。因为这个字段涉及到 Logstash 的内部流转,所以必须是一个 joda 对象,如果你尝试自己给一个字符串字段重命名为 @timestamp 的话,Logstash 会直接报错。所以,请使用 filters/date 插件 来管理这个特殊字段

此外,大多数时候,还可以见到另外几个: 
- host 标记事件发生在哪里。 
- type 标记事件的唯一类型。 
- tags 标记事件的某方面属性。这是一个数组,一个事件可以有多个标签。

-e参数允许Logstash直接通过命令行接受设置。这点尤其快速的帮助我们反复的测试配置是否正确而不用写配置文件

以上例子我们在运行logstash中,定义了一个叫”stdin”的input还有一个”stdout”的output,无论我们输入什么字符,Logstash都会按照某种格式来返回我们输入的字符

2.命令行输入内容然后让logstash以某种格式输出

运行命令:

./logstash -e 'input { stdin { } } output { stdout { codec => rubydebug } }'  

logstach输出:

Settings: Default pipeline workers: 2
Pipeline main started

表示启动成功

在控制台输入123,然后logstash输出如下:

123
{
       "message" => "123",
      "@version" => "1",
    "@timestamp" => "2017-11-02T02:51:55.681Z",
          "host" => "localhost.localdomain"
}

命令解释: 
codec 指定了数据输出类型是rubydebug类型,还可以是json类型等等

3.命令行输入内容然后让logstash使用Elasticsearch存储

-e参数在命令行中指定配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值