`
qindongliang1922
  • 浏览: 2171177 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117078
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125422
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59492
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71017
社区版块
存档分类
最新评论

实时收集Storm日志到ELK集群

    博客分类:
  • ELK
阅读更多



#### 背景

我们的storm实时流计算项目已经上线几个月了,由于各种原因迟迟没有进行监控,每次出现问题都要登录好几台机器,然后使用sed,shell,awk,vi等各种命令来查询原因,效率非常低下,而且有些统计是没法做的,所以很有必要对storm本身相关的日志以及我们运行在storm上面的任务的日志做一个统一的日志收集,分析,查询,统计平台。



#### 技术选型

对于这个选择,其实不用考虑那么多,借用一句名言 Life is short , You need elk !
关于elk相关的安装这里不再介绍,可参考散仙的博客:
http://qindongliang.iteye.com/category/330375


#### 需求分析


序号|讨论 | 内容
|---|---|---
1|storm需要收集的日志 | (1)本身的相关的日志 (2)提交任务的日志
2|日志过滤| 排除gc的log和部分不相干业务的log
3|索引如何切分| 考虑量不是很大,按每月生成一份索引
4|索引模板定制|默认的动态mapping比较简答,所以我们采用自定义动态索引模板
5|日志的定期删除|使用es官网插件curator管理


#### 核心配置

(1)es的模板定义
注意date类型的动态类型是开启docvalue的,便于快速聚合和排序

{
  "order": 0,
  "template": "jstorm*",
  "settings": {
    "index": {
      "number_of_replicas": "0",
      "number_of_shards": "3"
    }
  },
  "mappings": {
    "_default_": {
      "dynamic_templates": [
        {
          "level": {
            "mapping": {
              "index": "not_analyzed",
              "type": "string"
            },
            "match": "level",
            "match_mapping_type": "string"
          }
        },
        {
          "message": {
            "mapping": {
              "index": "analyzed",
              "type": "string"
            },
            "match": "message",
            "match_mapping_type": "string"
          }
        },
        {
          "date_fields": {
            "mapping": {
              "doc_values": true,
              "type": "date"
            },
            "match_mapping_type": "date"
          }
        },
        {
          "string_fields": {
            "mapping": {
              "index": "not_analyzed",
              "type": "string"
            },
            "match": "*",
            "match_mapping_type": "string"
          }
        }
      ],
      "_all": {
        "enabled": false
      }
    }
  },
  "aliases": {}
}


(2)logstash的conf定义

input{
    file{
            #初始化全量导入
            start_position => "beginning"    
            #统一的storm的日志目录
            path=> ["/data/logs/jstorm/**/*.log"]   
            #排除的路径
            exclude =>["*gc*","*log_monitor*"]
            #指定文件偏移量存储的文件
            sincedb_path => "./sincedb" 
            #配置多行数据收集(针对异常)
            codec => multiline {
                          #类似两个info之间的所有数据是一行数据    
                          pattern => "^\[%{LOGLEVEL:loglevel}"
                          #true代表是两个loglevel之间的数据
                          #false代表两个异常之间的数据,跟上面的相反
                          negate=> true
                          #后一条的数据前面所有的,都属于这整条数据
                          what => "previous"
                        }
        }
} 


filter {
        #使用gork直接获取日志级别和时间
        grok {
                match =>{"message"=>"%{LOGLEVEL:loglevel}\s*%{TIMESTAMP_ISO8601:time} "}
        }
  
    #  转化日志时间为收集的时间,并移除无用的字段
    date{     
            match => ["time","yyyy-MM-dd HH:mm:ss.SSS","yyyy-MM-dd HH:mm:ss","ISO8601"]      
            remove_field => [ "time","@version" ]   

   } 

# 这个地方可以对一些数据做过滤
#  if [loglevel] == "DEBUG" {
#   drop { }
#  }

}



#输出到es的配置
output{

  elasticsearch{ 
   #设置索引名
   index => "jstorm_pro%{+YYYY-MM}"   
   hosts=> ["192.168.8.5:9200","192.168.8.6:9200","192.168.8.7:9200"]  
   #关闭logstash自动管理模块
   manage_template => false
   #指定模板名为jstrom
   template_name => "jstorm"  
   #设置flush的数量
   flush_size => 3000  
   }
 # 调试控制台输出    
 # stdout { codec => rubydebug  }
}


#### 辅助脚本
放在logstash的根目录下面

启动脚本:start_jstorm.sh
nohup bin/logstash -f config/jstorm.conf  &> jstorm_logstash.log & echo $! >jstorm_logstash_pid& 

关闭脚本:stop_jstorm.sh
kill -9 `cat jstorm_logstash_pid`



#### 收集检索效果
一切完成后,启动logstash收集进程后,我们就可以实时在kibana里面分析数据了,非常nice!


然后,我们就可以非常快速的定位异常数据了。


有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。

0
1
分享到:
评论
2 楼 qindongliang1922 2016-11-24  
woodding2008 写道
storm1.0对日志这块的支持改善了
http://woodding2008.iteye.com/blog/2326358 storm监控

http://woodding2008.iteye.com/blog/2326677 storm1.0


strom监控这个你里面那么多详细的指标是如何采集得到的? 就配置下log2j?
1 楼 woodding2008 2016-11-23  
storm1.0对日志这块的支持改善了
http://woodding2008.iteye.com/blog/2326358 storm监控

http://woodding2008.iteye.com/blog/2326677 storm1.0

相关推荐

    ELK+kafaka日志集群项目.zip

    在ELK集群中,Elasticsearch负责接收、存储和索引来自Logstash的数据,支持快速检索和复杂查询,为日志分析提供了坚实的基础。 Logstash作为数据管道,扮演着数据收集、转换和发送的角色。它可以监听多种输入源(如...

    基于ELK Stack 和 Spark Streaming 的日志处理平台.docx

    结合ELK的实时搜索和分析能力,以及Spark Streaming的实时处理,可以构建一个强大的日志分析系统,不仅能够快速收集和处理日志,还能提供实时洞察,增强系统的可维护性和业务决策。 7. **应用场景** - 监控数据库...

    ELK Stack深入浅出.pptx

    ELK Stack 在最近两年迅速崛起,成为机器数据分析,或者说实时日志处理领域,开源界的第一选择。 和传统的日志处理方案相比,ELK Stack 具有如下几个优点: 处理方式灵活。Elasticsearch 是实时全文索引,不需要像...

    扩展logback将日志输出到Kafka实例源码

    通过将日志输出到Kafka,可以方便地将这些日志与其他系统集成,如ELK(Elasticsearch、Logstash、Kibana)堆栈,实现日志的集中收集、分析和检索。 总之,扩展Logback将日志输出到Kafka是一种常见的日志管理实践,...

    storm-kafka实时趋势分析

    3. **监控与日志**:集成监控工具(如Grafana、Prometheus)和日志系统(如Logstash、ELK Stack),实时监控系统性能和错误,及时发现问题并进行优化。 总的来说,"storm-kafka实时趋势分析"是一种强大的实时数据...

    日志收集项目1

    【日志收集项目1】是关于构建一个能够处理大规模日志数据的系统,主要涉及到日志的实时收集、存储和分析。在这个项目中,重点介绍了Kafka作为日志中间件的角色,以及系统的整体架构设计。 Kafka是一个分布式数据流...

    ELK7.x通用教程(Elasticsearch集群+Logstash+Kibana+Beats)

    ELK Stack成为机器数据分析,或者说实时日志处理领域,开源界的第一选择。和传统的日志处理方案相比,ELK Stack 具有如下几个优点: ? 处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程...

    ElasticSearch、Logstash、Kibana

    **ELK Stack**,即Elasticsearch、Logstash和Kibana的组合,已成为近年来机器数据管理和实时日志处理领域的首选开源解决方案。该组合之所以受到广泛欢迎,得益于其独特的特性与优势: - **处理方式灵活**:Elastic...

    大数据+曹永鹏-Mobike大数据平台建设

    具体来说,日志收集通过Logstash、Kafka、Flume-ng实现,离线处理使用HDFS、HBase和Hive进行数据存储与分析,而实时处理则依托于Storm和Spark Streaming技术。此外,为了提高用户体验,Mobike还特别强调实时搜索服务...

    大数据工程师简历3份.docx

    5. **日志收集框架**:熟悉Flume和Kafka的使用,能将它们与Storm和Spark集成,实现数据的实时处理和分发,提升数据处理速度。 6. **Hive数据仓库**:熟练使用Hive进行日志数据的查询和统计,具有数据优化的经验,...

    docs:Java知识总结:MySQL实战45讲,多线程和JVM知识总结,, SpringBoot,SpringCloud,Storm系列,微信小程序开发,ELK,《 JAVA核心技术36讲笔记》,《深入理解JVM虚拟机笔记》 ,《高级MySQL笔记》,《数据结构与算法》等等

    6. **ELK**:ELK(Elasticsearch、Logstash、Kibana)是日志分析和可视化的一种流行组合,用于收集、处理、分析和展示各类日志数据。 7. **《JAVA核心技术36讲笔记》**:这本书可能覆盖了Java的基础语法、面向对象...

    Strom优化

    可能涉及到收集用户行为数据、分析播放模式、推荐算法等,通过实时处理为用户提供个性化体验。 5. **最佳实践**: - **代码优化**:避免在Bolt的execute方法中进行耗时操作,尽量保持轻量级。 - **资源调度**:...

    kafka使用简介.docx

    例如,结合 Storm 或 Spark 实现实时数据处理,结合 Hadoop 进行批量分析,或者与 Elasticsearch、Logstash 等工具构建 ELK 日志分析栈。 总之,Kafka 以其高效、灵活的特性在大数据领域扮演着重要角色,理解并掌握...

    大数据平台设计文档

    使用ELK(Elasticsearch, Logstash, Kibana)堆栈进行日志收集和分析;通过YARN或Kubernetes进行资源调度,确保集群资源的高效利用。运维自动化和安全性也是重要关注点,例如,使用Ansible进行配置管理,实施严格的...

    4496_txt_

    10. 监控和日志:系统应有监控和日志记录功能,以便在出现问题时追踪错误和调试,例如使用ELK Stack(Elasticsearch, Logstash, Kibana)或Prometheus + Grafana。 综上所述,"4496_txt_"很可能是一个专注于实时...

    大数据工程师简历3份.pdf

    5. **日志收集与分析**:熟悉ELK技术栈,包括Elasticsearch和Logstash的整合使用,这对于日志管理和数据分析非常关键。 6. **数据迁移**:掌握Sqoop工具,能进行跨存储介质的数据迁移,这对于数据集成和迁移项目...

    大规模分布式系统架构与设计实战.完整版

    1. 日志收集与分析:如ELK Stack(Elasticsearch、Logstash、Kibana),用于收集和分析系统日志。 2. 监控工具:Prometheus和Grafana组合,实时监控系统性能指标。 3. 调优策略:例如缓存策略、数据库索引优化、网络...

Global site tag (gtag.js) - Google Analytics