专栏首页一猿小讲别人家的 InfluxDB 实战 + 源码剖析

别人家的 InfluxDB 实战 + 源码剖析

1

前几次的分享,我们多次提到了下图中 Metrics 指标监控的 Prometheus、Grafana,而且 get 到了 influxdata 旗下的 InfluxDB 的入门技能。

本次,我们去看看别人家(流式处理框架 flink) 是怎么用 InfluxDB 的?并尝试把 InfluxDB、Grafana 这些轮子组装在一起,看看组装之后的车子能否跑起来?

2

个人认为,做技术的不要一味追求纸上谈兵,如果不会学以致用,都是在扯淡,所以学习任何一门技术,先会用才是硬道理。

接下来一起去看看 Flink 与 InfluxDB、Grafana 这些轮子组装在一起,组装之后的车子是否能够跑顺溜?

组装轮子之前,先贴两张图,帮你回忆一下 InfluxDB 和 Grafana。

图一:InfluxDB 入门宝典。

图二:Grafana 展示监控数据效果图。

InfluxDB 和 Grafana 如何安装?如何使用?之前已经分享过,不在这里赘述,下面着重介绍 Flink 与 InfluxDB、Grafana 轮子的集成。

磨刀霍霍。二话不说,直接打开一手的 flink 官方文档,按照步骤做就是啦。

https://ci.apache.org/projects/flink/flink-docs-release-1.8/monitoring/metrics.html

图中标注 1,进入 flink 的主目录,然后拷贝 opt 目录下的 flink-metrics-influxdb-1.8.0.jar 到 lib 目录下。

图中标注 2,进入 conf 目录,打开 flink-conf.yaml 配置文件,加入图中标注 2 的配置信息,注意修改成符合你所需的配置,配置解释如下。

到这儿,flink 与 InfluxDB 就算集成到一起了,看看组装之后,能否顺溜的跑起来。

启动 flink,并让 flink 做点计算任务,例如 WordCount。

连接上 InfluxDB,确认一下 flink 产生的 metrics 数据,是否写入到 InfluxDB 中啦?

命令操作猛如虎。

influx
use flink # 如果不存在,记得创建呦
show MEASUREMENTS
select * from jobmanager_Status_JVM_CPU_Load

实际效果让人欢。

见此景,足矣说明 flink 与 InfluxDB 集成的很完美,车子跑的很顺溜。

另外,建议提前在 influxdb 中创建 flink 数据库,不然会提示如下信息。

WARN  org.apache.flink.runtime.metrics.MetricRegistryImpl           - Error while reporting metrics
org.apache.flink.metrics.influxdb.shaded.org.influxdb.InfluxDBException$DatabaseNotFoundException: database not found: "flink"

趁热乎劲,顺道把 InfluxDB + Grafana 轮子的集成到一起,看看啥效果?

完成配置,点击“Save & Test”按钮进行保存和测试,成功会提示“Data source is working”。

然后,就可以在 Grafana 上看到 InfluxDB 中 flink 的所有表,进而 flink-metrics 监控数据,也就很顺溜的呈现出来。而且你也可以根据个人需求,自定义 dashboard 或者去 Grafana 官网导入一些定义好模板。

到这儿,Flink + InfluxDB + Grafana 轮子也就组装完成了,而且组装之后的车子,也跑的相当好。

此时,你是否会好奇车子背后是如何运作的呢?好奇害死猫,满足你的好奇心。

3

数据流向很简单,Flink 定义了 InfluxdbReporter,用于定时把 flink-metrics 写入到 InfluxDB 数据库中,然后 Grafana 查询 InfluxDB 进行数据计算并呈现。

flink 中 InfluxReproter 源码定义如上图所示,标注 1 的代码段,很显然是获取开篇提到的 flink-conf.yml 中配置配置信息,然后连接 InfluxDB 数据库;标注 3 的代码段,完成释放资源,关闭 InfluxDB 数据库连接;标注 2 的代码段,主要是调用 buildReport() 方法封装上报数据,并完成 flink-metrics 写入 influxDB。

上面截图,metrics 几个核心度量指标(gauges、counters、histograms、meters)再次呈现在我们面前,主要是调用 influxdb 提供的 API 进行指标数据封装。

为了从全局上看的更清楚一些,一张 InfluxdbReporter 继承实现关系图,贴给大家。希望大家结合《实践指路明灯,源码剖析flink-metrics》那篇文章去理解,会理解的更清晰。

4

学技术,先在会用的前提下,再逐渐进行深入剖析,最后做到灵活运用。

基于当下流行的流式处理框架 flink 的源码剖析,相信会对你有所帮助,尤其是自研的场景下,很多代码可以拿去复用,它山之石可以攻玉

好了,本次的分享就到这里,每天进步一点点,前进不止一小点,希望你们有所获。

本文分享自微信公众号 - 一猿小讲(yiyuanxiaojiangV5),作者:一猿小讲

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 妈妈再也不用担心,我学不会大数据 flink 啦

    面对霸气侧漏的业务需求,由于没有大数据知识储备,咱心里没底,咱也不敢问,咱也不敢说,只能静下来默默储备、默默寻觅解决方案。

    一猿小讲
  • 监控实战Prometheus+Grafana

    这期的分享是监控实战,其实不想写这篇的,因为网上相关的文章也挺多的,但是出于光说不练都是假把式,而且也想告诉你:当帅气的普罗米修斯(Prometheus)遇到高...

    一猿小讲
  • 谈树,2020 希望有所建「树」

    数据结构是 10 年前大学里学的一门课程,也是我北漂唯一携带的一本书。幸运的是,书还没有被孩子给撕碎。

    一猿小讲
  • 高性能网络编程3----TCP消息的接收

    这篇文章将试图说明应用程序如何接收网络上发送过来的TCP消息流,由于篇幅所限,暂时忽略ACK报文的回复和接收窗口的滑动。

    bear_fish
  • 高性能网络编程3—-TCP消息的接收

    这篇文章将试图说明应用程序如何接收网络上发送过来的TCP消息流,由于篇幅所限,暂时忽略ACK报文的回复和接收窗口的滑动。

    陶辉
  • vscode中调试vue工程

    第一步: 首先确保 Chrome浏览器已正确安装,并在 vscode 中添加 vscode-chrome-debug 插件;

    奋飛
  • 北京邮电大学数据科学中心正式揭牌

    大数据文摘
  • 美国商务部拟定出口技术管制条例,严格限制AI、量子计算等关键技术

    美国商务部工业和安全署(BIS)通过出口管理条例(EAR),包括《商业管制清单》(CCL),控制军民两用和不太敏感的军品的出口。商务部出台了一份出口管制规则,并...

    AiTechYun
  • ios 扩大UIButton点击范围

    先了解Hit-Test请看上一篇文章 https://www.jianshu.com/writer#/notebooks/4989829/notes/3314...

    赵哥窟
  • 速读原著-TCP/IP(用Traceroute确定路径MTU)

    尽管大多数的系统不支持路径 M T U发现功能,但可以很容易地修改 t r a c e r o u t e程序(第8章),用它来确定路径 M T U。要做的是发...

    cwl_java

扫码关注云+社区

领取腾讯云代金券