前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速认识ELK中的L - Logstash

快速认识ELK中的L - Logstash

作者头像
dys
发布2018-04-04 11:27:32
1.5K0
发布2018-04-04 11:27:32
举报
文章被收录于专栏:性能与架构性能与架构

简介

Logstash 是一个开源的数据采集引擎。

Logstash 就像是一个管子,左面接数据源接收数据,右面接存储目的地,管子中间有过滤器,对接收到的数据进行过滤,只存储符合要求的数据。

例如

左面可以对接 日志文件ReidsKafka ……

右面可以对接 ElasticsearchKafkaMongoDB……

所以 Logstash 的核心构成就是 inputfilteroutput

Logstash 可以整合那么多技术,与每个技术进行对接时,是不是都需要我们自己写代码呢?

Logstash 已经准备了200多个插件,接入这些主流技术时,只需要简单配置一下就行了,在不满足需求时,也可以自己进行扩展。

下面就实际体验一下Logstash,看看如何对接 ElasticsearchRedis

安装

Logstash 不需要安装,只要已经安装好了JAVA环境,下载解压后就可以用。

  • 下载

https://www.elastic.co/downloads/logstash

解压

代码语言:javascript
复制
tar zxvf logstash-5.0.2.tar.gz
  • 运行

进入解压目录,执行bin目录下的logstash命令

代码语言:javascript
复制
cd logstash-5.0.2
bin/logstash -e 'input { stdin { } } output { stdout {} }'

这个命令是在启动时指定了一个简单的配置:input 和 output 都是标准的输入输出 - 屏幕

启动过程需要一小段时间,等待一下,启动完成后,会显示信息“Successfully started Logstash ... ”

然后输入一个字符串试试,例如

代码语言:javascript
复制
hello world

就会得到一条反馈

代码语言:javascript
复制
2016-12-07T08:38:18.711Z MacbookPro.local hello world

这样我们就完成了一个最简单的体验。

输出到Elasticsearch

上个例子中把output指向了屏幕,现在试试输出到 elasticsearch

使用下面的命令启动logstash

代码语言:javascript
复制
bin/logstash -e 'input { stdin { } } output { elasticsearch { } }'

input 还是屏幕,output 指向了 elasticsearch,其中没有任何参数,就是使用默认参数,连接到本地的9200端口,如果是其他地址,可以通过参数 host 指定。

启动后,会自动在 elasticsearch 中创建索引,查看一下 es 的所有索引

代码语言:javascript
复制
curl 'localhost:9200/_cat/indices?v'

会看到一个 logstash 开头的索引

然后在 logstash 中随意输入字符串测试一下,这时就没有反馈信息了

到 elasticsearch 中查看一下

代码语言:javascript
复制
curl -XGET 'localhost:9200/logstash-2016.12.03/_search?pretty' -d'
{
  "query": { "match_all": {} },
  "size": 100
}'

会显示出刚刚输入的字符串。

从Redis读取数据

下面把input改为redis,output还使用屏幕,便于查看

新建配置文件 conf/redis.conf

代码语言:javascript
复制
input {
    redis {
        data_type => "pattern_channel"
        key => "logstash-*"
        host => "localhost"
        port => 32768
    }
}
output {
  stdout { codec => rubydebug }
}

input 中配置了redis的连接信息和key的匹配规则

output 中的 codec 用来对输出信息进行美化

启动

代码语言:javascript
复制
bin/logstash -f conf/redis.conf

启动完成后,等待redis的数据

然后在redis中输入命令

代码语言:javascript
复制
PUBLISH logstash-demo "hello world"

在logstash的控制台中就可以看到接收到的信息:

代码语言:javascript
复制
{
    "@timestamp" => 2016-12-07T09:37:51.533Z,
      "@version" => "1",
       "message" => "hello world",
          "tags" => [
        [0] "_jsonparsefailure"
    ]
}

小结

上面我们体验了3个示例:

1)最简单的屏幕输入屏幕输出 2)屏幕输入,输出到elasticsearch 3)Redis输入,屏幕输出

可以感受到logstash的简单便利和使用方法。

ELK是一套很强大的组合,以后再深入介绍,希望本文能让您明白了logstash的使用思路。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 安装
  • 输出到Elasticsearch
  • 从Redis读取数据
    • 启动
    • 小结
    相关产品与服务
    云数据库 Redis
    腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档