业务监控实践总结

由于公司业务模块多,部分模块还存在集群,所以对于服务进行监控。对于核心模块是单独服务,需要多个服务启动,部署在不同的机器,还要进行集群,由于是人为手工启动,有时候可能粗心漏了某个核心业务未启动;对于前置机来说,每个银行都有自己的前置机,数量众多,运维人员不能每天进行登录查看,前置机在服务期间服务中断,也不能第一时间掌握,只有通过使用人员上报才能得知,消息滞后,影响产品出售;所以进行服务监控,通过zookeeper中间件来进行监测服务存活,利用了zookeeper分布式集群管理这一特性,达到以下需求:

    1.      主动查看线上服务节点

    2.      查看服务节点资源使用情况

    3.      服务离线通知

    4.      服务资源(CPU、内存、硬盘)超出阀值通知

 如图所示

                             业务监控实践总结

  1. 当每个服务启动时,都会在zookeeper进行创建一个临时node,同时携带其相关数据,通过查看zookeeper的节点数据就可得知启动的服务具体都包括了哪些;
  2. 创建节点时会携带该服务的ip,CPU使用情况,内存占用,空闲内存,磁盘等信息;
  3. 服务节点是监测存活的主要依据,通过创建临时node,当服务中断,临时节点销毁,则进行反馈,服务下线。
  4. 可通过设置服务资源阀值,当使用内存大于75%等,通过报警通知。

实现:

1.下载安装zookeeper

2.引入maven依赖到pom文件

      <dependency>

               <groupId>org.apache.zookeeper</groupId>

               <artifactId>zookeeper</artifactId>

               <version>3.5.5</version>

       </dependency>

 

  1. 主要是运用了Agent,创建一个独立于应用程序外的代理程序,协助监测。创建一个Agent类,通过premain()进行初始化,初始化内容包括创建zookeeper连接;创建根节点;创建临时节点;获取系统资源信息数据,上报资源数据到临时节点;启动一个更新线程,对于节点上报系统资源数据进行更新,监控资源。
  2. 客户端监控页面,进行服务监控,主要是先创建zookeeper客户端连接,监听数据变化,进行订阅,主要是获取所有子节点,得到子节点完整路径,监听数据变更;监听子节点的变更,包括子节点的增加,删除。
  3. 对于最终数据在页面的显示,效果为显示所有服务,当某个服务下线,管理平台该服务数据删除,后台提示服务已下线,启动后则新增服务数据。