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

我们列举几种:

1、文件类型:

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

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

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_valuestatement_filepath => "/etc/logstash/statement_file.d/my_info.sql"#数据类型,标明你属于那一方势力。单了ES哪里好给你安排不同的山头。type => "my_info"}#注意:外载的SQL文件就是一个文本文件就可以了,还有需要注意的是,一个jdbc{}插件就只能处理一个SQL语句,#如果你有多个SQL需要处理的话,只能在重新建立一个jdbc{}插件。}

3、第三种情况

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

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

4、TCP与UDP

input{tcp{port => 8888 #端口mode => "server" #操作模式, server:监听客户端连接, client:连接到服务器host => "0.0.0.0" #当mode为server, 指定监听地址, 当mode为client, 指定连接地址, 默认0.0.0.0ssl_enable => false #是否启用SSL, 默认falsessl_cert => "" #SSL证书路径ssl_extra_chain_certs => [] #将额外的X509证书添加到证书链中ssl_key => "" #SSL密钥路径ssl_key_passphrase => "nil" #SSL密钥密码, 默认nilssl_verify => true #核实与CA的SSL连接的另一端的身份tcp_keep_alive => false #TCP是否保持alives}
}
input{udp{buffer_size => 65536 #从网络读取的最大数据包大小, 默认65536host => 0.0.0.0 #监听地址port => 8888 #端口queue_size => 2000 #在内存中保存未处理的UDP数据包的数量, 默认2000workers => 2 #处理信息包的数量, 默认2}
}# tcp官方参考: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-tcp.html
# udp官方参考: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-udp.html

5、syslog

input{syslog{host => 0.0.0.0 #监听地址, 默认0.0.0.0port => "8888" #端口}
}# syslog官方参考: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-syslog.html

6、stdin

input{stdin{add_field => {"key" => "value"} #向事件添加一个字段codec => "plain" #默认是line, 可通过这个参数设置编码方式tags => ["std"] #添加标记type => "std" #添加类型id => 1 #添加一个唯一的ID, 如果没有指定ID, 那么将生成一个IDenable_metric => true #是否开启记录日志, 默认true}
}# stdin官方参考: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-stdin.html

Logstash详解之——input模块相关推荐

  1. Logstash详解之——output模块

    Logstash的output模块,相比于input模块来说是一个输出模块,output模块集成了大量的输出插件,可以输出到指定文件,也可输出到指定的网络端口,当然也可以输出数据到ES. 在这里我只介 ...

  2. ELK学习笔记之Logstash详解

    0x00 Logstash概述 官方介绍:Logstash is an open source data collection engine with real-time pipelining cap ...

  3. python中yaml模块的使用_详解Python yaml模块

    一.yaml文件介绍 yaml是一个专门用来写配置文件的语言. 1. yaml文件规则 区分大小写: 使用缩进表示层级关系: 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元 ...

  4. python实现日历功能_详解Python日历模块的使用

    calendar模块的函数都是日历相关的,提供了对日期的一些操作方法,和生成日历的方法. calendar模块中提供了三大类: 一.calendar.Calendar(firstweekday=0) ...

  5. Python choices()函数详解、random模块下的常用函数

    random模块下的方法详解: 1.random.random() 随机生成一个[0,1)之间的浮点数. 2.random.randint(a,b) 随机生成[a,b]范围内一个整数. 3.rando ...

  6. 【Python】模块详解/如何安装模块的方法

    什么是模块 一.模块.包 ①模块 Python 模块(Module) 实质上就是一个python集成文件.它是用来组织代码的,包含了 Python 对象定义和Python语句,意思就是把python代 ...

  7. [PointNet代码详解]PointNet各模块代码实现超详细注释

    pointnet.py pointnet模型各个模块的实现 import torch import torch.nn as nn import torch.nn.parallel import tor ...

  8. 第五周-第11章节-Python3.5-内置模块详解之Xml模块

    Python XML操作 XML(可扩展性标记语言)是一种非常常用的文件类型,主要用于存储和传输数据.在编程中,对XML的操作也非常常见. 本文根据python库文档中的xml.etree.Eleme ...

  9. python自定义包_详解python自定义模块、包

    1.保存一个hello.py文件在F:/data/python目录下hello.py >>> def hello(x): print x 目录 导入 >>> imp ...

  10. python中time模块详解_Python time模块详解

    time 模块主要包含各种提供日期.时间功能的类和函数.该模块既提供了把日期.时间格式化为字符串的功能,也提供了从字符串恢复日期.时间的功能. 在 Python 的交互式解释器中先导入 time 模块 ...

最新文章

  1. 如何给docker容器分配内存和cpu
  2. Tomca的启动与关闭
  3. issubclass和isinstance 反射 内置方法(魔术方法)
  4. python3中zip()函数的用法
  5. PHP 数据库 ODBC
  6. elementui 弹窗 显示详细信息_ElementUI中el-table双击单元格事件并获取指定列的值和弹窗显示详细信息...
  7. 基于C#net4.5websocket客户端与服务端
  8. [转] 在ASP.NET MVC3中使用EFCodeFirst 1.0
  9. 常用汉字2504个(无重复)
  10. 关于信度分析的多种方法
  11. 菜鸟站长之家google账号注册申请图文教程
  12. 浅谈C中的malloc和free “来自bccn C语言论坛”
  13. 六、路由(routing)
  14. linux 内存容量换算,Hi3516A开发--内存换算
  15. 生信文献 | TIMER2.0用于分析肿瘤免疫细胞浸润
  16. CDR无法启动此程序 因为计算机丢失,教您快速解决CorelDRAW X7因缺少VGCore.dll无法启动的难题...
  17. 著作权范围大于版权?如何进行著作权查询?
  18. TrackMouseEvent处理鼠标消息
  19. 朱清时:中国大学首要问题是如何让学生学到真本事
  20. 从零开始的2D游戏开发 —— 像素方块生成器

热门文章

  1. xdb 服务_如何禁用Oracle的XDB及修改XDB服务端口
  2. 吉首 - 最亲密的x个人
  3. 学会用CUPS管理打印机
  4. 【智能门禁系统】——硬件设计
  5. 面试官问你还有什么要问我的吗?
  6. PV操作经典问题通解
  7. 2020年度软件和信息技术服务竞争力前百家企业名单出炉 —— 旋极信息再次荣登榜单
  8. 算法界的“视界杯”,2021腾讯广告算法大赛来了!
  9. 如何确定自己的科研课题?
  10. Excel中神秘的间接引用函数Indirect