为了保证线上服务稳定,线上存在问题进行及时报警,需要能及时监控线上服务情况,已保证系统高可用,为用户提供稳定用户体验。
程序本身需要透明化整个系统状态,这样更能清晰找到程序内部异常以及内部存在问题,能够及时发现问题,避免系统悄无声息异常运行,这就需要程序设计时对内部状态查询予以相应设计上支持,为后续监控展示提供基础。
监控本身可以简化人工操作成本,人工操作命令有一定风险性,并且每个人对于命令掌握程度不同,这样不需要每个人都掌握命令,但是可以对整个系统进行监控,已发现性能、功能方面问题或者bug。
监控维度要全,要成体系,要包含多个层次的监控,这样才能支持一步一步往下进行查询分析问题原因。监控包含操作系统层面,操作系统之上docker,docker之上java程序包含jvm,jvm之上的应用程序监控,这样自底向上监控体系,支持开发者自顶向下对问题进行分析查找。
操作系统维度监控,系统cpu、内存、磁盘、网络等重要资源使用情况以及负载情况,例如线上性能出现问题,应用程序最近没有上线修改的话,可能优先要去查看系统资源是否使用过多,比如内存占用80%以上,cpu占用50%以上,或者网络流量过大,以及磁盘写入读取异常突然增大很多或者突然减少或者突然删除大量日志文件,异常的这些资源使用负载情况都能协助问题的快速定位。
docker维度与操作系统监控类似,docker作为一个轻量化虚拟机,内部cpu、内存、网络、磁盘与操作系统需要相同程序监控,并且需要对docker内进程资源予以关注,看线上服务性能波动时是否有进程突然增加或者减少,这可能都与性能问题相关。
jvm监控需要关注cpu、堆内存情况,关注yang gc以及full gc,关注线程数情况,以及整个系统对象快照,性能问题发生时应首先关注。前边这些主要是线上服务监控。
推荐系统架构很大一块涉及埋点上报、数据开发,埋点上报准确性、数据开发正确性、数据生产及时性都需要有一定监控,不然效果数据下掉后,需要非常大的精力、时间去分析定位问题。数据、上报监控需要一套程序监控和人员监控,两方面来实现对数据以及上报埋点监控。
完善研发流程,来提升研发质量,避免研发问题。流程之外需要完善监控体系,来实现对于服务质量、数据质量监控,从而实现服务质量提升,推荐效果提升。
原文 https://mp.weixin.qq.com/s/woZztRgudpLd-jCbBWRJvQ