网关开发工做中不免会监控nodejs服务器的运行状况,nodejs的进程运行以及流量咱们可能会使用grafana来展现,下图是展现咱们其中一个网关项目的运行状态(包括CPU、内存、堆栈使用、Event loop的延时状况以及GC状况(GC的截图放不下了~)):node
了解这块的童鞋可能知道Kibana,不少人大部分拿kibana来作日志的聚合收集查询,其实Kibana还有不少牛逼的功能,此次咱们将使用Kibana的图表功能来展现项目的业务数据,手把手教你制做出好看的数据统计图表。bash
咱们先看看效果:服务器
另一个项目:session
上面的工具都是开源的,能够在内网部署,彻底免费,能够给公司节省一大笔开支哦^_^ide
这个准备工做最重要了,决定了你可否展现图表。工具
首先你得须要埋点,把你想要关注的数据以固定的格式写到一个指定的文件中,咱们通常写在bigdata
目录下,好比第一张效果图中关注的是服务器请求的一些数据,因而咱们使用代码埋点成这样相似的格式:oop
使用固定的格式(这个格式是你和大数据团队约定好的格式),以及固定的字段,上图中的字段包含了这些:path、riderId、cityId、type、incoming、timestamp、pid、hostname、status、cost等等,只要你想关注的字段均可以埋点进去。大数据
埋点的代码更简单了,在每一条请求进来的地方和出去的地方放上一段代码(仅供参考):ui
this._statLogger.info({ // 这里的_statLogger是一个winston实例
path: req.path,
riderId: req.session.riderId,
cityId: req.session.cityId,
type: 'incoming'
})
...
this._statLogger.info({
path: req.path,
riderId: req.session.riderId,
cityId: req.session.cityId,
type: 'outcoming',
status: 'success',
cost: Date.now() - start
})
复制代码
最后生成的数据即是上图的效果。this
这一部分由于是交给大数据团队的童鞋搞的,因此具体怎么操做我也不知道(捂脸哭~)。若是实在没大数据团队,谷歌一下总有解决办法的,能够查阅官网文档:elastic,实在不会的留言给我吧,我帮大家去问问看~
反正最后咱们要的效果是这样的:
因而万事具有,只欠配置了~
Kibana侧边栏有两个菜单是用来制做和展现图标用的,以下图:
点击Visualize
以后,咱们能够看到有个+
的按钮,点击加号以后,能够看到kibana提供了众多的图表展现:
限于篇幅,咱们只讲几个经常使用的图表的配置方法,其余的图表你们能够触类旁通。其中有一个地图功能,作起来的效果也是一点不差的,以下图:
在以前的效果图中,咱们利用饼图来直观描述发送请求的成功与失败比例,在后一张效果图中,咱们用来表示长链接消息发送类型的分布比例,因此涉及到比例展现的无疑使用饼图是最佳方案。
选中饼图以后或者说是选中制做的某种类型图表以后kibana都会让你选择展现图表使用的哪个项目,以下图:,还贴心地问你是否从已有的图表中fork出来
咱们选择好项目以后就到这样的一个界面:
因而咱们开始配置,记得点击上图红框中的配置(上图的kibana是新版的Version: 6.5.4
,点击的配置叫作Split Series
,而旧版本的kibana界面(Version: 5.6.3)点击的配置叫作Split Slices
),配置结果以下:
而后点击上图实例箭头所指的三角形,就能够看到效果:
若是咱们想指定的时间范围或者其余过滤条件,界面的最上面模块你可使用到:
接下去的一些图表就再也不说这么详细了,罗列出对应的配置便可。
折线图来展现上述效果图中每一条请求在单位时间内的个数,利用kibana的分类功能,咱们使用下面的配置:
实现以下的效果:
柱状图适合作一些对比或者趋势性的展现,这里咱们使用柱状图来展现几个大城市的请求量或者展现每一个城市长链接实时在线人数,配置以下:
效果以下:
这个时候咱们就用到左边菜单栏中Dashboard
,咱们点击加号一样来到新建的界面:
点击Add以后就会弹出想要展现的面板:
以后你能够将同一个项目的全部面板汇聚在一块儿,从而就有最早开始的两张效果图
因而大功告成~
好了,目前我用到的也就这三种,其余的图表的展现其实都一个道理,相信你们能够触类旁通,作成更多酷炫的图标供团队使用。有问题欢迎留言讨论~
若是你们对grafana的配置也感兴趣的话,能够下次再写一篇介绍grafana使用的文章~