This documentation is for a release that is no longer maintained
See documentation for the latest supported version.3.6. 配置可观察性
要配置 OpenShift Dev Spaces 可观察性功能,请参阅:
3.6.1. Che-Theia 工作区 复制链接链接已复制到粘贴板!
3.6.1.1. Telemetry 概述 复制链接链接已复制到粘贴板!
Telemetry 是操作数据的明确和 ethical 集合。默认情况下,Red Hat OpenShift Dev Spaces 不提供遥测,但在 Che-Theia 编辑器中有一个抽象 API,允许使用插件机制在 chectl
命令行工具用法数据中启用遥测,可以使用 segment 来收集。此方法在红帽托管的 "Ecli Che 托管的服务"中使用,每个 Che-Theia 工作区都启用了遥测服务。
本文档包括一个指南,介绍如何为 Red Hat OpenShift Dev Spaces 自行进行遥测客户端,后跟 Red Hat OpenShift Dev Spaces Woopra Telemetry Plugin 的概述。
3.6.1.2. 使用案例 复制链接链接已复制到粘贴板!
Red Hat OpenShift Dev Spaces 遥测 API 允许跟踪:
- 工作区使用率的持续时间
- 用户驱动的操作,如文件编辑、提交和推送到远程存储库。
- 工作区中使用的编程语言和 devfile。
3.6.1.3. 它如何工作 复制链接链接已复制到粘贴板!
当 Dev Workspace 启动时,che-theia
容器会启动遥测插件,该插件负责将遥测事件发送到后端。如果在 Dev Workspace Pod 中设置了 $DEVWORKSPACE_TELEMETRY_BACKEND_PORT
环境变量,遥测插件会将事件发送到侦听该端口的后端。后端将收到的事件转换为特定于事件的后端表示,并将它们发送到配置的分析后端(如 Segment 或 Woopra)。
3.6.1.4. Che-Theia 遥测插件发送到后端的事件 复制链接链接已复制到粘贴板!
事件 | 描述 |
---|---|
WORKSPACE_OPENED | Che-Theia 开始运行时发送 |
COMMIT_LOCALLY |
使用 |
PUSH_TO_REMOTE |
使用 |
EDITOR_USED | 在编辑器中更改了文件时发送 |
可以在后端插件中检测到 WORKSPACE_INACTIVE
和 WORKSPACE_STOPPED
等其他事件。
3.6.1.5. Woopra 遥测插件 复制链接链接已复制到粘贴板!
Woopra Telemetry Plugin 是一个插件,用于将遥测从 Red Hat OpenShift Dev Spaces 安装发送到 Segment 和 Woopra。此插件 由 Red Hat 托管的 Eclipse Che 使用,但任何 Red Hat OpenShift Dev Spaces 部署都可以利用此插件。有效 Woopra 域和 Segment Write 键没有依赖项。插件的 devfile v2 是 plugin.yaml,有四个环境变量可以传递给插件:
-
WOOPRA_DOMAIN
- 要发送事件的 Woopra 域。 -
SEGMENT_WRITE_KEY
- 将事件发送到 Segment 和 Woopra 的写入密钥。 -
WOOPRA_DOMAIN_ENDPOINT
- 如果您不希望直接传递 Woopra 域,则插件将从返回 Woopra 域的提供 HTTP 端点中获取它。 -
SEGMENT_WRITE_KEY_ENDPOINT
- 如果您不希望直接传递 Segment 写密钥,则插件将从返回 Segment 写密钥的提供的 HTTP 端点中获取它。
要在 Red Hat OpenShift Dev Spaces 安装中启用 Woopra 插件:
流程
将
plugin.yaml
devfile v2 文件部署到带有环境变量设置的 HTTP 服务器中。配置
CheCluster
自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.1.6. 创建遥测插件 复制链接链接已复制到粘贴板!
本节演示了如何创建一个扩展 AbstractAnalyticsManager
的 AnalyticsManager
类并实施以下方法:
-
isEnabled ()
- 确定遥测后端是否正常工作。这可能意味着始终返回true
或具有更复杂的检查,例如,当缺少连接属性时返回false
。 -
destroy ()
- 在关闭遥测后端之前运行清理方法。此方法发送WORKSPACE_STOPPED
事件。 -
onActivity ()
- 通知给定用户仍发生一些活动。这主要用于发送WORKSPACE_INACTIVE
事件。 -
onEvent ()
- 将遥测事件提交到遥测服务器,如WORKSPACE_USED
或WORKSPACE_STARTED
。 -
increaseDuration ()
- 增加当前事件的持续时间,而不是在小时间内发送多个事件。
以下部分涵盖了:
- 创建遥测服务器以将事件回显到标准输出.
- 扩展 OpenShift Dev Spaces 遥测客户端并实施用户的自定义后端。
-
创建一个
plugin.yaml
文件,代表自定义后端的 Dev Workspace 插件。 -
通过设置
CheCluster
自定义资源中的workspacesDefaultPlugins
属性,指定自定义插件的位置。
3.6.1.6.1. 开始使用 复制链接链接已复制到粘贴板!
本文档描述了扩展 OpenShift Dev Spaces 遥测系统以与自定义后端通信所需的步骤:
- 创建接收事件的服务器进程
- 扩展 OpenShift Dev Spaces 库,以创建向服务器发送事件的后端
- 在容器中打包遥测后端并将其部署到镜像 registry
- 为后端添加插件,并指示 OpenShift Dev Spaces 在 Dev Workspaces 中加载插件
此处 提供了遥测后端的一个完整示例。
创建接收事件的服务器
出于演示目的,本例演示了如何创建服务器,从我们的遥测插件接收事件并将其写入标准输出。
对于生产用例,请考虑与第三方遥测系统(如 Segment、Woopra)集成,而不是创建自己的遥测服务器。在这种情况下,使用供应商的 API 将事件从自定义后端发送到其系统。
以下 Go 代码在端口 8080
上启动一个服务器,并将事件写入标准输出:
例 3.12. main.go
基于此代码创建容器镜像,并将其作为部署在 openshift-devspaces
项目中的 OpenShift 中的部署。示例遥测服务器的代码位于 telemetry-server-example。要部署遥测服务器,请克隆存储库并构建容器:
git clone https://github.com/che-incubator/telemetry-server-example cd telemetry-server-example podman build -t registry/organization/telemetry-server-example:latest . podman push registry/organization/telemetry-server-example:latest
$ git clone https://github.com/che-incubator/telemetry-server-example
$ cd telemetry-server-example
$ podman build -t registry/organization/telemetry-server-example:latest .
$ podman push registry/organization/telemetry-server-example:latest
manifest_with_ingress.yaml
和 manifest_with_route
包含 Deployment 和 Service 的定义。前者还定义了 Kubernetes Ingress,后者则定义了 OpenShift 路由。
在清单文件中,替换 image
和 host
字段,以匹配您推送的镜像,以及 OpenShift 集群的公共主机名。然后运行:
kubectl apply -f manifest_with_[ingress|route].yaml -n openshift-devspaces
$ kubectl apply -f manifest_with_[ingress|route].yaml -n openshift-devspaces
3.6.1.6.2. 创建后端项目 复制链接链接已复制到粘贴板!
为了在开发时进行快速反馈,建议在 Dev Workspace 内进行开发。这样,您可以在集群中运行应用程序,并从前端遥测插件接收事件。
Maven Quarkus 项目构建:
mvn io.quarkus:quarkus-maven-plugin:2.7.1.Final:create \ -DprojectGroupId=mygroup -DprojectArtifactId=devworkspace-telemetry-example-plugin \ -DprojectVersion=1.0.0-SNAPSHOT
mvn io.quarkus:quarkus-maven-plugin:2.7.1.Final:create \ -DprojectGroupId=mygroup -DprojectArtifactId=devworkspace-telemetry-example-plugin \ -DprojectVersion=1.0.0-SNAPSHOT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
删除
src/main/java/mygroup
和src/test/java/mygroup
下的文件。 -
如需最新的版本,请参阅 GitHub 软件包,以及
后端基础的
Maven 协调。 将以下依赖项添加到
pom.xml
中:例 3.13.
pom.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
创建一个具有
read:packages
权限的个人访问令牌,以便从 GitHub 软件包下载org.eclipse.che.incubator.workspace-telemetry:backend-base
依赖项。 在
~/.m2/settings.xml
文件中添加您的 GitHub 用户名、个人访问令牌和che-incubator
存储库详情:例 3.14.
settings.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.1.6.3. 创建分析管理器的规范实施并添加专用逻辑 复制链接链接已复制到粘贴板!
在 src/main/java/mygroup
下创建两个文件:
-
MainConfiguration.java
- 包含提供给AnalyticsManager
的配置。 -
AnalyticsManager.java
- 包含特定于遥测系统的逻辑。
例 3.15. MainConfiguration.java
- 1
- MicroProfile 配置注释用于注入
welcome.message
配置。
有关如何设置特定于您的后端的配置属性的更多详细信息,请参阅 Quarkus 配置参考指南。
例 3.16. AnalyticsManager.java
由于 org.my.group.AnalyticsManager
和 org.my.group.MainConfiguration
是替代 Bean,因此请使用 src/main/resources/application.properties
中的 quarkus.arc.selected-alternatives
属性来指定它们。
例 3.17. application.properties
quarkus.arc.selected-alternatives=MainConfiguration,AnalyticsManager
quarkus.arc.selected-alternatives=MainConfiguration,AnalyticsManager
3.6.1.6.4. 在 Dev Workspace 中运行应用程序 复制链接链接已复制到粘贴板!
在 Dev Workspace 中设置
DEVWORKSPACE_TELEMETRY_BACKEND_PORT
环境变量。在这里,值设为4167
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 Red Hat OpenShift Dev Spaces 仪表板重启 Dev Workspace。
在 Dev Workspace 的终端窗口中运行以下命令启动应用程序。使用
--settings
标志指定包含 GitHub 访问令牌的settings.xml
文件的路径。mvn --settings=settings.xml quarkus:dev -Dquarkus.http.port=${DEVWORKSPACE_TELEMETRY_BACKEND_PORT}
$ mvn --settings=settings.xml quarkus:dev -Dquarkus.http.port=${DEVWORKSPACE_TELEMETRY_BACKEND_PORT}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用程序现在通过前端插件的端口
4167
接收遥测事件。
验证步骤
验证以下输出是否已记录:
INFO [org.ecl.che.inc.AnalyticsManager] (Quarkus Main Thread) No welcome message provided INFO [io.quarkus] (Quarkus Main Thread) devworkspace-telemetry-example-plugin 1.0.0-SNAPSHOT on JVM (powered by Quarkus 2.7.2.Final) started in 0.323s. Listening on: http://localhost:4167 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated. INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, kubernetes-client, rest-client, rest-client-jackson, resteasy, resteasy-jsonb, smallrye-context-propagation, smallrye-openapi, swagger-ui, vertx]
INFO [org.ecl.che.inc.AnalyticsManager] (Quarkus Main Thread) No welcome message provided INFO [io.quarkus] (Quarkus Main Thread) devworkspace-telemetry-example-plugin 1.0.0-SNAPSHOT on JVM (powered by Quarkus 2.7.2.Final) started in 0.323s. Listening on: http://localhost:4167 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated. INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, kubernetes-client, rest-client, rest-client-jackson, resteasy, resteasy-jsonb, smallrye-context-propagation, smallrye-openapi, swagger-ui, vertx]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证
AnalyticsManager
的onEvent ()
方法是否从前端插件接收事件,请按 l 键来禁用 Quarkus 实时编码,并编辑 IDE 中的任何文件。应该记录以下输出:INFO [io.qua.dep.dev.RuntimeUpdatesProcessor] (Aesh InputStream Reader) Live reload disabled INFO [org.ecl.che.inc.AnalyticsManager] (executor-thread-2) The received event is: Edit Workspace File in Che
INFO [io.qua.dep.dev.RuntimeUpdatesProcessor] (Aesh InputStream Reader) Live reload disabled INFO [org.ecl.che.inc.AnalyticsManager] (executor-thread-2) The received event is: Edit Workspace File in Che
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.1.6.5. 实现 isEnabled () 复制链接链接已复制到粘贴板!
在本示例中,此方法始终会在调用时返回 true
。
例 3.18. AnalyticsManager.java
@Override public boolean isEnabled() { return true; }
@Override
public boolean isEnabled() {
return true;
}
可以在 isEnabled ()
中放置更复杂的逻辑。例如,托管的 OpenShift Dev Spaces Woopra 后端 在确定是否启用了后端前检查是否存在配置属性。
3.6.1.6.6. 实施 onEvent () 复制链接链接已复制到粘贴板!
onEvent ()
将后端收到的事件发送到遥测系统。对于示例应用程序,它将 HTTP POST 有效负载发送到来自遥测服务器的 /event
端点。
将 POST 请求发送到示例遥测服务器
在以下示例中,遥测服务器应用通过以下 URL 部署到 OpenShift :http://little-telemetry-server-che.apps-crc.testing
,其中 apps-crc.testing
是 OpenShift 集群的入口域名。
通过创建
TelemetryService.java
设置 RESTEasy REST 客户端例 3.19.
TelemetryService.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 发出
POST
请求的端点。
在
src/main/resources/application.properties
文件中指定TelemetryService
的基本 URL:例 3.20.
application.properties
org.my.group.TelemetryService/mp-rest/url=http://little-telemetry-server-che.apps-crc.testing
org.my.group.TelemetryService/mp-rest/url=http://little-telemetry-server-che.apps-crc.testing
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
TelemetryService
注入AnalyticsManager
,并在onEvent ()
中发送POST
请求例 3.21.
AnalyticsManager.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会将 HTTP 请求发送到遥测服务器,并在短时间内自动延迟相同的事件。默认持续时间为 1500 毫秒。
3.6.1.6.7. 实施 increaseDuration () 复制链接链接已复制到粘贴板!
许多遥测系统都识别事件持续时间。AbstractAnalyticsManager
将同一时间段内的类似的事件合并到一个事件中。这个 increase Duration ()的实现
是一个 no-op。此方法使用用户遥测提供程序的 API 来更改事件或事件属性,以反映事件的增加持续时间。
例 3.22. AnalyticsManager.java
@Override public void increaseDuration(AnalyticsEvent event, Map<String, Object> properties) {}
@Override
public void increaseDuration(AnalyticsEvent event, Map<String, Object> properties) {}
3.6.1.6.8. 实施 onActivity () 复制链接链接已复制到粘贴板!
设置不活跃超时限制,并使用 onActivity ()
发送 WORKSPACE_INACTIVE
事件(如果最后一次事件时间超过超时)。
例 3.23. AnalyticsManager.java
3.6.1.6.9. 实施 destroy () 复制链接链接已复制到粘贴板!
调用 destroy ()
时,发送 WORKSPACE_STOPPED
事件并关闭任何资源,如连接池。
例 3.24. AnalyticsManager.java
@Override public void destroy() { onEvent(WORKSPACE_STOPPED, lastOwnerId, lastIp, lastUserAgent, lastResolution, commonProperties); }
@Override
public void destroy() {
onEvent(WORKSPACE_STOPPED, lastOwnerId, lastIp, lastUserAgent, lastResolution, commonProperties);
}
运行 mvn quarkus:dev
,如 第 3.6.1.6.4 节 “在 Dev Workspace 中运行应用程序” 所述,使用 Ctrl+C 终止应用程序,向服务器发送 WORKSPACE_STOPPED
事件。
3.6.1.6.10. 打包 Quarkus 应用程序 复制链接链接已复制到粘贴板!
如需了解在容器中打包应用程序的最佳说明,请参阅 Quarkus 文档。构建容器并将其推送到您选择的容器 registry。
用于构建使用 JVM 运行的 Quarkus 镜像的 Dockerfile 示例
例 3.25. Dockerfile.jvm
要构建镜像,请运行:
mvn package && \ podman build -f src/main/docker/Dockerfile.jvm -t image:tag .
mvn package && \
podman build -f src/main/docker/Dockerfile.jvm -t image:tag .
用于构建 Quarkus 原生镜像的 Dockerfile 示例
例 3.26. Dockerfile.native
要构建镜像,请运行:
mvn package -Pnative -Dquarkus.native.container-build=true && \ podman build -f src/main/docker/Dockerfile.native -t image:tag .
mvn package -Pnative -Dquarkus.native.container-build=true && \
podman build -f src/main/docker/Dockerfile.native -t image:tag .
3.6.1.6.11. 为您的插件创建 plugin.yaml 复制链接链接已复制到粘贴板!
创建一个 plugin.yaml
devfile v2 文件,该文件代表在 Dev Workspace Pod 中运行自定义后端的 Dev Workspace 插件。有关 devfile v2 的更多信息,请参阅 Devfile v2 文档
例 3.27. plugin.yaml
- 1
- 指定从 第 3.6.1.6.10 节 “打包 Quarkus 应用程序” 构建的容器镜像。
- 2
- 设置 Example 4 中的
welcome.message
可选配置属性的值。
通常,用户会将此文件部署到企业 Web 服务器。本指南说明了如何在 OpenShift 上创建 Apache Web 服务器,并在该插件内托管。
创建引用新 plugin.yaml
文件的 ConfigMap
对象。
oc create configmap --from-file=plugin.yaml -n openshift-devspaces telemetry-plugin-yaml
$ oc create configmap --from-file=plugin.yaml -n openshift-devspaces telemetry-plugin-yaml
创建部署、服务和用于公开 Web 服务器的路由。部署引用此 ConfigMap
对象并将其放置在 /var/www/html
目录中。
例 3.28. manifest.yaml
oc apply -f manifest.yaml
$ oc apply -f manifest.yaml
验证步骤
部署启动后,确认 web 服务器中提供了
plugin.yaml
:curl apache-che.apps-crc.testing/plugin.yaml
$ curl apache-che.apps-crc.testing/plugin.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.1.6.12. 在 Dev Workspace 中指定遥测插件 复制链接链接已复制到粘贴板!
在现有 Dev Workspace 的
components
字段中添加以下内容:components: ... - name: telemetry-plugin plugin: uri: http://apache-che.apps-crc.testing/plugin.yaml
components: ... - name: telemetry-plugin plugin: uri: http://apache-che.apps-crc.testing/plugin.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 OpenShift Dev Spaces 仪表板启动 Dev Workspace。
验证步骤
验证遥测插件容器是否在 Dev Workspace pod 中运行。此处通过检查编辑器中的 Workspace 视图来验证这一点。
- 在编辑器中编辑文件,并在示例遥测服务器日志中观察其事件。
3.6.1.6.13. 为所有 Dev Workspaces 应用遥测插件 复制链接链接已复制到粘贴板!
将遥测插件设置为默认插件。默认插件应用于新和现有的 Dev Workspaces 的 Dev Workspace 启动。
配置
CheCluster
自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
- 从 Red Hat OpenShift Dev Spaces 仪表板启动新的或现有的 Dev Workspace。
- 按照 第 3.6.1.6.12 节 “在 Dev Workspace 中指定遥测插件” 的验证步骤,验证遥测插件是否正常工作。
3.6.2. 配置服务器日志记录 复制链接链接已复制到粘贴板!
可以微调 OpenShift Dev Spaces 服务器中可用的各个日志记录器的日志级别。
整个 OpenShift Dev Spaces 服务器的日志级别使用 Operator 的 cheLogLevel
配置属性全局配置。请参阅 第 3.1.3 节 “CheCluster
自定义资源字段参考”。要在不是由 Operator 管理的安装中设置全局日志级别,请在 che
ConfigMap 中指定 CHE_LOG_LEVEL
环境变量。
可以使用 CHE_LOGGER_CONFIG
环境变量在 OpenShift Dev Spaces 服务器中配置各个日志记录器的日志级别。
3.6.2.1. 配置日志级别 复制链接链接已复制到粘贴板!
流程
配置
CheCluster
自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: components: cheServer: extraProperties: CHE_LOGGER_CONFIG: "<key1=value1,key2=value2>"
spec: components: cheServer: extraProperties: CHE_LOGGER_CONFIG: "<key1=value1,key2=value2>"
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 以逗号分隔的键值对列表,其中键是 OpenShift Dev Spaces 服务器日志输出和值中找到的日志记录器名称。
例 3.29. 为
WorkspaceManager
配置调试模式spec: components: cheServer: extraProperties: CHE_LOGGER_CONFIG: "org.eclipse.che.api.workspace.server.WorkspaceManager=DEBUG"
spec: components: cheServer: extraProperties: CHE_LOGGER_CONFIG: "org.eclipse.che.api.workspace.server.WorkspaceManager=DEBUG"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.2.2. 日志记录器命名 复制链接链接已复制到粘贴板!
日志记录器的名称遵循使用这些日志记录器的内部服务器类的类名称。
3.6.2.3. 日志记录 HTTP 流量 复制链接链接已复制到粘贴板!
流程
要记录 OpenShift Dev Spaces 服务器和 Kubernetes 或 OpenShift 集群的 API 服务器之间的 HTTP 流量,请配置
CheCluster
自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: components: cheServer: extraProperties: CHE_LOGGER_CONFIG: "che.infra.request-logging=TRACE"
spec: components: cheServer: extraProperties: CHE_LOGGER_CONFIG: "che.infra.request-logging=TRACE"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.3. 使用 dsc 收集日志 复制链接链接已复制到粘贴板!
Red Hat OpenShift Dev Spaces 安装由 OpenShift 集群中运行的几个容器组成。虽然可以从每个运行中的容器手动收集日志,dsc
提供自动化进程的命令。
以下命令可使用 dsc
工具从 OpenShift 集群收集 Red Hat OpenShift Dev Spaces 日志:
dsc server:logs
收集现有 Red Hat OpenShift Dev Spaces 服务器日志,并将其存储在本地计算机上的一个目录中。默认情况下,日志会下载到计算机上的临时目录中。但是,这可以通过指定
-d
参数来覆盖。例如,要将 OpenShift Dev Spaces:wq:q 日志下载到/home/user/che-logs/
目录,请使用 命令dsc server:logs -d /home/user/che-logs/
dsc server:logs -d /home/user/che-logs/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在运行时,
dsc server:logs
会在控制台中打印一条消息,指定将存储日志文件的目录:Red Hat OpenShift Dev Spaces logs will be available in '/tmp/chectl-logs/1648575098344'
Red Hat OpenShift Dev Spaces logs will be available in '/tmp/chectl-logs/1648575098344'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 Red Hat OpenShift Dev Spaces 安装在非默认项目中,
dsc server:logs
需要-n <NAMESPACE>
; paremeter,其中 <NAMESPACE
> 是安装 Red Hat OpenShift Dev Spaces 的 OpenShift 项目。例如,若要从my-namespace
项目中的 OpenShift Dev Spaces 获取日志,请使用 命令dsc server:logs -n my-namespace
dsc server:logs -n my-namespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dsc server:deploy
-
使用
dsc
安装时,会在 OpenShift Dev Spaces 安装过程中自动收集日志。与dsc server:logs
一样,可以使用-d
参数指定目录日志存储在 中。
其他资源
- "DSC 参考文档"
3.6.4. 使用 Prometheus 和 Grafana 监控 复制链接链接已复制到粘贴板!
您可以使用集群中运行的 Prometheus 和 Grafana 实例来收集并查看 OpenShift Dev Spaces 指标。
3.6.4.1. 安装 Prometheus 和 Grafana 复制链接链接已复制到粘贴板!
您可以通过应用 template.yaml
来安装 Prometheus 和 Grafana。本例中的 template.yaml
文件提供了一个基本配置、Deployment 和 Services 的监控堆栈,以开始 Prometheus 和 Grafana。
另外,您可以使用 Prometheus Operator 和 Grafana Operator。
先决条件
- oc
流程
使用 template.yaml
安装 Prometheus 和 Grafana:
为 Prometheus 和 Grafana 创建一个新项目
监控
:oc new-project monitoring
$ oc new-project monitoring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
监控
项目中应用template.yaml
:oc apply -f template.yaml -n monitoring
$ oc apply -f template.yaml -n monitoring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
例 3.30. template.yaml
3.6.4.2. 监控 Dev Workspace Operator 复制链接链接已复制到粘贴板!
您可以配置一个监控堆栈示例,以处理 Dev Workspace Operator 公开的指标。
3.6.4.2.1. 使用 Prometheus 收集 Dev Workspace Operator 指标 复制链接链接已复制到粘贴板!
使用 Prometheus 收集、存储和查询 Dev Workspace Operator 的指标:
先决条件
-
devworkspace-controller-metrics
服务在端口8443
上公开指标。默认是预先配置的。 -
devworkspace-webhookserver
Service 在端口9443
上公开指标。默认是预先配置的。 -
Prometheus 2.26.0 或更高版本正在运行。Prometheus 控制台使用对应的服务在端口
9090
上运行。请参阅 Prometheus 的第一步。
流程
创建一个 ClusterRoleBinding,将与 Prometheus 关联的 ServiceAccount 绑定到 devworkspace-controller-metrics-reader ClusterRole。对于 示例监控堆栈,要使用的 ServiceAccount 的名称是
prometheus
。注意如果没有 ClusterRoleBinding,您无法访问 Dev Workspace 指标,因为访问使用基于角色的访问控制(RBAC)进行保护。
例 3.31. ClusterRoleBinding
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Prometheus 配置为从
devworkspace-controller-metrics
Service 公开的端口8443
和devworkspace-webhookserver
Service 公开的端口9443
中提取指标。注意监控堆栈示例 已创建了带有空配置的
prometheus-config
ConfigMap。要提供 Prometheus 配置详情,请编辑 ConfigMap 的data
字段。例 3.32. Prometheus 配置
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 提取目标的频率。
- 2
- 重新检查记录和警报规则的速度。
- 3
- Prometheus 监控的资源。在默认配置中,两个作业(
DevWorkspace
和DevWorkspace Webhook
)提取devworkspace-controller-metrics
和devworkspace-webhookserver
服务公开的时间序列数据。 - 4
- 从端口
8443
中提取指标的目标。将<DWO_project
> 替换为devworkspace-controller-metrics
Service
所在的项目。 - 5
- 从端口
9443
中提取指标的目标。将<DWO_project
> 替换为devworkspace-webhookserver
Service
所在的项目。
将
Prometheus
Deployment 向下扩展,以读取上一步中更新的 ConfigMap。oc scale --replicas=0 deployment/prometheus -n monitoring && oc scale --replicas=1 deployment/prometheus -n monitoring
$ oc scale --replicas=0 deployment/prometheus -n monitoring && oc scale --replicas=1 deployment/prometheus -n monitoring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用端口转发在本地访问
Prometheus
Service:oc port-forward svc/prometheus 9090:9090 -n monitoring
$ oc port-forward svc/prometheus 9090:9090 -n monitoring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
通过查看
localhost:9090/targets
的目标端点来验证所有目标是否都已启动。 使用 Prometheus 控制台查看和查询指标:
-
查看
localhost:9090/metrics
的指标。 从
localhost:9090/graph
查询指标。如需更多信息 ,请参阅使用表达式浏览器。
-
查看
3.6.4.2.2. dev Workspace 特定的指标 复制链接链接已复制到粘贴板!
下表描述了 devworkspace-controller-metrics
服务公开的 Dev Workspace 特定指标。
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
| 计数 | Dev Workspace 启动事件的数量。 |
|
| 计数 |
Dev Workspaces 的数量成功进入 |
|
| 计数 | 失败的 Dev Workspaces 数量。 |
|
| Histogram | 启动 Dev Workspace 所需的时间(以秒为单位)。 |
|
名称 | 描述 | 值 |
---|---|---|
|
Dev Workspace 的 |
|
|
Dev Workspace 的 |
|
| 工作空间启动失败原因。 |
|
名称 | 描述 |
---|---|
| 由于用于创建 Dev Workspace 的 devfile 无效,启动失败。 |
|
由于以下错误导致启动失败: |
| 未知的故障原因。 |
3.6.4.2.3. 在 Grafana 仪表板中查看 Dev Workspace Operator 指标 复制链接链接已复制到粘贴板!
使用示例仪表板查看 Grafana 上的 Dev Workspace Operator 指标:
先决条件
- Prometheus 收集指标。请参阅 第 3.6.4.2.1 节 “使用 Prometheus 收集 Dev Workspace Operator 指标”。
- Grafana 版本 7.5.3 或更高版本。
-
Grafana 使用对应的服务在端口
3000
上运行。请参阅 安装 Grafana。
流程
- 为 Prometheus 实例添加数据源。请参阅创建 Prometheus 数据源。
-
导入
grafana-dashboard.json
仪表板示例。
验证步骤
- 使用 Grafana 控制台查看 Dev Workspace Operator 指标仪表板。请参阅 第 3.6.4.2.4 节 “Dev Workspace Operator 的 Grafana 仪表板”。
其他资源
3.6.4.2.4. Dev Workspace Operator 的 Grafana 仪表板 复制链接链接已复制到粘贴板!
基于 grafana-dashboard.json
的 Grafana 仪表板示例从 Dev Workspace Operator 中显示以下指标。
Dev Workspace 特定的指标 面板
图 3.1. Dev Workspace 特定的指标 面板
- 平均工作区开始时间
- 平均工作空间启动持续时间。
- 工作区启动
- 成功和失败的工作区启动数量。
- 工作空间启动持续时间
- 显示工作空间启动持续时间的热图。
- dev Workspace 成功/失败
- 成功和失败的 Dev Workspace 启动之间的比较。
- dev Workspace 失败率
- 失败工作空间启动数与工作空间启动总数之间的比率。
- Dev Workspace 启动失败原因
显示工作区启动故障分布的 pie chart:
-
BadRequest
-
InfrastructureFailure
-
Unknown
-
Operator 指标 面板(第 1 部分)
图 3.2. Operator 指标 面板(第 1 部分)
- Webhook in flight
- 不同 webhook 请求数量之间的比较。
- 工作队列持续时间
- 显示协调请求在处理前保持在工作队列中的热图。
- Webhook 延迟(/mutate)
-
显示
/mutate
webhook 延迟的热图。 - 协调时间
- 显示协调持续时间的热图。
Operator 指标 面板(第 2 部分)
图 3.3. Operator 指标 面板(第 2 部分)
- Webhook 延迟(/convert)
-
显示
/convert
Webhook 延迟的 heatmap。 - 工作队列深度
- 协调工作队列中的请求数。
- 内存
- Dev Workspace 控制器和 Dev Workspace Webhook 服务器的内存用量。
- 协调计数(DWO)
- Dev Workspace 控制器的平均协调数。
3.6.4.3. 监控 Dev Spaces 服务器 复制链接链接已复制到粘贴板!
您可以将 OpenShift Dev Spaces 配置为公开 JVM 指标,如 OpenShift Dev Spaces 服务器的 JVM 内存和类加载。
3.6.4.3.1. 启用并公开 OpenShift Dev Spaces 服务器指标 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 在 che-host
服务的端口 8087
上公开 JVM 指标。您可以配置此行为。
流程
配置
CheCluster
自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: components: metrics: enable: <boolean>
spec: components: metrics: enable: <boolean>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
true
启用,false
会禁用。
3.6.4.3.2. 使用 Prometheus 收集 OpenShift Dev Spaces 服务器指标 复制链接链接已复制到粘贴板!
使用 Prometheus 为 OpenShift Dev Spaces 服务器收集、存储和查询 JVM 指标:
先决条件
-
OpenShift Dev Spaces 在端口
8087
上公开指标。请参阅启用和公开 OpenShift Dev Spaces 服务器 JVM 指标。 -
Prometheus 2.26.0 或更高版本正在运行。Prometheus 控制台使用对应的服务在端口
9090
上运行。请参阅 Prometheus 的第一步。
流程
配置 Prometheus,以从端口
8087
中提取指标。注意监控堆栈示例 已创建了带有空配置的
prometheus-config
ConfigMap。要提供 Prometheus 配置详情,请编辑 ConfigMap 的data
字段。例 3.33. Prometheus 配置
将
Prometheus
Deployment 向下扩展,以读取上一步中更新的 ConfigMap。oc scale --replicas=0 deployment/prometheus -n monitoring && oc scale --replicas=1 deployment/prometheus -n monitoring
$ oc scale --replicas=0 deployment/prometheus -n monitoring && oc scale --replicas=1 deployment/prometheus -n monitoring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用端口转发在本地访问
Prometheus
Service:oc port-forward svc/prometheus 9090:9090 -n monitoring
$ oc port-forward svc/prometheus 9090:9090 -n monitoring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
通过查看
localhost:9090/
的目标端点来验证所有目标是否都已启动。targets
使用 Prometheus 控制台查看和查询指标:
-
查看
localhost:9090/metrics
的指标。 从
localhost:9090/graph
查询指标。如需更多信息 ,请参阅使用表达式浏览器。
-
查看
3.6.4.3.3. 在 Grafana 仪表板中查看 OpenShift Dev Spaces 服务器指标 复制链接链接已复制到粘贴板!
查看 Grafana 上的 OpenShift Dev Spaces 服务器指标:
先决条件
- Prometheus 在 OpenShift Dev Spaces 集群上收集指标。请参阅 第 3.6.4 节 “使用 Prometheus 和 Grafana 监控”。
-
Grafana 6.0 或更高版本在带有对应服务的端口
3000
上运行。请参阅 安装 Grafana。
流程
- 为 Prometheus 实例添加数据源。请参阅创建 Prometheus 数据源。
- 导入示例 dashboard。请参阅 导入仪表板。
在 Grafana 控制台中查看 OpenShift Dev Spaces JVM 指标:
图 3.4. OpenShift Dev Spaces 服务器 JVM 仪表板
图 3.5. 快速事实
图 3.6. JVM 内存
图 3.7. JVM Misc
图 3.8. JVM 内存池(heap)
图 3.9. JVM 内存池(Non-Heap)
图 3.10. 垃圾回收
图 3.11. 类加载
图 3.12. 缓冲区池