`

Logstash详解之——input模块

阅读更多

Logstash由三个组件构造成,分别是input、filter以及output。我们可以吧Logstash三个组件的工作流理解为:input收集数据,filter处理数据,output输出数据。至于怎么收集、去哪收集、怎么处理、处理什么、怎么发生以及发送到哪等等一些列的问题就是我们接下啦要讨论的一个重点。

我们今天先讨论input组件的功能和基本插件。前面我们意见介绍过了,input组件是Logstash的眼睛和鼻子,负责收集数据的,那么们就不得不思考两个问题,第一个问题要清楚的就是,元数据在哪,当然,这就包含了元数据是什么类型,属于什么业务;第二个问题要清楚怎么去拿到元数据。只要搞明白了这两个问题,那么Logstash的input组件就算是弄明白了。
对于第一个问题,元数据的类型有很多,比如说你的元数据可以是日志、报表、可以是数据库的内容等等。元数据是什么样子的我们不需要关心,我们要关系的是元数据是什么类型的,只要你知道元数据是什么类型的,你才能给他分类,或者说给他一个type,这很重要,type对于你后面的工作处理是非常有帮助的。所以第一个问题的重心元数据在吗,是什么,现在已经是清楚了。那么进行第二个问题。
第二个问题的核心是怎么拿到这些不同类型的原数据?这是一个真个input组件的核心内容了,我们分门别类的来看待这和解决个问题。
首先,我们肯定需要认同的,什么样的数据源,就需要使用什么样的方式去获取数据。

 我们列举几种:
1、文件类型:文件类型,顾名思义,文件数据源,我们可以使用input组件的file插件来获取数据。file{}插件有很多的属性参数,我们可以张开讲解一下。具体内容在下面的代码中展示:

input{
    file{
        #path属性接受的参数是一个数组,其含义是标明需要读取的文件位置
        path => [‘pathA’,‘pathB’]
        #表示多就去path路径下查看是够有新的文件产生。默认是15秒检查一次。
        discover_interval => 15
        #排除那些文件,也就是不去读取那些文件
        exclude => [‘fileName1’,‘fileNmae2’]
        #被监听的文件多久没更新后断开连接不在监听,默认是一个小时。
        close_older => 3600
        #在每次检查文件列 表的时候, 如果一个文件的最后 修改时间 超过这个值, 就忽略这个文件。 默认一天。
        ignore_older => 86400
        #logstash 每隔多 久检查一次被监听文件状态( 是否有更新) , 默认是 1 秒。
        stat_interval => 1
        #sincedb记录数据上一次的读取位置的一个index
        sincedb_path => ’$HOME/. sincedb‘
        #logstash 从什么 位置开始读取文件数据, 默认是结束位置 也可以设置为:beginning 从头开始
        start_position => ‘beginning’
        #注意:这里需要提醒大家的是,如果你需要每次都从同开始读取文件的话,关设置start_position => beginning是没有用的,你可以选择sincedb_path 定义为 /dev/null
    }            

}

 2、数据库类型:数据库类型的数据源,就意味着我们需要去和数据库打交道了是吗?是的!那是必须的啊,不然怎么获取数据呢。input组件如何获取数据库类的数据呢?没错,下面即将隆重登场的是input组件的JDBC插件jdbc{}。同样的,jdbc{}有很多的属性,我们在下面的代码中作出说明;

input{
    jdbc{
    #jdbc sql server 驱动,各个数据库都有对应的驱动,需自己下载
    jdbc_driver_library => "/etc/logstash/driver.d/sqljdbc_2.0/enu/sqljdbc4.jar"
    #jdbc class 不同数据库有不同的 class 配置
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
    #配置数据库连接 ip 和端口,以及数据库    
    jdbc_connection_string => "jdbc:sqlserver://200.200.0.18:1433;databaseName=test_db"
    #配置数据库用户名
    jdbc_user =>   
    #配置数据库密码
    jdbc_password =>
    #上面这些都不重要,要是这些都看不懂的话,你的老板估计要考虑换人了。重要的是接下来的内容。
    # 定时器 多久执行一次SQL,默认是一分钟
    # schedule => 分 时 天 月 年  
    # schedule => * 22  *  *  * 表示每天22点执行一次
    schedule => "* * * * *"
    #是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
    clean_run => false
    #是否需要记录某个column 的值,如果 record_last_run 为真,可以自定义我们需要表的字段名称,
    #此时该参数就要为 true. 否则默认 track 的是 timestamp 的值.
    use_column_value => true
    #如果 use_column_value 为真,需配置此参数. 这个参数就是数据库给出的一个字段名称。当然该字段必须是递增的,可以是 数据库的数据时间这类的
    tracking_column => create_time
    #是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中
    record_last_run => true
    #们只需要在 SQL 语句中 WHERE MY_ID > :last_sql_value 即可. 其中 :last_sql_value 取得就是该文件中的值
    last_run_metadata_path => "/etc/logstash/run_metadata.d/my_info"
    #是否将字段名称转小写。
    #这里有个小的提示,如果你这前就处理过一次数据,并且在Kibana中有对应的搜索需求的话,还是改为true,
    #因为默认是true,并且Kibana是大小写区分的。准确的说应该是ES大小写区分
    lowercase_column_names => false
    #你的SQL的位置,当然,你的SQL也可以直接写在这里。
    #statement => SELECT * FROM tabeName t WHERE  t.creat_time > :last_sql_value
    statement_filepath => "/etc/logstash/statement_file.d/my_info.sql"
    #数据类型,标明你属于那一方势力。单了ES哪里好给你安排不同的山头。
    type => "my_info"
    }
    #注意:外载的SQL文件就是一个文本文件就可以了,还有需要注意的是,一个jdbc{}插件就只能处理一个SQL语句,
    #如果你有多个SQL需要处理的话,只能在重新建立一个jdbc{}插件。
}

 好了,废话不多说了,接着第三种情况:

input {
  beats {
    #接受数据端口
    port => 5044
    #数据类型
    type => "logs"
  }
  #这个插件需要和filebeat进行配很这里不做多讲,到时候结合起来一起介绍。
}

 现在我们基本清楚的知道了input组件需要做的事情和如何去做,当然他还有很多的插件可以进行数据的收集,比如说TCP这类的,还有可以对数据进行encode,这些感兴趣的朋友可以自己去查看,我说的只是我自己使用的。一般情况下我说的三种插件已经足够了。
今天的ELK种的Logstash的input组件就到这。后面还会讲述Logstash的另外另个组件filter和output。

分享到:
评论

相关推荐

    logstash-jdbc-input 同步数据到es的多任务配置

    Logstash-jdbc-input插件是Logstash框架中的一个输入插件,主要用于从关系型数据库(如MySQL)中抽取数据并将其同步到Elasticsearch。在ELK(Elasticsearch、Logstash、Kibana)堆栈中,Logstash起到了数据处理和...

    logstash集成logstash-input-jdbc

    Logstash-input-jdbc 插件是 Logstash 的一个输入插件,专门用于从关系型数据库(如 MySQL)中抽取数据。这个压缩包 "logstash-6.5.1" 显然是 Logstash 的一个特定版本,其中可能包含了集成 logstash-input-jdbc ...

    logstash-input-mongodb离线包

    解压后使用,版本:logstash-input-mongodb-0.4.1 logstash离线包安装命令: Windows:logstash-plugin install file:///D:/logstash-7.5.0/logstash-input-mongodb/logstash-input-mongodb-0.4.1.zip Linux:...

    logstash-input-jdbc

    **Logstash-input-jdbc 插件详解** Logstash 是一个开源的数据收集引擎,它能够实时地从各种数据源中采集数据,然后进行过滤、转换,并将处理后的数据发送到各种目的地,如 Elasticsearch、Elastic Stack(原ELK ...

    logstash-input-mongodb-0.4.1[logstash-6.5.4]

    《Logstash-input-mongodb插件详解与应用》 在大数据处理和日志分析领域,Logstash以其强大的数据收集、处理和转发能力而被广泛应用。在本文中,我们将深入探讨一个关键组件——logstash-input-mongodb插件,以及...

    logstash-input-cloudwatch-logs, Logstash的输入插件,用于从CloudWatch日志流事件.zip

    logstash-input-cloudwatch-logs, Logstash的输入插件,用于从CloudWatch日志流事件 用于CloudWatch日志的 Logstash输入 来自CloudWatch日志的流事件。命令行目指定单个日志组或者组 array,这里插件将扫描该组中的...

    logstash-input-mongodb-master.zip

    安装 logstash-input-mongodb 插件 (1) 登录github 地址https://github.com/phutchins/logstash-input-mongodb 下载 (2) 解压到 logstash bin文件夹同级目录 (3) 修改logstash目录下的 Gemfile 文件 添加...

    logstash-input-jdbc-1.0.0.zip

    在给定的压缩包 "logstash-input-jdbc-1.0.0.zip" 中,我们关注的是 Logstash 的 JDBC 插件。 **Logstash JDBC 输入插件** Logstash 的 JDBC 输入插件允许我们从关系型数据库中提取数据,如 MySQL、PostgreSQL、...

    logstash_input_jdbc

    Logstash_input_jdbc是Logstash的一个输入插件,专门用于从关系型数据库中抽取数据。Logstash是一款强大的数据处理管道工具,它允许你收集、转换并分发各种日志、事件和其他类型的数据。在大数据和实时分析场景中,...

    logstash-input-kafka:Logstash 的 Kafka 输入

    Logstash插件 这是的插件。 它是完全免费和完全开源的。 许可证是 Apache 2.0,这意味着您可以随意以任何方式使用它。 Kafka 输入插件已移动 这个 Kafka 输入插件现在是的一部分。 在可能的情况下,该项目仍对该...

    ELK语法命令.txt

    1) ./logstash -e 'input{stdin{}} output{stdout{}}' 2) ./logstash -e 'input{stdin{}} output{stdout{ codec => json}}' #输出格式使用json格式 3) ./logstash -e 'input{stdin{}} output{stdout{ codec => ...

    logstash-output-jdbc.zip

    ./logstash-plugin prepare-offline-pack --overwrite --output logstash-input-jdbc.zip logstash-input-jdbc 最后成功会出现以下信息 You can install it with this command `bin/logstash-plugin install file...

    logstash-input-sftp插件

    这是个logstash关于sftp下载的插件,运行下面命令就可以了,...cmd: bin/logstash-plugin install file:///absolute/path/to/logstash-input-sftp.zip config guide: https://github.com/yuxuanh/logstash-input-sftp

    logstash-input-jdbc-4.2.3离线安装包

    这个资源可以直接使用 ./logstash-plugin install file:///path/to/logstash-input-jdbc-4.2.3.zip 这种命令安装;不需要联网;适用于logstash-5.5.3左右版本使用

    [Logstash]使用详解1

    Logstash的工作流程采用管道机制,分为三个主要阶段:输入(input)、处理(filter,非必需)和输出(output)。每个阶段都可以包含多个插件,例如,`file` 插件用于从文件中读取日志,`elasticsearch` 插件用于将处理后的...

    logstash-input-jdbc-4.2.1.zip

    在这个场景中,我们关注的是Logstash的一个特定输入插件——logstash-input-jdbc,版本号为4.2.1。这个插件允许Logstash从关系型数据库,如MySQL,实时地同步数据到Elasticsearch。 首先,我们需要理解Logstash的...

    logstash-input-jdbc-4.3.19

    logstash jdbc插件,已压缩成zip格式,可以直接集成到logstash

    logstash-template模板:logstash.json

    Logstash 是一个强大的数据收集、处理和转发工具,广泛用于日志管理和大数据分析。在Logstash中,模板(Template)扮演着重要的角色,它定义了Elasticsearch如何存储和索引由Logstash发送的数据。`logstash.json` ...

    FIlebeat和Logstash部署步骤

    4. 启动Logstash服务:nohup bin/logstash -f config/logstash.conf & 或者 bin/logstash -e 'input {beats {port => 5044}} output{stdout { codec => rubydebug }}' 在部署Filebeat和Logstash时需要注意以下几点...

    ElasticSearch7.3学习---logstash三大插件(input、filter、output)及其综合示例.doc

    ElasticSearch7.3学习---logstash三大插件(input、filter、output)及其综合示例 ElasticSearch7.3学习---logstash三大插件(input、filter、output)及其综合示例,这篇文档主要介绍了Logstash中的三大插件:...

Global site tag (gtag.js) - Google Analytics