监控是通过对系统进行不间断实时监控,从而掌握系统当前状态,保证服务稳定,暴涨业务稳定运行。

系统监控

系统监控的核心是资源的使用情况,包括CPU、内存、磁盘和文件系统、网络等硬件资源,以及文件描述符数、连接数、连接跟踪数等软件资源。而这些资源,都可以通过USE法来建立核心指标

USE法

USE(Utilization Saturation and Errors)法把系统资源的性能指标简化成三个类别:使用率、饱和度以及错误数

  • 使用率:表示资源用于服务的时间或容量百分比。100% 的使用率,表示容量已经用尽或者全部时间都用于服务
  • 饱和度,表示资源的繁忙程度,通常与等待队列的长度相关。100% 的饱和度,表示资源无法接受更多的请求。
  • 错误数表示发生错误的事件个数。错误数越多,表明系统的问题越严重

image.png

监控系统

掌握 USE 方法以及需要监控的性能指标后,接下来要做的,就是建立监控系统,把这些指标保存下来;然后,根据这些监控到的状态,自动分析和定位大致的瓶颈来源;最后,再通过告警系统,把问题及时汇报给相关团队处理

应用监控

监控指标

  • 请求数
  • 错误率
  • 响应时间
  • 应用进程的资源使用情况
  • 应用程序之间的调用情况
  • 应用程序内部核心逻辑的运行情况

    日志监控

    应用程序会产生应用程序的访问日志、错误日志,运行日志,网络日志,我们可以使用ELK来进行日志监控。
    对于日志监控来说,最见的需求就是收集、存储、查询、展示。
    开源社区正好有相对应的开源项目: logstash(收集) + elasticsearch(存储+搜索) + kibana(展示)

  • Logstash 负责对从各个日志源采集日志,然后进行预处理,最后再把初步处理过的日志,发送给 Elasticsearch 进行索引。

  • Elasticsearch 负责对日志进行索引,并提供了一个完整的全文搜索引擎,这样就可以方便你从日志中检索需要的数据。
  • Kibana 则负责对日志进行可视化分析,包括日志搜索、处理以及绚丽的仪表板展示等。

我们将这三个组合起来的技术称之为ELK Stack,所以说ELK Stack指的是Elasticsearch、Logstash、Kibana技术栈的结合
image.png

API监控

由于API变得越来越重要,很显然我们也需要这样的数据来分辨我们提供的 API是否能够正常运作。
监控API接口GET、POST、PUT、DELETE、HEAD、OPTIONS的请求
可用性、正确性、响应时间为三大重性能指标

监控工具

  • zabbix :zabbix是一个分布式监控系统,支持多种采集方式和采集客户端有专用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警
  • open-falcon:小米开源的监控系统,目标是做最开放、最好用的互联网企业级监控产品