可观测平台-3: 应用系统监控项

2023-12-13 21:39:25 浏览数 (1)

概述

在讨论以容器应用为视角的监控和告警时,有几个关键点需要注意。首先,传统的基于主机资源的监控方法(如使用率和负载监控)可能不再适用于动态、多副本的Pod环境。这是因为在容器化和微服务架构中,应用服务的动态性和弹性更加突出。

  1. API服务级别目标(SLO): 监控和告警系统应更多地关注API服务级别目标(SLO)。这包括但不限于响应时间、可用性和错误率。这种方法更能反映用户体验和业务目标。
  2. Pod性能指标: 与其关注整个主机的资源使用情况,不如关注特定Pod的性能指标,如重启次数、延迟和流量等。这有助于及时发现和解决针对特定服务的问题。
  3. 资源剩余量预测和告警: 主机节点应被视为资源池,其中资源的剩余量预测变得至关重要。通过预测资源短缺,可以及时进行扩容或优化,从而避免服务中断。
  4. 自动化和智能化: 随着容器技术和微服务的发展,监控和告警系统也应该向自动化和智能化方向发展。例如,使用机器学习算法来预测和识别异常行为模式。
  5. 多维度数据聚合: 结合来自不同来源(如应用日志、性能指标、网络流量等)的数据,进行多维度分析,以获得更全面的视角。
  6. 服务依赖性分析: 理解服务之间的依赖关系对于准确的监控和故障诊断至关重要

使用开源监控工具(如 Prometheus, Alertmanager, Loki, Grafana)来实现基础设施和应用资源消耗的服务水平目标(SLO)监控,以及如何通过这些工具统一处理监控指标、日志、链路跟踪,并减少无效告警。下面是一个基于 S.T.A.R.(Situation, Task, Action, Result)方法的解决方案思路及配置示例:

情况 (Situation)

组织需要监控基础设施和应用资源消耗。

需要统一处理监控指标、日志和链路跟踪,以及告警系统。

任务 (Task)

实现对基础设施和应用的全面监控。

在确保SLO的前提下,减少无效告警。

行动 (Action)

Prometheus 和 Alertmanager 配置:

使用 Prometheus 监控基础设施和应用指标。

使用 Alertmanager 管理告警,配置告警规则以匹配特定指标异常。

  • Loki 配置:
    • 采集和管理日志数据。
    • 使用 LogQL 编写查询,结合 Grafana 展示日志信息。
  • Grafana 配置:
    • 将 Prometheus, Loki 的数据源添加到 Grafana。
    • 创建仪表板来可视化指标和日志。
    • 使用 Grafana 的告警功能来改进告警管理。
  • 链路跟踪:
    • 集成适合的链路跟踪系统(如 Jaeger)。
    • 确保链路数据与 Prometheus 和 Grafana 相结合。
  • 告警优化:
    • 分析历史告警数据,识别和调整频繁和无效的告警。
    • 使用 PromQL 和其他查询语言细化告警条件。

结果 (Result)

  • 实现了对基础设施和应用的全面监控。
  • 有效减少了无效告警,提高了运维效率。
  • 提高了系统的稳定性和可靠性。

系统资源使用

  • 负载
  • CPU 使用率
  • 内存使用量
  • 磁盘 I/O
  • 网络 I/O

业务应用监控 总结对比

类型

资源消耗

性能指标

日志监控

业务指标

特殊项

前端应用

浏览器性能(CPU, 内存)

页面加载时间, FCP, CLS

前端错误, 用户行为

用户行为相关

用户体验指标(FID, LCP)

Java后端服务

CPU, 内存, I/O

响应时间, 吞吐量

应用日志, 错误追踪

API调用量, 事务量

JVM指标(GC, 堆使用)

Go后端服务

CPU, 内存, I/O

响应时间, 吞吐量

应用日志, 错误追踪

API调用量, 事务量

Go协程数量, GC指标

Python后端服务

CPU, 内存, I/O

响应时间, 吞吐量

应用日志, 错误追踪

API调用量, 事务量

GIL锁竞争, Python特定指标

缓存中间件监控项

CPU, 内存, 网络

命令吞吐量, 延迟

访问日志, 错误日志

缓存命中率, 键空间统计

持久化延迟, 复制延迟

消息队列

CPU, 内存, 网络

消息吞吐量, 延迟

服务日志, 错误日志

队列长度, 消息积压

分区状态, 消费者滞后

关系型数据库

CPU, 内存, 磁盘 I/O

查询吞吐量, 响应时间

查询日志, 错误日志

事务处理量, 慢查询

锁等待, 复制延迟, 缓冲池命中率

非关系型数据库

CPU, 内存, 网络

读写吞吐量, 响应时间

操作日志, 错误日志

数据大小, 访问模式

分布式健康, 分区状态, 数据复制

在监控非关系型数据库(如 MongoDB, Redis, Cassandra 等)时,需要特别关注其独特的架构和使用模式,例如分布式集群的健康状况、数据复制状态、以及对于特定访问模式的响应。这个补充的条目涵盖了非关系型数据库的主要监控方面,有助于确保这些系统的高性能和可靠性。

0 人点赞