Logstash的conf文件

   Logstash是一个开源的、服务端的数据处理pipeline(管道),它可以接收多个源的数据、然后对它们进行转换、最终将它们发送到指定类型的目的地。Logstash是通过插件机制实现各种功能的,读者可以在https://github.com/logstash-plugins 下载各种功能的插件,也可以自行编写插件。

Logstash实现的功能主要分为接收数据、解析过滤并转换数据、输出数据三个部分,对应的插件依次是input插件、filter插件、output插件,其中,filter插件是可选的,其它两个是必须插件。也就是说在一个完整的Logstash配置文件中,必须有input插件和output插件。Logstash的系统结构如下图所示。
在这里插入图片描述

  1. Input
    input是将指定的数据作为输入源,一个pipeline可以有多个input插件。
    常见的input插件有:
-file:读取文件,一行一行地实时读取
-syslog:监听系统514端口的syslog messages,并使用RFC3164格式进行解析
-redis:从redis服务器读取数据
-kafka:kafka-logstash的架构一般用在数据量较大的业务场景,kafka可用作数据的缓冲和存储
-filebeat:filebeat是一个文本日志收集器,性能稳定,并且占用系统资源很少,logstash可以接收filebeat发送过来的数据

针对上面列举些例子:

1. *stdin标准输入*
2. *file从文件读取数据*
  file{
    path =>  '/var/log/nginx/access.log' #要输入的文件路径,该路径可以有多个,它们之间由逗号分开。
    type => 'nginx_access_log'   #通用选项,用于激活过滤器
    start_position => "beginning"  #选择logstash开始读取文件的位置,begining或者end。还有一些常用的选项,discover_interval、exiclude、sincedb_path、sincedb_write_interval等可以参考。
}
3.*syslog通过网络将系统日志消息读取为事件*
     syslog{
    port =>"514" #port指定监听端口(同时建立TCP/UDP的514端口的监听)
    type => "syslog"
}
4. *beats从Elastic beats接收事件*
    beats {
    port => 5044   #要监听的端口
}
5.*kafka 将kafka topic中的数据读取为事件*
    kafka{
    bootstrap_servers=> "kafka01:9092,kafka02:9092,kafka03:9092"
    topics => ["access_log"]
    group_id => "logstash-file" #group_id消费者所属组的标识符,默认为logstash。kafka中的一个主题的消息将通过相同的方式分发到Logstash的group_id
    codec => "json"
}
kafka{
    bootstrap_servers=> "kafka01:9092,kafka02:9092,kafka03:9092"# bootstrap_servers用于建立群集初始连接的kafka实例的URL列表
    topics => ["weixin_log","user_log"]  #topics 要定语的主题列表
    codec => "json" #codec通用选项,用于输入数据的编解码器
}
  1. filter
    filter插件是logstash的主要功能之一,可以对logstash event进行丰富的处理。如类型转换、删除字段等。
    常见filter插件filter插件有:
-date:日期解析
-grok:正则匹配解析,通过将一条日志文件解析成一个json形式
-dissect:分割符解析
-mutate:对字段做处理,比如类型转换,字符串处理和字段处理
-json:按照json解析字段内容到指定字段中
-geoip:增加地理位置数据
-ruby:利用ruby代码来动态修改logstash event

针对上面插件列举些例子:

1.date
filter{
   date{
       match => ["timestamp", "ISO8601" ,"MMM dd yyyy HH:mm:ss"]  #match类型为数组,用于指定日期匹配的格式,可以一次指定多种日期格式
       target => “@timestamp”  #target匹配的是一个string类型,默认值为“@timestamp”,用于指定赋值的字段名
       timezone => "UTC" #类型为字符串,用于指定时区
   }
}
2.grok
3.geoip
4.json
5.ruby
  1. output

常见的output插件有:

-elasticsearch:发送数据到elasticsearch
-file:发送数据到文件中
-redis:发送数据到redis中,从这里可以看出redis插件既可以用在input插件中,也可以用在output插件中。
-kafka:发送数据到kafka中,与redis插件类似,此插件也可以用在logstash的输入和输出插件中。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值