zoukankan      html  css  js  c++  java
  • logstash的input的几种配置

    读取文件

    Logstash 使用一个名叫 FileWatch 的 Ruby Gem 库来监听文件变化。这个库支持 glob 展开文件路径,而且会记录一个叫 .sincedb 的数据库文件来跟踪被监听的日志文件的当前读取位置。所以,不要担心 logstash 会漏过你的数据。

    sincedb 文件中记录了每个被监听的文件的 inode, major number, minor number 和 pos。

    input
        file {
            path => ["/var/log/*.log", "/var/log/message"]
            type => "system"
            start_position => "beginning"
        }
    }

    有一些比较有用的配置项,可以用来指定 FileWatch 库的行为:

    • discover_interval

    logstash 每隔多久去检查一次被监听的 path 下是否有新文件。默认值是 15 秒。

    • exclude

    不想被监听的文件可以排除出去,这里跟 path 一样支持 glob 展开。

    • sincedb_path

    如果你不想用默认的 $HOME/.sincedb(Windows 平台上在 C:WindowsSystem32configsystemprofile.sincedb),可以通过这个配置定义 sincedb 文件到其他位置。

    • sincedb_write_interval

    logstash 每隔多久写一次 sincedb 文件,默认是 15 秒。

    • stat_interval

    logstash 每隔多久检查一次被监听文件状态(是否有更新),默认是 1 秒。

    • start_position

    logstash 从什么位置开始读取文件数据,默认是结束位置,也就是说 logstash 进程会以类似 tail -F 的形式运行。如果你是要导入原有数据,把这个设定改成 "beginning",logstash 进程就从头开始读取,有点类似 cat,但是读到最后一行不会终止,而是继续变成 tail -F

    读取网络TCP

    Logstash有自己的 TCP/UDP 插件,在临时任务的时候,也算能用,尤其是测试环境。

    小贴士:虽然 LogStash::Inputs::TCP 用 Ruby 的 SocketOpenSSL 库实现了高级的 SSL 功能,但 Logstash 本身只能在 SizedQueue 中缓存 20 个事件。这就是我们建议在生产环境中换用其他消息队列的原因。

    input {
        tcp {
            port => 8888
            mode => "server"
            ssl_enable => false
        }
    }

    目前来看,LogStash::Inputs::TCP 最常见的用法就是配合 nc 命令导入旧数据。在启动 logstash 进程后,在另一个终端运行如下命令即可导入数据:

    # nc 127.0.0.1 8888 < olddata

    这种做法比用 LogStash::Inputs::File 好,因为当 nc 命令结束,我们就知道数据导入完毕了。而用 input/file 方式,logstash 进程还会一直等待新数据输入被监听的文件,不能直接看出是否任务完成了。

    读取redis数据

    input {
        redis {
            batch_count => 1 #EVAL命令返回的事件数目
            data_type => "list" #logstash redis插件工作方式
            key => "logstash-test-list" #监听的键值
            host => "127.0.0.1" #redis地址
            port => 6379 #redis端口号
            password => "123qwe" #如果有安全认证,此项为密码
            db => 0 #redis数据库的编号
            threads => 1 #启用线程数量
        }
    }
    output {
     stdout{}
    }

     data_type logstash工作的类型

    logstash中的redis插件,指定了三种方式来读取redis队列中的信息。

    • list=>BLPOP
    • channel=>SUBSCRIBE
    • pattern_channel=>PSUBSCRIBE

    其中list,相当于队列;channel相当于发布订阅的某个特定的频道;pattern_channel相当于发布订阅某组频道。

  • 相关阅读:
    Android Studio同时监听多个Button实现activity跳转
    Android Studio--Activity实现跳转功能
    Gym 101170F Free Weights(二分)题解
    Gym 101170I Iron and Coal(BFS + 思维)题解
    Gym 101128F Landscaping(网络流)题解
    Gym 101128A Promotions(思维 + dfs)题解
    Gym 101480I Ice Igloos(思维乱搞)题解
    Gym 101480F Frightful Formula(待定系数)题解
    Gym 101128J Saint John Festival(凸包 + 二分判点和凸包关系)题解
    CodeForces 348D Turtles(LGV定理)题解
  • 原文地址:https://www.cnblogs.com/fat-girl-spring/p/12973833.html
Copyright © 2011-2022 走看看