- 浏览: 2183907 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (682)
- 软件思想 (7)
- Lucene(修真篇) (17)
- Lucene(仙界篇) (20)
- Lucene(神界篇) (11)
- Solr (48)
- Hadoop (77)
- Spark (38)
- Hbase (26)
- Hive (19)
- Pig (25)
- ELK (64)
- Zookeeper (12)
- JAVA (119)
- Linux (59)
- 多线程 (8)
- Nutch (5)
- JAVA EE (21)
- Oracle (7)
- Python (32)
- Xml (5)
- Gson (1)
- Cygwin (1)
- JavaScript (4)
- MySQL (9)
- Lucene/Solr(转) (5)
- 缓存 (2)
- Github/Git (1)
- 开源爬虫 (1)
- Hadoop运维 (7)
- shell命令 (9)
- 生活感悟 (42)
- shell编程 (23)
- Scala (11)
- MongoDB (3)
- docker (2)
- Nodejs (3)
- Neo4j (5)
- storm (3)
- opencv (1)
最新评论
-
qindongliang1922:
粟谷_sugu 写道不太理解“分词字段存储docvalue是没 ...
浅谈Lucene中的DocValues -
粟谷_sugu:
不太理解“分词字段存储docvalue是没有意义的”,这句话, ...
浅谈Lucene中的DocValues -
yin_bp:
高性能elasticsearch ORM开发库使用文档http ...
为什么说Elasticsearch搜索是近实时的? -
hackWang:
请问博主,有用solr做电商的搜索项目?
Solr中Group和Facet的用法 -
章司nana:
遇到的问题同楼上 为什么会返回null
Lucene4.3开发之第八步之渡劫初期(八)
#### 背景
我们的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),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。
评论
2 楼
qindongliang1922
2016-11-24
woodding2008 写道
storm1.0对日志这块的支持改善了
http://woodding2008.iteye.com/blog/2326358 storm监控
http://woodding2008.iteye.com/blog/2326677 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
http://woodding2008.iteye.com/blog/2326358 storm监控
http://woodding2008.iteye.com/blog/2326677 storm1.0
发表评论
-
复盘一个Elasticsearch排序问题的剖析
2019-07-15 21:12 1169最近线上的es查询的 ... -
elasticsearch里面bulk的用法
2018-04-09 20:23 1424上篇文章介绍了在es里 ... -
elasticsearch里面的关于批量读取mget的用法
2018-04-04 16:01 1834es的api除了提供了基本 ... -
elasticsearch的查询流程分析
2018-04-02 20:29 1330我们都知道es是一个分 ... -
如何在elasticsearch里面使用深度分页功能
2018-03-28 18:13 2022前面的文章提到过es默认的from+size的分页方式返回的结 ... -
如何在Elasticsearch里面使用索引别名
2018-03-27 20:37 1681在elasticsearch里面给index起一个alias ... -
如何优雅的全量读取Elasticsearch索引里面的数据
2018-03-26 20:27 7654### (一)scroll的介绍 有时候我们可能想要读取整个 ... -
关于elaticsearch中更新数据的几种方式
2018-03-21 19:00 968作为一个成熟的框架, ... -
Elasticsearch里面的segment合并
2018-03-20 17:50 2093通过前面的文章,我 ... -
Elasticsearch如何保证数据不丢失?
2018-03-19 20:52 2143上篇文章提到过,在elasticsearch和磁盘之间还有一层 ... -
为什么说Elasticsearch搜索是近实时的?
2018-03-16 19:41 9458通过前面两篇文章的介绍,我们大概已经知道了 Elasticse ... -
Elasticsearch如何动态维护一个不可变的倒排索引
2018-03-15 21:34 1140上一篇文章中介绍了Elasticsearch中是如何搜索文本 ... -
Elasticsearch如何检索数据
2018-03-14 20:11 1072我们都知道Elasticsearch是一个全文检索引擎,那么它 ... -
如何备份ElasticSearch索引数据到HDFS上
2018-02-09 18:19 2424在ElasticSearch里面备份策略已经比较成熟了 ... -
Elasticsearch5.6.4集群搭建
2018-02-07 20:13 1341本次搭建的是一个三节点的集群 (一)es的安装 (1)下 ... -
如何使log4j生成json格式的log
2017-09-15 17:44 3826使用java开发项目时,log日志一般都是应用程序必不可少的一 ... -
理解elasticsearch的parent-child关系
2017-09-04 18:43 2841前面文章介绍了,在es里面的几种数据组织关系,包括array ... -
简述ElasticSearch里面复杂关系数据的存储方式
2017-08-18 20:10 2414在传统的数据库里面,对数据关系描述无外乎三种,一对一,一对多和 ... -
使用Java Rest Client操作Elasticsearch
2017-08-09 19:42 2272Elasticsearch作为一个成熟的开源框架,对主流的多种 ... -
ElasticSearch里面的偏好查询
2017-06-22 17:17 1306在es查询的时候我们可 ...
相关推荐
在ELK集群中,Elasticsearch负责接收、存储和索引来自Logstash的数据,支持快速检索和复杂查询,为日志分析提供了坚实的基础。 Logstash作为数据管道,扮演着数据收集、转换和发送的角色。它可以监听多种输入源(如...
结合ELK的实时搜索和分析能力,以及Spark Streaming的实时处理,可以构建一个强大的日志分析系统,不仅能够快速收集和处理日志,还能提供实时洞察,增强系统的可维护性和业务决策。 7. **应用场景** - 监控数据库...
ELK Stack 在最近两年迅速崛起,成为机器数据分析,或者说实时日志处理领域,开源界的第一选择。 和传统的日志处理方案相比,ELK Stack 具有如下几个优点: 处理方式灵活。Elasticsearch 是实时全文索引,不需要像...
通过将日志输出到Kafka,可以方便地将这些日志与其他系统集成,如ELK(Elasticsearch、Logstash、Kibana)堆栈,实现日志的集中收集、分析和检索。 总之,扩展Logback将日志输出到Kafka是一种常见的日志管理实践,...
3. **监控与日志**:集成监控工具(如Grafana、Prometheus)和日志系统(如Logstash、ELK Stack),实时监控系统性能和错误,及时发现问题并进行优化。 总的来说,"storm-kafka实时趋势分析"是一种强大的实时数据...
【日志收集项目1】是关于构建一个能够处理大规模日志数据的系统,主要涉及到日志的实时收集、存储和分析。在这个项目中,重点介绍了Kafka作为日志中间件的角色,以及系统的整体架构设计。 Kafka是一个分布式数据流...
ELK Stack成为机器数据分析,或者说实时日志处理领域,开源界的第一选择。和传统的日志处理方案相比,ELK Stack 具有如下几个优点: ? 处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程...
**ELK Stack**,即Elasticsearch、Logstash和Kibana的组合,已成为近年来机器数据管理和实时日志处理领域的首选开源解决方案。该组合之所以受到广泛欢迎,得益于其独特的特性与优势: - **处理方式灵活**:Elastic...
具体来说,日志收集通过Logstash、Kafka、Flume-ng实现,离线处理使用HDFS、HBase和Hive进行数据存储与分析,而实时处理则依托于Storm和Spark Streaming技术。此外,为了提高用户体验,Mobike还特别强调实时搜索服务...
5. **日志收集框架**:熟悉Flume和Kafka的使用,能将它们与Storm和Spark集成,实现数据的实时处理和分发,提升数据处理速度。 6. **Hive数据仓库**:熟练使用Hive进行日志数据的查询和统计,具有数据优化的经验,...
6. **ELK**:ELK(Elasticsearch、Logstash、Kibana)是日志分析和可视化的一种流行组合,用于收集、处理、分析和展示各类日志数据。 7. **《JAVA核心技术36讲笔记》**:这本书可能覆盖了Java的基础语法、面向对象...
可能涉及到收集用户行为数据、分析播放模式、推荐算法等,通过实时处理为用户提供个性化体验。 5. **最佳实践**: - **代码优化**:避免在Bolt的execute方法中进行耗时操作,尽量保持轻量级。 - **资源调度**:...
例如,结合 Storm 或 Spark 实现实时数据处理,结合 Hadoop 进行批量分析,或者与 Elasticsearch、Logstash 等工具构建 ELK 日志分析栈。 总之,Kafka 以其高效、灵活的特性在大数据领域扮演着重要角色,理解并掌握...
使用ELK(Elasticsearch, Logstash, Kibana)堆栈进行日志收集和分析;通过YARN或Kubernetes进行资源调度,确保集群资源的高效利用。运维自动化和安全性也是重要关注点,例如,使用Ansible进行配置管理,实施严格的...
10. 监控和日志:系统应有监控和日志记录功能,以便在出现问题时追踪错误和调试,例如使用ELK Stack(Elasticsearch, Logstash, Kibana)或Prometheus + Grafana。 综上所述,"4496_txt_"很可能是一个专注于实时...
5. **日志收集与分析**:熟悉ELK技术栈,包括Elasticsearch和Logstash的整合使用,这对于日志管理和数据分析非常关键。 6. **数据迁移**:掌握Sqoop工具,能进行跨存储介质的数据迁移,这对于数据集成和迁移项目...
1. 日志收集与分析:如ELK Stack(Elasticsearch、Logstash、Kibana),用于收集和分析系统日志。 2. 监控工具:Prometheus和Grafana组合,实时监控系统性能指标。 3. 调优策略:例如缓存策略、数据库索引优化、网络...