zoukankan      html  css  js  c++  java
  • 快速认识ELK中的L

    快速认识ELK中的L - Logstash

    简介

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

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

    例如

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

    右面可以对接 ElasticsearchKafkaMongoDB……

    所以 Logstash 的核心构成就是 inputfilteroutput

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

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

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

    安装

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

    • 下载

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

    解压

    tar zxvf logstash-5.0.2.tar.gz
    • 运行

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

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

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

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

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

    hello world

    就会得到一条反馈

    2016-12-07T08:38:18.711Z MacbookPro.local hello world

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

    输出到Elasticsearch

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

    使用下面的命令启动logstash

    bin/logstash -e 'input { stdin { } } output { elasticsearch { } }'

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

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

    curl 'localhost:9200/_cat/indices?v'

    会看到一个 logstash 开头的索引

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

    到 elasticsearch 中查看一下

    curl -XGET 'localhost:9200/logstash-2016.12.03/_search?pretty' -d'
    {
      "query": { "match_all": {} },
      "size": 100
    }'

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

    从Redis读取数据

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

    新建配置文件 conf/redis.conf

    input {
        redis {
            data_type => "pattern_channel"
            key => "logstash-*"
            host => "localhost"
            port => 32768
        }
    }
    output {
      stdout { codec => rubydebug }
    }

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

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

    启动

    bin/logstash -f conf/redis.conf

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

    然后在redis中输入命令

    PUBLISH logstash-demo "hello world"

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

    {
        "@timestamp" => 2016-12-07T09:37:51.533Z,
          "@version" => "1",
           "message" => "hello world",
              "tags" => [
            [0] "_jsonparsefailure"
        ]
    }

    小结

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

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

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

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

  • 相关阅读:
    寒假作业:第三次作业
    markdown笔记
    c#基类继承
    atom插件安装
    git命令
    vue2.3时使用手机调试,提示媒体已断开的解决方案
    vue中使用hotcss--stylus
    JS调试工具
    Facebook的bigpipe
    xss--攻击方式
  • 原文地址:https://www.cnblogs.com/jun1019/p/6260510.html
Copyright © 2011-2022 走看看