文档章节

实时收集Storm日志到ELK集群

九劫散仙
 九劫散仙
发布于 2016/11/22 19:02
字数 841
阅读 129
收藏 6
点赞 1
评论 0

背景

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

技术选型

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

需求分析

序号讨论内容
1storm需要收集的日志(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!

image

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

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

输入图片说明

© 著作权归作者所有

共有 人打赏支持
九劫散仙
粉丝 261
博文 175
码字总数 189625
作品 0
海淀
超人学院第九期大数据高薪就业班招生了

超人学院第九期 大数据高薪就业班招生了 超人学院第九期大数据高薪就业班开始招生了,课程加量不加价,还设有奖学金。亲,还等什么呢,赶快来报名吧!! 我们来看看课程具体内容 课程主题 课...

超人学院
2015/07/23
0
0
使用logstash+elasticsearch+kibana快速搭建日志平台

日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日志详情 监控系统的运行状况 统计分析,比如接口的调用次数、执行时间...

eddy_linux
2015/11/13
0
0
超人学院大数据高薪就业班第七期精彩课程抢先看

超人学院大数据高薪就业班第七期火爆招生中,新的一期,内容部不断增加,还有更多优惠呦,精彩内容抢先看: 1、Linux课程:如果你没有使用过Linux,别担心,本内容让你轻松入门,讲解Linux基...

超人学院
2015/04/30
0
0
当ES赶超Redis,这份ES进修攻略不容错过!

从4月DB-Engines最新发布的全球数据库排名中,我们赫然发现ElasticSearch逆袭超越了Redis,从原先的第9名上升至第8名,而Redis则落后一名,排在了其后。 事实上,这场逆袭并不算太让人意外。...

DBAplus社群
04/15
0
0
Spark2.x写入Elasticsearch的性能测试

一、Spark集成ElasticSearch的设计动机 ElasticSearch 毫秒级的查询响应时间还是很惊艳的。其优点有: 1. 优秀的全文检索能力 2. 高效的列式存储与查询能力 3. 数据分布式存储(Shard 分片) 相...

openfea
2017/10/27
0
0
Linux基础简述(含CentOS镜像获取地址)

初级之路: 中级之路: 高级之路: Linux的三大主流发行版 Slackware: Debian: Redhat: LFS:Linux From scratch(这是一本书,指导怎么写Linux) 各种开源协议 程序包管理器 rpm: dpt: 自由...

yard521
07/01
0
0
建设DevOps统一运维监控平台,先从日志监控说起

前言 随着Devops、云计算、微服务、容器等理念的逐步落地和大力发展,机器越来越多,应用越来越多,服务越来越微,应用运行基础环境越来多样化,容器、虚拟机、物理机不一而足。 面对动辄几百...

stars永恒
04/26
0
0
CTO详细讲解海量日志处理ELK

ELK实时日志分析平台之Elasticsearch简介 Elasticsearch是一个高度灵活的开源全文检索和分析引擎。它能够迅速(几乎是实时地)地存储、查找和分析大规模数据。通常被用在有复杂的搜索要求的系...

Java架构分享
05/23
0
0
CentOS7.3下ELK日志分析系统集群搭建

Elasticsearch是个基于Lucene实现的开源、分布式、restful的全文本搜索引擎,此外他还是一个分布式实时文档存储,其中每个文档的每个filed均是可被索引的数据,且可被搜索,也是一个带实时分...

wujunqi1996
07/14
0
0
小白都会超详细--ELK日志管理平台搭建教程

目录 一、介绍 二、安装JDK 三、安装Elasticsearch 四、安装Logstash 五、安装Kibana 六、Kibana简单使用 系统环境:CentOS Linux release 7.4.1708 (Core) 当前问题状况 开发人员不能登录线...

渣渣辉
07/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

ES15-JAVA API 索引管理

1.创建连接 创建连接demo package com.sean.esapi.client;import java.net.InetSocketAddress;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.clien......

贾峰uk
5分钟前
0
0
单点登录的设计,从单域名到多域名(经验分享)

个人实践总结,最初的的需求,多个产品线都在同一个根域名下面。 独立的用户中心分离,单独负责用户登录和用户信息获取、变更等处理逻辑。 第一步,用户登录成功,分配给用户一个memToken(令...

小海bug
7分钟前
0
0
合格前端第十二弹-TypeScript + 大型项目

写在前面 TypeScript 已经出来很久了,很多大公司很多大项目也都在使用它进行开发。上个月,我这边也正式跟进一个对集团的大型运维类项目。 项目要做的事情大致分为以下几个大模块 一站式管理...

qiangdada
10分钟前
0
0
编程学习之如何在Node.js中优化服务器端渲染?[图]

编程学习之如何在Node.js中优化服务器端渲染?[图] 在 Airbnb,我们花了数年时间将所有前端代码迁移到 React 架构,Ruby on Rails 在 Web 应用中所占的比例每天都在减少。实际上,我们很快会...

原创小博客
12分钟前
0
0
gradle学习笔记

相关文档 适合新手的 gradle 自学教程合集 Gradle教程

OSC_fly
27分钟前
0
0
Virtual Serial Port - RFC2217

Virtual Serial Port for Linux RFC-2217 The COM Port Control Protocol pyserial - RFC 2217 NetSerial - Windows Telnet COM Port - RFC Official Using Python, How do I make a virtual......

zungyiu
34分钟前
0
0
全球的IPv6部署急剧增加,中国进度较慢

导读 全球的IPv6部署继续增加,但中国在IPv6方面还需要努力,从部署图上分析,中国几乎没有几个地方是普及IPv6的。这6年来,自世界IPv6发布以来,全球网络和服务提供商的IPv6部署水平急剧增加...

问题终结者
38分钟前
1
0
好看的电影记录

星际迷航三 狂暴之路 新木乃伊 黑夜传说 铁血战士2

xd03122049
41分钟前
0
0
记录Yii2框架开发遇到微信错误提示

转载地址 记录Yii2框架开发遇到微信错误提示 微信公共号开发,提示“该公众号暂时无法提供服务,请稍后再试”,如何解决? 以前使用Yii框架的时候,并没有像Yii2,以前的Yii框架似乎用起来在...

durban
43分钟前
1
0
LSM树(Log-Structured Merge Tree)存储引擎浅析

其实每一种数据库,它都是一种抽象的数据结构的具体实现。 随着rocksDB(facebook的),levelDB(google的),以及我们熟知的hbase,他们都是使用的LSM树结构的数据库。 它的核心思路其实非常...

算法之名
57分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部