背景
为了监控线上环境核心服务的错误率、影响用户量、错误原因并且可以拿到一些兼容性的数据。
如我们得到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
安装依赖
开发环境启动
生产环境编译
最后放张预览图
领取专属 10元无门槛券
私享最新 技术干货