Python Persister 性能指标收集

故事板: https://storyboard.openstack.org/#!/story/2001576

本文档定义了 Python Persister 中指标 upsert 处理时间和吞吐量的测量指标列表,并提供了一个 REST API 来检索这些测量指标。

问题描述

基于 DropWizard 框架构建的 Java Persister 提供了许多内部性能相关的指标,例如自上次服务启动以来处理的指标消息总数、平均指标处理时间、最小值和最大值等。另一方面,Python Persister 缺乏此类工具。这给希望监控、诊断和调整 Persister 性能的运维人员以及在 Queens 版本中引入的 Persister 性能测试工具带来了挑战。Cassandra Python Persister 插件依赖此功能进行性能调整。

用例

  • 用例 1:开发人员实现定义的性能指标。

    对于内部性能指标,有两种方法。第一种方法是在内存中计量,类似于 Java 实现。数据收集在 Persister 服务启动时开始,并且不会在服务重启后持久化。第二种方法是将此类测量指标与 Monasca 收集的“正常”指标完全相同地对待。优点是这些指标将被持久化,并且已经可以使用 REST API 来检索这些指标。Persister 指标列表包括

    1. 在给定周期内,给定 Persister 服务实例收到的并完成的指标 upsert 请求总数

    2. 在给定周期内,在给定进程或线程上收到的并完成的指标 upsert 请求总数 (P2)

    3. 给定 Persister 服务实例和进程/线程在给定周期内的平均、最小和最大指标请求处理时间。

  • 用例 2:通过 REST API 检索 persister 性能指标。

    可以使用 Monasca API 服务中的 list metrics API 来检索性能指标。

提议的变更

  1. Monasca Persister

    • Python Persister 集成 monasca-statsd 以发送计数和计时器指标

    • Persister 配置文件中添加 statsd 的属性

  2. Persister 性能基准测试工具增加了从 Monasca REST API 来源检索指标的支持,除了 DropWizard admin API。

备选方案

数据模型影响

REST API 影响

安全影响

其他最终用户影响

性能影响

待定 (TBD),预计调用 statsd 更新计数器和计时器会对性能产生较小的影响。

其他部署者影响

服务部署没有变化。

开发者影响

无。

实现

负责人

欢迎贡献者!

主要负责人

其他贡献者

工作项

  1. Monasca Persister

    • Python Persister 集成 monasca-statsd 以发送计数和计时器指标

    • Persister 配置文件中添加 statsd 的属性

  2. Persister 性能基准测试工具增加了从 Monasca REST API 来源检索指标的支持,除了 DropWizard admin API。

依赖项

测试

  • 建立一个系统,使用 JQuery 自动化存储许多指标,检查结果。可以从 monasca-persister/perf 中找到完成此测试的工具。

文档影响

monasca-persister/perf 中的现有 README.md 描述了所需的步骤。可能需要进行一些小的更改以保持最新。

参考资料

https://github.com/openstack/monasca-persister/tree/master/perf

历史记录

修订版

Rocky

引入

Stein

已修订,包含测试说明