线上质量监控

背景

为了监控线上环境核心服务的错误率、影响用户量、错误原因并且可以拿到一些兼容性的数据。

如我们得到App的订阅文章,经常有用户反馈打不开。但因为涉及到三端,Android/iOS去请求服务端获取数据,然后由H5渲染文章页。问题不容易定位。

目前刚开始做,规划中以后要统计所有网络请求、播放器、电子书、订阅文章等核心服务的线上监控,目前只做了订阅文章的,还是demo阶段。

数据来源:Android、iOS和H5的用户埋点数据。

除了埋点中的一些核心字段,如设备、用户、网络、文章数据等,还增加了几个特殊字段。

用到的一些技术:

后端的代码不好脱敏,不会开放代码。前端vue2的部分会放出来,地址在最下面。

ELK

使用的版本:

elasticsearch-5.6.2

kibana-5.6.2-linux-x86_64

logstash-2.4.1

安装部署略过了,只说下如何配置

elasticsearch

服务的配置文件在config/elasticsearch.yml,我只改了network.host字段,改成你要绑定的ip,端口默认9200。

性能优化更改config/jvm.options

logstash

创建一个配置文件,比如就叫kafka_maidian_log.conf,配置如下

然后执行./bin/logstash -f kafka_dedao_log.conf启动,现在筛选的埋点日志就已经开始往elasticsearch存储了。

kibana

配置文件在config/kibana.yml,修改elasticsearch.url字段,改成http://elasticsearchip的 + port

Flask后端

定时去读取elasticsearch(一天一次),拿到想要的数据保存mysql。

查询elasticsearch的部分核心代码

连接elasticsearch

查询elasticsearch

如果读取elasticsearch的size特别大,容易失败,所以我设置的最高10000条,如果超过了,则可以用elasticsearch的分页查询。

定时任务的部分核心代码

拿到elasticsearch的数据,存储mysql

定时任务初始化配置代码。包括要执行的job,以及需要把定时任务持久存储到MongoDB。

app.py里加载定时任务执行器

Vue2 前端

这块就不多做介绍了,主要用的Vue.js 2 + vue-router + webpack2 + iView 2 + highcharts

然后用的一个叫iview的组件库,非常棒,写页面so easy,地址:https://www.iviewui.com/docs/guide/install

报表主要用的highcharts,地址:https://www.hcharts.cn/demo/highcharts

github地址:https://github.com/xiaoluosun/vue-monitor

安装依赖

开发环境启动

生产环境编译

最后放张预览图

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180122G03PBA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券