企业内部我们有一套SSO单点登录系统,系统会为每个员工注册一个账户,可以通过账户密码、企业微信扫码或者微信扫码等方式登录。统一登录,不仅仅是解决了登录不同系统之间的账户密码和登录方式问题,还更方便系统之间的相互跳转和接口请求。
(2) 加入内部导航黄页在内部的导航页加入我们的项目,大家使用方便进入。
(3) 本地日志系统前端监控系统的node后端服务,也会产生服务的本地日志。通过存储日志到约定目录,运维服务将会帮我们收集,并且提供了两个查询系统:finder和elasticsearch。finder按照时间和文件夹结构划分,它的查看视角就像直接通过服务器看本地的日志一样,大部分时候我们更习惯用它。 elasticsearch主要适合搜索的方式查询。
(4) APM系统 skywalking前端监控系统的node后端服务,除了系统本地产生的运行日志,它同样应该被后端的监控系统所监控。APM应用性能管理,目的是通过各种探针采集数据,收集关键指标,同时搭配数据呈现以实现对应用程序性能管理和故障管理的系统化解决方案。我们企业内部统一使用skywalking,我们的大部分服务主要是java。skywalking提供了node探针,使我们的项目也能够接入。接入之后,我们便可以通过skywalking管理台查询到后端node服务的性能以及调用情况了。
traceId,APM工具会在服务端生成traceId,它标示一次调用的上下文id,通过此id可以查询所做事情的足迹链。后端服务可以通过前端http请求把这次调用的traceId通过响应头返回给客户端。前端监控的前端SDK探针便可以收集traceId,通过收集到它,前端监控就可以打通后端监控。在前端监控管理后台,我们不仅可以看到前端的监控网络日志,还可以通过traceId查询到后端链路信息。
(5) 告警平台前端监控系统需要实时或定时的推送一些告警邮件等,内部告警平台提供了告警策略配置、并会拉取前端监控数据。接入告警平台可以减轻前端监控系统本身的刚需工作量。
(6) 操作日志平台在网关层,操作日志平台可以拦截我们的管理台操作请求,以此来记录用户的系统操作。帮助我们做敏感操作追溯以及报警等。
(7) SPA平台SPA平台是公司内部自研的静态资源发布平台,可以通过它半自动化管理业务项目,配置注入、静态资源管理等。前端监控在收集到压缩代码的报错时,需要通过sourceMap文件解析转换为源代码。大部分前端监控方案,需要手动上传sourceMap文件到监控系统,使用SPA平台后,资源被统一管理,我们可以通过内部配置直接把sourceMap文件存放在约定的位置,免去业务方手动上传,提高了易用性。
当我们的系统的功能都已经实现,关联系统也成功融合以后,程序要稳定友好的运行在线上,还需要我们的运维服务来保驾护航。
2.3 高效运维日志抓取
自动化构建
容器化
负载均衡
健康检测、安全关闭
等等
健康检测、安全关闭前端监控随时都会收到业务方上报的数据,这个系统在重启的时候,必须保障服务不间断,也要保障在关闭的时候,是安全的不会丢失数据。当我们更新了代码,重新构建的时候,首先会预先启动新的容器,当新的容器启动完成后,逐步关闭替换旧的服务,旧服务也会在关闭前收到通知,停止接收新处理任务,当所有正在执行的任务处理完后再被关闭。
一个完整的线上系统,离不开运维服务,它做的很多事情、甚至是我们平时不知道的,我们开发人员应当关注并了解它。
2.4 小结内部的独立系统,各自负责某块任务,系统之间互相关联,运维服务保驾护航,构建了企业内部的生态环境,减少了很多重复的工作,也同样可以让某一个领域的系统做的更加深入和完善。
目前我们已经介绍了前端监控系统的需求背景和系统的构成情况,下一节我们将会稍微详细的说明一下我们最核心的数据收集与分析。
三、数据收集与分析 3.1 数据收集