一个系统开发完成之后,也许需要若干个 微服务 。这些微服务 部署到服务器之后,运行情况怎么样?服务器当前情况怎么?当服务出现问题时怎么办?等等。这些是在开发之外的事情,不是一两行代码能解决的。这就需要 一些 监控治理工具。
在不知道由哪些监控治理工具的情况下,先自己 从几个方面总结一下,需要监控哪些内容?
第一种:资源情况
资源就是 一些硬件设备等,cpu,内存,磁盘,网卡,跟 应用程序无关的 底层设备的使用状态
1、主机
第一个监控,就是 主机 运行情况:
cpu、内存、磁盘、负载、网卡流量
通常从这几个情况来 反应 一台 服务主机的 运行情况。像是window操作系统自带的资源管理器,也是 这几点。
比如:
cpu 使用率一直很高,或者 内存 爆满、 或者 负载过高、或者 流量情况,这些 通过监控 一眼就可以看出来,从而判断出 部署的应用 是不是能正常运行。
2. JVM
对于Java应用,重要的一个监控,就是 JVM监控。
堆内存、非堆内存、GC次数、GC耗时、各种状态的线程数量
JVM的情况,就是java程序运行时的情况,堆空间不够了 或者 GC频繁 耗时久 等 情况,也可以很好的 反应出 服务对外提供服务的能力。
第二种:业务情况
业务 就是 跟不同的 需求相关的,由开发人员编写的功能 的 运行情况。
1. 服务接口
通常 服务对外提供的形式都是以接口。
接口的 TPS、QPS、响应时间、接口异常、接口调用链、接口涉及的 方法执行情况。
最常见的问题就是 接口报错和接口超时。
如果接口报错了,可以看下错误日志,定位具体原因。
如果接口超时了,那原因就比较复杂,一两句话还说不清楚:
1) 网络原因
2)在某些情况下 接口性能低
3)在某些情况下 接口出现bug
4)在某些情况下 依赖的服务 出现问题,比如 对方服务问题,不论是应用服务还是数据库等服务
通过监控,可以及时了解这些情况,便于对问题 早发现、早处理。
2. SQL
对于很多业务,都需要数据库的支持,那对sql执行的监控,也是必要的。
3. 日志
可能有些信息,需要统计一下,这时候 如果能从 日志中 提取 ,就很好。
总结:
监控工具由哪些呢?
比如:cat、SkyWalking、arms、sunfire、actuator、Prometheus、zabbix 等等吧。
不同的技术实现的产品 在运行时 都需要 监控吧,所以 监控工具 现在也比较多。这也是慢慢发展起来的,有需要,就有实现。
总的来说,就是 从 主机情况、JVM情况、接口请求情况、SQL、具体业务日志 等这些方面去做监控吧。