你好,游客 登录 注册 搜索
背景:
阅读新闻

Logstash将Kafka中的日志数据订阅到HDFS

[日期:2017-03-24] 来源:Linux社区  作者:heqin [字体: ]

前言:通常情况下,我们将Kafka的日志数据通过logstash订阅输出到ES,然后用Kibana来做可视化分析,这就是我们通常用的ELK日志分析模式。但是基于ELK的日志分析,通常比较常用的是实时分析,日志存个十天半个月都会删掉。那么在一些情况下,我需要将日志数据也存一份到我HDFS,积累到比较久的时间做半年、一年甚至更长时间的大数据分析。下面就来说如何最简单的通过logstash将kafka中的数据订阅一份到hdfs。

一:安装logstash(下载tar包安装也行,我直接yum装了)

#yum install logstash-2.1.1

二:从github上克隆代码

#git clone  https://github.com/heqin5136/logstash-output-webhdfs-discontinued.git
#ls
logstash-output-webhdfs-discontinued

三:安装logstash-output-webhdfs插件

#cd logstash-output-webhdfs-discontinued
logstash的bin目录下有个plugin,使用plugin来安装插件
#/opt/logstash/bin/plugin install logstash-output-webhdfs

四:配置logstash

#vim /etc/logstash/conf.d/logstash.conf
input {
  kafka {
    zk_connect => '10.10.10.1:2181,10.10.10.2:2181,10.10.10.3:2181'  #kafka的zk集群地址
    group_id => 'hdfs'                    #消费者组,不要和ELK上的消费者一样
    topic_id => 'apiAppWebCms-topic'      #topic 
    consumer_id => 'logstash-consumer-10.10.8.8'  #消费者id,自定义,我写本机ip。
    consumer_threads => 1
    queue_size => 200
    codec => 'json'
  }
}
 
output {           
#如果你一个topic中会有好几种日志,可以提取出来分开存储在hdfs上。
if [type] == "apiNginxLog" {
    webhdfs {
          workers => 2
          host => "10.10.8.1"        #hdfs的namenode地址   
          port => 50070              #webhdfs端口
          user => "hdfs"            #hdfs运行的用户啊,以这个用户的权限去写hdfs。
          path => "/data/logstash/apiNginxLog-%{+YYYY}-%{+MM}-%{+dd}/logstash-%{+HH}.log 
            #按天建目录,按小时建log文件。
          flush_size => 500
#      compression => "snappy"            #压缩格式,可以不压缩
        idle_flush_time => 10
        retry_interval => 0.5
      }
  }
if [type] == "apiAppLog" {
    webhdfs {
        workers => 2
        host => "10.64.8.1"
        port => 50070
        user => "hdfs"
        path => "/data/logstash/api/apiAppLog-%{+YYYY}-%{+MM}-%{+dd}.log"
        flush_size => 500
#        compression => "snappy"
        idle_flush_time => 10
        retry_interval => 0.5
      }
  }
  stdout { codec => rubydebug }
}

五:启动logstash

#/etc/init.d/logstash start

已经可以成功写入了。

下面关于Kafka的文章您也可能喜欢,不妨参考下:

CentOS 7.2部署Elasticsearch+Kibana+Zookeeper+Kafka  http://www.linuxidc.com/Linux/2016-11/137636.htm

CentOS 7下安装Logstash ELK Stack 日志管理系统  http://www.linuxidc.com/Linux/2016-08/134165.htm

Kafka集群部署与配置手册 http://www.linuxidc.com/Linux/2017-02/141037.htm

CentOS 7下Kafka集群安装  http://www.linuxidc.com/Linux/2017-01/139734.htm

CentOS 7下安装Kafka单机版  http://www.linuxidc.com/Linux/2017-01/139732.htm

Kafka介绍及环境搭建  http://www.linuxidc.com/Linux/2016-12/138724.htm

CentOS 7.2部署Elasticsearch+Kibana+Zookeeper+Kafka  http://www.linuxidc.com/Linux/2016-11/137636.htm

Kibana+Logstash+Elasticsearch 日志查询系统搭建  http://www.linuxidc.com/Linux/2017-03/141489.htm

Ubuntu 14.04 中 安装elasticsearch2.*+logstash2.*+kibana  http://www.linuxidc.com/Linux/2016-12/138570.htm

Kafka 的详细介绍请点这里
Kafka 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-03/142152.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款