Logstash (一)

感觉它比flume要稍微强大一点. 最近研究了一下, 将一些小心得记录在这里.

话说最好的教程还是官网: https://www.elastic.co/guide/index.html

 

 

关于安装

logstash是用JRuby语言开发的. 解压安装包即可(前提是已装有jdk)

 

logstash基本上由三部分组成,inputoutput以及用户需要才添加的filter,因此标准的配置文件格式如下:

input {...}

filter {...}

output {...}

input 类似于flume 的source, output 类似flume 的sink. filter 类似interceptor

在每个部分中,也可以指定多个访问方式,例如想要指定两个日志来源文件,则可以这样写:

input {

 file { path =>"/var/log/messages" type =>"syslog"}

 file { path =>"/var/log/apache/access.log" type =>"apache"}

}

  类似的,如果在filter中添加了多种处理规则,则按照它的顺序一一处理,但是有一些插件并不是线程安全的。

  比如在filter中指定了两个一样的的插件,这两个任务并不能保证准确的按顺序执行,因此官方也推荐避免在filter中重复使用插件。

下面是一个非常简单的从本地文件夹读入, 写入到kafka 中的例子:

logstash.conf

input {
  file {
    path => "/var/service_logs/*.log"
 discover_interval => 5
    start_position => "beginning" 
  }
}

output {
 kafka {
   topic_id => "servicelogs"
   codec => plain {
  format => "%{message}"
   }
   bootstrap_servers => "192.168.75.71:9092,192.168.75.72:9092,192.168.75.73:9092"
 }
}

 

bootstrap_servers 给定kafka broker 的 地址. (注意不是zookeeper,而是直接给定broker 地址)

启动logstash 时, 只需要把写好的conf 文件作为参数给启动脚本即可. 如果不指定启动配置文件, 默认从标准输入作为input,标准输出作为output 

 

bin/logstash -f logstash.conf

 

简单的测试

1. 作为准备, 启动Zookeeper和kafka集群 :

zookeeper/bin/zkServer.sh start  

kafka/bin/kafka-server-start.sh /app/kafka/config/server.properties

 

2. 创建topic:  servicelogs

bin/kafka-topics.sh --create --zookeeper amie01:2181 --replication-factor 3 --partitions 3 --topic servicelogs

kafka-topics.sh --describe --zookeeper amie01:2181 --topic servicelogs查看一下topic 详细信息 :

        Topic:servicelogs       PartitionCount:3        ReplicationFactor:3     Configs:
        Topic: servicelogs      Partition: 0    Leader: 0       Replicas: 0,2,1 Isr: 0,2,1
        Topic: servicelogs      Partition: 1    Leader: 1       Replicas: 1,0,2 Isr: 1,0,2
        Topic: servicelogs      Partition: 2    Leader: 2       Replicas: 2,1,0 Isr: 2,1,0

 

3. 启动logstash :

bin/logstash -f logstash.conf

 

可以写个简单的脚本模拟数据: while true ; do  echo `date` >> /var/service_logs/a.log ; sleep 0.05; done

然后为了查看kafka的servicelogs 是否已经被logstash output 了消息, 可以用kafka的console consume 测试一下.

 

测试结果是完成可以work的~~

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值