24H玩转 Grafana 被工程师称相当专业,如何做到?
国庆假期发生了两件小事,其一是我默默度过 35
周岁生日,其二是玩了下grafana
`并在节后第一天被工程师 M 称赞:相当专业。
1、我为什么要玩 grafana
呢?
数月前我提交了一份数据后台需求给工程师 M,他选用和部署了 grafana
这个第三方开源的工具,仅用两三天就完成了这份需求。这效率相当快,令我对 M 和 grafana
印象深刻。但我仍不满足,M提交的成品所有数据都图形化的而我更想要表格样式的数据。为了进一步整合其它数据进行统计分析,我还需手动导出数据,并写了复杂的 python
脚本用 pandas
做统计分析,每周至少运行一次。我常常冒出新的数据需求,它们并不大,但走一遍需求评审、排期开发验收的流程,似乎还挺麻烦的。
这些都还只算铺垫,真正的导火索是国庆假期前的 sprint
总结会上提及我们几个产品的数据将整合到 grafana
统一实现。 CTO 曾对我提及如果我懂些 sql 语句,可以自己写。——哈?我懂点 sql 语句的吖,这不刚整理了一份笔记《【总结】python如何与mysql实现交互及常用sql语句》嘛。我处于 “sql 不过如此,放马过来啊”的大无畏状态-_-||
国庆假期来了,那就玩玩儿看呗。
2、短时间如何上手 grafana
?
M之前为了开发我的需求,已经完成了 grafana
的部署,并设置好了数据源
。这次他专门创建了一个练习用的 dashboard
并开通编辑权限给我。特别说明,我的编辑权限仅有数据源的查询权,没有增删改的权限,这对数据源是安全的。另外,M 已有的实现也让初次上手的我可以照葫芦画瓢。这些是我比完全零准备的 grafana 新手占便宜的地方。
我并不想把 M 已经开发的需求重新实现一遍,我想要实现自己的数据需求。——想要什么数据,以什么样式呈现,我脑子里的需求俯拾即是。
学习过程具体分为三个部分:
- A:熟悉和了解
grafana
在 dashboard 上如何添加、编辑图表等模块,就是了解这个工具如何使用。 - B:熟悉和了解 数据源(我们产品的数据库),有哪些表,有哪些字段之类。
- C:实现数据需求的 sql 语句该如何写。
A 部分,搜了两篇 grafana 如何使用
之类的文章,大概浏览下即可。总是照着别人整理的步骤图按部就班,学习体验不好。大部分时候,我都是直接鼓捣。这种开源的可视化的工具,自己尝试一下就能快速熟悉起来。
B 部分,当个伸手党,让工程师帮忙把所有表格 describe 导出也 OK 的;M给我的是一份表格的类定义文件。通过 A 部分的探索,我很快发现,在 dashboard 上创建一个模块,如果选择折线图类型,sql 语句编辑区可以任人挑选表格名称,这样有哪些数据表格就清楚了;如果选择表格类型,并使用select * from table_name limit 50
,就能呈现该表的部分数据,这样该表格有哪些字段也就清楚了。
C 部分,我把 M 之前实现的 sql
语句单独拷贝到 jupyter notebook
里,自己拆解为更基础的知识点,然后一点点熟悉了解。一个小技巧是,对于新手来说 sql 语句的易读相当重要,能直接降低复杂度。所以我采用 markdown
语法如下,语法呈现就很清晰了:
以上三个部分无需按顺序进行。自己对哪个模块更感兴趣,就先开始哪个;过程中也可交叉轮换进行。接下来就是通过实现自己的数据需求,反复重复巩固并深入 以上 3 个部分,直至产生令自己满意的产出。为此投入的时间开销24~48H
足够啦,完全不耽误假期陪家人、睡懒觉、看电影。
3、对职场分工保持清醒
最后需要强调一下,我很清楚自己并不想要取代工程师完成数据后台的开发。比如:
1、一些复杂需求,我自己写sql
,很难,学起来也慢。这些我会陆续收集罗列出来,走排期,请工程师帮忙,不会自己硬钻进去。
2、即便最终我完成了非常多的图表,但实际上我只考虑实现,不考虑性能(也暂无能力考虑),所以即便是我写出来的功能,也需要工程师把关和优化。
即便如此,我直接接触数据源并动手用 grafana
实现,也有很显著的好处:
1、我更清楚原始数据已采集了哪些,哪些指标是我可以定义和统计的,哪些是需要工程师进一步支持的。
2、一些相对简单的、对业务有帮助的数据监控/统计,我能直接实现。无需 整理描述需求-和工程师沟通-工程师理解后实现-我再验收这样复杂的过程。
3、作为需求的发起者,我那些不成熟的需求,自己动手过程中迭代起来也会非常效率。
当然这些想法是需要和工程师、上级沟通清楚的,这样才不至于产生误解吖。如果我的笔记对你有帮助,那就点赞或留言告诉我吧!
24H玩转 Grafana 被工程师称相当专业,如何做到?的更多相关文章
- telegraf 学习三 telegra inputs.net_response + smtp2http+ grafana 进行tcp服务状态监控
以下演示一个简单的使用telegra inputs.net_response 进行tcp 服务状态的监控,统计集成grafana 的alert 为了方便使用了一个smtp2http 的服务,对于htt ...
- 能写数据后台,需要掌握哪些进阶的sql语句?
国庆假期花了一些时间,首次尝试并玩转 grafana,这几天继续不断优化和完善,如今看着自己的成果,相当满意.--逐步接近我想要的理想后台啦. 需求是不停歇的.今天我又给自己发掘了一些新需求,比如变量 ...
- Uber从Postgres切换到MySQL
Uber工程师在官方博客上描述了他们为什么要从 Postgres 切换到 MySQL 数据库.Uber的早期架构是由 Python编写的后端应用构成,使用了 Postgres 数据库.但此后,Uber ...
- Facebook发布C++ HTTP框架Proxygen
Facebook 宣布发布C++ HTTP 框架 Proxygen,其中包括了一个 HTTP server.Proxygen 是 oxygen 的谐音,支持 SPDY/3 和 SPDY/3.1,未来还 ...
- Firefox 新增容器标签:可同时登录多个用户
Mozilla昨天在Firefox夜间构建版50.0a1中增加了一个名为“容器标签Container Tabs”的实验性功能. Mozilla的工程师称,该功能可以将用户的浏览会话分到不同的容器中.这 ...
- 第四次工业革命:人工智能(AI)入门
转载自 http://www.infoq.com/cn/articles/the-fourth-industrial-revolution-an-introduction-to-ai "过去 ...
- Android Studio和MAT结合使用来分析内存问题
Android开发中时常会遇到内存泄漏的问题,而Android系统对单个App又有一定的内存限制,此值可以通过一下方式获取: ActivityManager am = (ActivityManager ...
- HUAWEI HiAI亮相华为开发者生态大会 助力应用AI开发实现加速度
6月23日,在2018华为终端·全球合作伙伴及开发者大会AI分论坛体验区的一角,被层层叠叠的人群围得水泄不通.站在最前面的一名体验者,正跟随着“快手短视频”APP上不断出现的小人左右扭动,每完成一个动 ...
- SpringBoot集成prometheus
1.Prometheus 1)介绍 Prometheus是一套开源的监控&报警&时间序列数据库的组合,基于应用的metrics来进行监控的开源工具 . 架构图: 2)下载 https: ...
随机推荐
- js传对象处理
JSON.stringify(carlist); 需要先将对象进行处理:如果服务端解析异常,可以先将这个值单独解析一次
- cloneable以及深拷贝和浅拷贝
Objec类有11个方法,有两个protected的方法,其中一个为clone方法(另一个为finalize). 该方法的签名是: protected native Object clone() th ...
- JavaScript初探系列(八)——DOM
DOM(文档对象模型)是针对HTML和XML文档的一个API,描绘了一个层次化的节点树,允许开发人员添加.删除和修改页面的某一部分. HTML DOM 树形结构如下: 一.Node方面 (一).节点类 ...
- [asm] 小菜汇编基础和学习技巧小结(一)
以下小结纯属小菜自学过程产生的dump,大神请飘过! 汇编是一门庞大复杂的学问,在计算机的世界里差不多无所不入.很多编程领域都会或多或少跟汇编打交道.本人不是科班出身的程序员,所以很多基础都为零,学历 ...
- 范仁义html+css课程---11、html补充知识
范仁义html+css课程---11.html补充知识 一.总结 一句话总结: 小于号(<):< 大于号(>):> 空格: 二.html 字符实体 1.小于号(<)和大 ...
- linux查找历史命令
1.ctr+r 输入搜索关键词 2.&history 3.上箭头翻看
- java--poi读取excel图片和内容(支持03版本)
有的时候需要将excel中所包含的图片在导入的时候取出来存到服务器中, 详细实现代码如下: package com.liuf.util; import java.io.BufferedInputStr ...
- electron---更改安装图标
在用electron开发桌面端的时候,打包成exe文件,需要更改默认的图标: 具体做法: 在根目录新建新建存放icon图标的目录: 需要两个icon:icon.icns,icon.ico 注意: 1. ...
- C++ unordered_set运用实例
C++ unordered_set运用实例 #include <unordered_set> #include <numeric> #include "print.h ...
- C++ Multimap运用实例
C++ Multimap运用实例 #include <map> #include <string> #include <iostream> #include < ...