OSProfiler

OpenStack 由多个项目组成,这些项目由多个服务组成,协同工作为用户提供不同的服务。如果出现未按预期工作的情况,确定问题所在并定位导致瓶颈的模块将是一项非常复杂的任务。

OSProfiler 工具旨在通过为影响所有相关服务的每个请求生成一个跟踪,并构建调用树来解决此问题。

有关 OSProfiler 工作原理的更多详细信息,请参阅 OSProfiler Readme

这对于像 Zaqar 这样的项目来说更为重要,在 Zaqar 项目中,通信性能是一项关键特性。

https://blueprints.launchpad.net/zaqar/+spec/osprofiler

问题描述

目前,没有简单的方法可以检测 Zaqar 的瓶颈。

现在一些项目已经成功集成了 OSProfiler,因此为 Zaqar 启用 OSProfiler 并通过提供跨不同服务的请求的连续跟踪信息视图做出贡献非常重要。

本规范建议将 OSProfiler 工具添加到 Zaqar。

提议的变更

拟议的更改是将 OSProfiler 工具集成到 Zaqar。根据 OSProfiler Readme 中详细说明的此添加的要求,这不应该是一项复杂的任务。执行此操作所需的步骤在 工作项 部分中详细说明。

Zaqar 服务器的主要功能更改:https://review.opendev.org/#/c/141356/

备选方案

  • 不添加 OSProfiler 工具

实现

负责人

主要负责人:zhiyan

其他负责人:wangxiyuan(wxy)

里程碑

完成目标里程碑:O-2

工作项

  • 在 Zaqar 服务器启动时添加 OSProfiler 的初始化

  • 为 WSGI 添加跟踪支持

  • 为 MongoDB 添加跟踪支持

  • 为 Redis 添加跟踪支持

  • 为 SQLAlchemy 添加跟踪支持

  • 为连接池添加跟踪支持

  • 添加 profiler CONF 组

    • 完全启用或禁用分析

    • 启用或禁用 MongoDB 跟踪

    • 启用或禁用 Redis 跟踪

    • 启用或禁用 SQLAlchemy 跟踪

    • 启用或禁用连接池跟踪

    • 配置 HMAC 密钥以保护跟踪数据

  • 为客户端添加分析支持

  • 测试在禁用分析且没有功能时“静止”时的开销

  • 更新文档以确保新选项得到充分记录。

    注意

    通常数据库请求会产生大量的跟踪信息,因此能够按需启用/禁用这些信息非常重要

依赖项

注意

本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode