在 Zun 中使用 OSProfiler

这是 Zun 集成 osprofiler 的演示。 Zun 是 OpenStack 容器管理服务,而 OSProfiler 提供了一个微小但强大的库,被大多数 OpenStack 项目及其 Python 客户端使用。

安装 Redis 数据库

在 osprofiler 1.4.0 之后,用户可以选择 mongodb 或 redis 作为后端存储选项,而无需使用 ceilometer。 这里仅以 Redis 为例,用户可以选择 mongodb、elasticsearch 和 。 将 Redis 安装为 集中收集器。 在容器中启动 Redis 很容易,选择 Redis Docker 并运行

$ docker run --name some-redis -p 6379:6379 -d redis

现在有一个 Redis 数据库,它有一个暴露端口可以访问。 OSProfiler 将数据发送到这个键值数据库。

更改配置文件

更改 /etc/zun/zun.conf,添加以下行,将 <ip-address> 更改为实际 IP

[profiler]
enabled = True
trace_sqlalchemy = True
hmac_keys = SECRET_KEY
connection_string = redis://<ip-address>:6379/

然后重启 zun-api 和 zun-compute(注意,Zun 的最新版本已将 zun-api 服务移动到 apache2 服务器。 您不能只在 screen 中重启该服务。 使用“systemctl restart apache2”会有效)。

使用以下命令获取跟踪信息

$ zun --profile SECRET_KEY list

使用 <TRACE-ID>,您将获得用于跟踪的 <TRACE-ID>

$ osprofiler trace show <TRACE-ID> --connection-string=redis://<ip-address>:6379 --html

故障排除

如何检查集成是否正常:停止 Redis 容器,然后运行该命令

$ zun --profile SECRET_KEY list

在 zun-api 日志中,将看到“ConnectionError: Error 111 connecting to <ip-address>:6379. ECONNREFUSED。” 这意味着 osprofiler 将跟踪数据写入 redis,但无法连接它。 因此集成是正常的。 当 /etc/zun/api-paste.ini 文件更改(更改管道)时,您需要重新部署 zun 服务。