13消费预警平台项目之舍弃Redis+echarts3,选择InfluxDB+Grafana
作者头像
  • 黑科技数码
  • 2019-10-25 14:08:08 0
  1. 最终选择Redis作为存储方案,主要有四个原因:

    • Redis是一种高效的键值存储系统,数据主要存储在内存中,因此具有很高的读写速度。
    • 它支持多种数据类型,例如集合(set)、有序集合(zset)、列表(list)、哈希(hash)和字符串(string)。
    • Redis具备过期策略,可以自动管理过期数据。
    • 此外,网络上关于Spark Streaming和Redis结合使用的教程非常多,这些资源可以互相参考借鉴。

    至于缺点,在最初阶段还没有充分考虑到。

  2. 接下来,在代码中添加了CDHRolelog.class类,并将Redis模块集成进来。这样计算结果(此次使用Spark Streaming和Spark SQL,之前的版本仅使用Spark Streaming)就能存储到Redis中。存储到Redis中的数据有两种格式:

    • 第一种格式,键(key)是机器名称、服务名称和日志级别的组合字符串,例如“hadoopnn-01namenodeWARN”。值(value)的数据类型是列表(list),并且存储为JSON格式,例如: [{"timeStamp": "2017-02-09 17:16:14.249", "hostName": "hadoopnn-01", "serviceName": "namenode", "logType": "WARN", "count": "12"}] 相关代码可以从以下链接下载并导入IDEA中运行: https://github.com/Hackeruncle/OnlineLogAnalysis/blob/master/onlineloganalysis/src/main/java/com/learn/java/main/OnLineLogAnalysis3.java

    • 第二种格式,键(key)是时间戳,例如“2017-02-09 18:09:02.462”。值(value)包含多个JSON对象,每个对象包含主机名、服务名和日志级别,以及相应的计数,例如: [{"host_service_logtype": "hadoopnn-01_namenode_INFO", "count": "110"}, {"host_service_logtype": "hadoopnn-01_namenode_DEBUG", "count": "678"}, {"host_service_logtype": "hadoopnn-01_namenode_WARN", "count": "12"}] 相关代码可以从以下链接下载并导入IDEA中运行: https://github.com/Hackeruncle/OnlineLogAnalysis/blob/master/onlineloganalysis/src/main/java/com/learn/java/main/OnLineLogAnalysis5.java

  3. 在可视化方面,我们选择了AdminLTE、Flask和Echarts3框架,计划从Redis实时读取数据,并动态生成图表。

  4. 在实际开发过程中,经过大约一周的研究,发现前两种存储格式并不完全符合我们的需求,因此决定停止开发可视化仪表盘。

  5. 最终,我们选择了InfluxDB和Grafana作为存储和可视化工具,以及预警系统。

  6. InfluxDB是一种专门针对时间序列数据的数据库,可以在以下文档中找到更多详细信息: https://docs.influxdata.com/influxdb/v1.2/

  7. Grafana则是一个强大的可视化组件,更多信息可以在以下链接中找到: http://grafana.org/ https://github.com/grafana/grafana

    本文来源:图灵汇
责任编辑: : 黑科技数码
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
预警舍弃InfluxDBechartsGrafana选择消费项目Redis平台
    下一篇