4.7. 可観測性の設定
OpenShift Dev Spaces 可観測性機能を設定するには、以下を参照してください。
4.7.1. Woopra telemetry プラグイン リンクのコピーリンクがクリップボードにコピーされました!
Woopra Telemetry プラグイン は、Telemetry を Red Hat OpenShift Dev Spaces インストールから Segment および Woopra に送信するためにビルドされたプラグインです。このプラグインは、Red Hat がホストする Eclipse Che で使用されますが、Red Hat OpenShift Dev Spaces デプロイメントではこのプラグインを利用できます。有効な Woopra ドメインおよびセグメント書き込みキー以外の依存関係はありません。プラグインである plugin.yaml の devfile v2 には、プラグインに渡すことのできる 4 つの環境変数があります。
-
WOOPRA_DOMAIN
- イベントの送信先となる Woopra ドメイン。 -
SEGMENT_WRITE_KEY
- セグメントおよび Woopra にイベントを送信するための書き込みキー。 -
WOOPRA_DOMAIN_ENDPOINT
- Woopra ドメインを直接渡さない場合、プラグインは Woopra ドメインを返す指定の HTTP エンドポイントからこれを取得します。 -
SEGMENT_WRITE_KEY_ENDPOINT
- セグメント書き込みキーを直接渡さない場合、プラグインはセグメント書き込みキーを返す指定された HTTP エンドポイントからこれを取得します。
Red Hat OpenShift Dev Spaces インストールで Woopra プラグインを有効にするには、以下を実行します。
手順
plugin.yaml
devfile v2 ファイルを、環境変数が正しく設定された HTTP サーバーにデプロイします。CheCluster
カスタムリソースを設定します。「CLI を使用して CheCluster カスタムリソースの設定」 を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.2. Telemetry プラグインの作成 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、AbstractAnalyticsManager
を拡張し、以下のメソッドを実装する AnalyticsManager
クラスを作成する方法を説明します。
-
isEnabled()
: Telemetry バックエンドが正しく機能しているかどうかを判断します。これは、常にtrue
を返すか、接続プロパティーがない場合にfalse
を返すなど、より複雑なチェックがあることを意味します。 -
destroy()
: Telemetry バックエンドをシャットダウンする前に実行されるクリーンアップ方法。このメソッドは、WORKSPACE_STOPPED
イベントを送信します。 -
onActivity()
- 特定のユーザーに対して一部のアクティビティーが依然として実行されていることを通知します。これは主にWORKSPACE_INACTIVE
イベントを送信するために使用されます。 -
onEvent()
- Telemetry イベントをWORKSPACE_USED
またはWORKSPACE_STARTED
などの Telemetry サーバーに送信します。 -
increaseDuration()
- 短時間に多くのイベントを送信するのではなく、現在のイベントの期間を長くします。
次のセクションでは、以下を説明します。
- Telemetry サーバーを作成してイベントを標準出力にエコーします。
- OpenShift Dev Spaces Telemetry クライアントを拡張して、ユーザーのカスタムバックエンドを実装します。
-
カスタムバックエンドの Dev Workspace プラグインを表す
plugin.yaml
ファイルを作成します。 -
CheCluster
カスタムリソースからworkspacesDefaultPlugins
属性を設定して、カスタムプラグインの場所を OpenShift Dev Spaces に指定します。
4.7.2.1. スタートガイド リンクのコピーリンクがクリップボードにコピーされました!
以下では、OpenShift Dev Spaces Telemetry システムを拡張してカスタムバックエンドと通信するために必要な手順を説明します。
- イベントを受信するサーバープロセスの作成
- イベントをサーバーに送信するバックエンドを作成する OpenShift Dev Spaces ライブラリーの拡張
- コンテナーでの Telemetry バックエンドのパッケージ化およびイメージレジストリーへのデプロイ
- バックエンドのプラグインを追加し、OpenShift Dev Spaces に Dev Workspaces にプラグインを読み込むよう指示
Telemetry バックエンドの最終的な例は、こちら を参照してください。
4.7.2.2. イベントを受信するサーバーの作成 リンクのコピーリンクがクリップボードにコピーされました!
この例は、Telemetry プラグインからイベントを受信し、標準出力に書き込むサーバーを作成する方法を示しています。
実稼働環境のユースケースでは、独自の Telemetry サーバーを作成するのではなく、サードパーティーの Telemetry システム (Segment、Woopra など) との統合を検討してください。この場合、プロバイダーの API を使用してイベントをカスタムバックエンドからシステムに送信します。
以下の Go コードは、ポート 8080
でサーバーを起動し、イベントを標準出力に書き込みます。
例4.23 main.go
このコードに基づいてコンテナーイメージを作成し、これを OpenShift の openshift-devspaces
プロジェクトでデプロイメントとして公開します。サンプル Telemetry サーバーのコードは telemetry-server-example で利用できます。Telemetry サーバーをデプロイするには、リポジトリーのクローンを作成し、コンテナーをビルドします。
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 およびサービスの定義が含まれます。また、前者は Kubernetes Ingress も定義しますが、後者は OpenShift Route を定義します。
マニフェストファイルで、プッシュした image
に一致する 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
4.7.2.3. バックエンドプロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
開発時に迅速なフィードバックを得るには、Dev Workspace 内で開発を行うことが推奨されます。これにより、クラスターでアプリケーションを実行し、フロントエンドの Telemetry プラグインからイベントを受信できます。
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
の下にあるファイルを削除します。 -
backend-base
の最新バージョンおよび Maven コーディネートは、GitHub パッケージ を参照してください。 以下の依存関係を
pom.xml
に追加します。例4.24
pom.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
read:packages
パーミッションでパーソナルアクセストークンを作成し、GitHub パッケージ からorg.eclipse.che.incubator.workspace-telemetry:backend-base
依存関係をダウンロードします。 GitHub ユーザー名、パーソナルアクセストークン、
che-incubator
リポジトリーの詳細を~/.m2/settings.xml
ファイルに追加します。例4.25
settings.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.2.4. AnalyticsManager の具体的な実装の作成および特殊なロジックの追加 リンクのコピーリンクがクリップボードにコピーされました!
src/main/java/mygroup
の下に、プロジェクトに 2 つのファイルを作成します。
-
MainConfiguration.java
-AnalyticsManager
に提供される設定が含まれます。 -
AnalyticsManager.java
: Telemetry システム固有のロジックが含まれます。
例4.26 MainConfiguration.java
- 1
- MicroProfile 設定アノテーションは、
welcome.message
設定を注入するために使用されます。
バックエンドに固有の設定プロパティーを設定する方法の詳細は、Quarkus 設定リファレンスガイド を参照してください。
例4.27 AnalyticsManager.java
org.my.group.AnalyticsManager
と org.my.group.MainConfiguration
は代替の Bean であるため、src/main/resources/application.properties
の quarkus.arc.selected-alternatives
プロパティーを使用して指定します。
例4.28 application.properties
quarkus.arc.selected-alternatives=MainConfiguration,AnalyticsManager
quarkus.arc.selected-alternatives=MainConfiguration,AnalyticsManager
4.7.2.5. 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
を使用して Telemetry イベントを受け取るようになりました。
検証手順
以下の出力がログに記録されていることを確認します。
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
4.7.2.6. isEnabled() の実装 リンクのコピーリンクがクリップボードにコピーされました!
この例では、このメソッドは呼び出されるたびに true
を返します。
例4.29 AnalyticsManager.java
@Override public boolean isEnabled() { return true; }
@Override
public boolean isEnabled() {
return true;
}
より複雑なロジックを isEnabled()
に設定することができます。たとえば、ホストされている OpenShift Dev Spaces Woopra バックエンド は、バックエンドが有効になっているかどうかを判断する前に、設定プロパティーが存在することを確認します。
4.7.2.7. onEvent() の実装 リンクのコピーリンクがクリップボードにコピーされました!
onEvent()
は、バックエンドが受信したイベントを Telemetry システムに送信します。サンプルアプリケーションでは、HTTP POST ペイロードを Telemetry サーバーから /event
エンドポイントに送信します。
4.7.2.7.1. サンプル Telemetry サーバーへの POST 要求の送信 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、Telemetry サーバーアプリケーションは http://little-telemetry-server-che.apps-crc.testing
の URL で OpenShift にデプロイされます。ここで、apps-crc.testing
は OpenShift クラスターの Ingress ドメイン名です。
TelemetryService.java
を作成して RESTEasy REST Client を設定します。例4.30
TelemetryService.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
POST
リクエストを行うエンドポイント。
src/main/resources/application.properties
ファイルでTelemetryService
のベース URL を指定します。例4.31
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
リクエストを送信します。例4.32
AnalyticsManager.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、HTTP 要求が Telemetry サーバーに送信され、短期間同じイベントが自動的に遅延します。デフォルトの期間は 1500 ミリ秒です。
4.7.2.8. increaseDuration() の実装 リンクのコピーリンクがクリップボードにコピーされました!
多くの Telemetry システムはイベント期間を認識します。AbstractAnalyticsManager
は、同じ期間内で発生する同様のイベントを 1 つのイベントにマージします。increaseDuration()
のこの実装は no-op です。この方法では、ユーザーの Telemetry プロバイダーの API を使用してイベントまたはイベントプロパティーを変更し、イベントの延長期間を反映します。
例4.33 AnalyticsManager.java
@Override public void increaseDuration(AnalyticsEvent event, Map<String, Object> properties) {}
@Override
public void increaseDuration(AnalyticsEvent event, Map<String, Object> properties) {}
4.7.2.9. onActivity() の実装 リンクのコピーリンクがクリップボードにコピーされました!
非アクティブなタイムアウトの制限を設定し、最後のイベント時間がタイムアウトよりも長くなる場合は、onActivity()
を使用して WORKSPACE_INACTIVE
イベントを送信します。
例4.34 AnalyticsManager.java
4.7.2.10. destroy() の実装 リンクのコピーリンクがクリップボードにコピーされました!
destroy()
が呼び出される際に、WORKSPACE_STOPPED
イベントを送信し、接続プールなどのリソースをシャットダウンします。
例4.35 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);
}
「Dev Workspace 内でのアプリケーションの実行」 で説明されているように mvn quarkus:dev
を実行し、Ctrl+C でアプリケーションを終了すると、WORKSPACE_STOPPED
イベントがサーバーに送信されます。
4.7.2.11. Quarkus アプリケーションのパッケージ化 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションをコンテナーにパッケージ化する最適な方法は、Quarkus ドキュメント を参照してください。コンテナーをビルドし、選択したコンテナーレジストリーにプッシュします。
4.7.2.11.1. JVM で実行する Quarkus イメージをビルドするための Dockerfile の例 リンクのコピーリンクがクリップボードにコピーされました!
例4.36 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 .
4.7.2.11.2. Quarkus ネイティブイメージをビルドするための Dockerfile の例 リンクのコピーリンクがクリップボードにコピーされました!
例4.37 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 .
4.7.2.12. プラグインの plugin.yaml の作成 リンクのコピーリンクがクリップボードにコピーされました!
Dev Workspace Pod でカスタムバックエンドを実行する Dev Workspace プラグインを表す plugin.yaml
devfile v2 ファイルを作成します。devfile v2 の詳細は、Devfile v2 documentation を参照してください。
例4.38 plugin.yaml
- 1
- 「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
ディレクトリーに配置します。
例4.39 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
4.7.2.13. Dev Workspace での Telemetry プラグインの指定 リンクのコピーリンクがクリップボードにコピーされました!
以下を既存の 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 を起動します。
検証手順
telemetry plugin コンテナーが Dev Workspace Pod で稼働していることを確認します。ここでは、これはエディターで Workspace ビューをチェックして検証されます。
- エディター内のファイルを編集し、Telemetry サーバーのログのサンプルでイベントを確認します。
4.7.2.14. すべての Dev Workspaces の Telemetry プラグインの適用 リンクのコピーリンクがクリップボードにコピーされました!
Telemetry プラグインをデフォルトのプラグインとして設定します。デフォルトのプラグインは、新規および既存の Dev Workspaces の Dev Workspace の起動に適用されます。
CheCluster
カスタムリソースを設定します。「CLI を使用して CheCluster カスタムリソースの設定」 を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
- Red Hat OpenShift Dev Spaces ダッシュボードから新規または既存の Dev Workspace を起動します。
- 「Dev Workspace での Telemetry プラグインの指定」 の検証手順に従って、Telemetry プラグインが機能していることを確認します。
4.7.2.15. サーバーロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Dev Spaces サーバーで利用可能な個別のロガーのログレベルを微調整できます。
OpenShift Dev Spaces サーバー全体のログレベルは、Operator の cheLogLevel
設定プロパティーを使用してグローバルに設定されます。「CheCluster
カスタムリソースフィールドの参照」 を参照してください。Operator によって管理されないインストールでグローバルログレベルを設定するには、che
ConfigMap で CHE_LOG_LEVEL
環境変数を指定します。
CHE_LOGGER_CONFIG
環境変数を使用して、OpenShift Dev Spaces サーバーの個々のロガーのログレベルを設定することができます。
4.7.2.15.1. ログレベルの設定 リンクのコピーリンクがクリップボードにコピーされました!
手順
CheCluster
カスタムリソースを設定します。「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 サーバーログ出力に表示されるロガーの名前で、値は必要なログレベルになります。
例4.40
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
4.7.2.15.2. ロガーの命名 リンクのコピーリンクがクリップボードにコピーされました!
ロガーの名前は、それらのロガーを使用する内部サーバークラスのクラス名に従います。
4.7.2.15.3. HTTP トラフィックのロギング リンクのコピーリンクがクリップボードにコピーされました!
手順
OpenShift Dev Spaces サーバーと Kubernetes または OpenShift クラスターの API サーバー間の HTTP トラフィックをログに記録するには、
CheCluster
カスタムリソースを設定します。「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
4.7.2.16. 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 ログを/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>
パラメーターが必要です。ここで、<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
パラメーターを使用して指定できます。
関連情報
4.7.3. Dev Workspace Operator のモニタリング リンクのコピーリンクがクリップボードにコピーされました!
OpenShift クラスター内監視スタックを設定して、Dev Workspace Operator によって公開されるメトリックを取得できます。
4.7.3.1. Dev Workspace Operator メトリクスの収集 リンクのコピーリンクがクリップボードにコピーされました!
クラスター内 Prometheus インスタンスを使用して、Dev Workspace Operator に関するメトリックを収集、保存、クエリーするには:
前提条件
- OpenShift Dev Spaces の組織インスタンスが Red Hat OpenShift にインストールされ、実行されています。
-
宛先 OpenShift クラスターへの管理権限を持つアクティブな
oc
セッション。CLI のスタートガイド を参照してください。 -
devworkspace-controller-metrics
サービスは、ポート8443
でメトリックを公開している。これはデフォルトで事前設定されています。
手順
Dev Workspace Operator メトリックサービスを検出するための ServiceMonitor を作成します。
クラスター内の Prometheus インスタンスが OpenShift Dev Spaces namespace 内の ServiceMonitor を検出できるようにします。デフォルトの OpenShift Dev Spaces の namespace は
openshift-devspaces
です。oc label namespace openshift-devspaces openshift.io/cluster-monitoring=true
$ oc label namespace openshift-devspaces openshift.io/cluster-monitoring=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
- OpenShift Dev Spaces を新規インストールする場合は、ダッシュボードから OpenShift Dev Spaces ワークスペースを作成してメトリックを生成します。
-
OpenShift Web コンソールの Administrator ビューで、Observe
Metrics に移動します。 PromQL クエリーを実行して、メトリックが利用可能であることを確認します。たとえば、
devworkspace_started_total
を入力し、Run queries をクリックします。その他のメトリクスは、「Dev Workspace 固有のメトリック」 を参照してください。
不足しているメトリクスのトラブルシューティングを行うには、Prometheus コンテナーログで RBAC 関連のエラーを確認します。
Prometheus Pod の名前を取得します。
$ oc get pods -l app.kubernetes.io/name=prometheus -n openshift-monitoring -o=jsonpath='{.items[*].metadata.name}'
$ oc get pods -l app.kubernetes.io/name=prometheus -n openshift-monitoring -o=jsonpath='{.items[*].metadata.name}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前のステップの Prometheus Pod から Prometheus コンテナーログの最後の 20 行を出力します。
$ oc logs --tail=20 <prometheus_pod_name> -c prometheus -n openshift-monitoring
$ oc logs --tail=20 <prometheus_pod_name> -c prometheus -n openshift-monitoring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.3.2. Dev Workspace 固有のメトリック リンクのコピーリンクがクリップボードにコピーされました!
次の表は、devworkspace-controller-metrics
サービスによって公開される Dev Workspace 固有のメトリックを説明しています。
名前 | 型 | 説明 | ラベル |
---|---|---|---|
| カウンター | Dev Workspace の開始イベントの数。 |
|
| カウンター |
|
|
| カウンター | 失敗した Dev Workspaces の数。 |
|
| ヒストグラム | Dev Workspace の起動にかかった総時間 (秒)。 |
|
名前 | 説明 | 値 |
---|---|---|
|
Dev Workspace の |
|
|
Dev Workspace の |
|
| ワークスペースの起動失敗の理由です。 |
|
名前 | 説明 |
---|---|
| Dev Workspace の作成に使用された devfile が無効であるため、起動に失敗しました。 |
|
|
| 不明な失敗理由。 |
4.7.3.3. OpenShift Web コンソールダッシュボードからの Dev Workspace Operator メトリックの表示 リンクのコピーリンクがクリップボードにコピーされました!
Dev Workspace Operator メトリックを収集するようにクラスター内 Prometheus インスタンスを設定した後、OpenShift Web コンソールの Administrator パースペクティブのカスタムダッシュボードにメトリックを表示できます。
前提条件
- OpenShift Dev Spaces の組織インスタンスが Red Hat OpenShift にインストールされ、実行されています。
-
宛先 OpenShift クラスターへの管理権限を持つアクティブな
oc
セッション。CLI のスタートガイド を参照してください。 - クラスター内の Prometheus インスタンスはメトリックを収集しています。「Dev Workspace Operator メトリクスの収集」 を参照してください。
手順
openshift-config-managed
プロジェクトでダッシュボード定義の ConfigMap を作成し、必要なラベルを適用します。oc create configmap grafana-dashboard-dwo \ --from-literal=dwo-dashboard.json="$(curl https://raw.githubusercontent.com/devfile/devworkspace-operator/main/docs/grafana/openshift-console-dashboard.json)" \ -n openshift-config-managed
$ oc create configmap grafana-dashboard-dwo \ --from-literal=dwo-dashboard.json="$(curl https://raw.githubusercontent.com/devfile/devworkspace-operator/main/docs/grafana/openshift-console-dashboard.json)" \ -n openshift-config-managed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記前のコマンドには、アップストリームコミュニティーからの資料へのリンクが含まれています。この資料は、利用可能な最新のコンテンツと最新のベストプラクティスを表しています。これらのヒントは Red Hat の QE 部門によってまだ精査されておらず、広範なユーザーグループによってまだ証明されていません。この情報は慎重に使用してください。
oc label configmap grafana-dashboard-dwo console.openshift.io/dashboard=true -n openshift-config-managed
$ oc label configmap grafana-dashboard-dwo console.openshift.io/dashboard=true -n openshift-config-managed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ダッシュボード定義は、Grafana 6.x ダッシュボードに基づいています。すべての Grafana 6.x ダッシュボード機能が OpenShift Web コンソールでサポートされているわけではありません。
検証手順
-
OpenShift Web コンソールの Administrator ビューで、Observe
Dashboards に移動します。 -
Dashboard
Che Server JVM に移動し、ダッシュボードパネルにデータが含まれていることを確認します。
4.7.3.4. Dev Workspace Operator 用のダッシュボード リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Web コンソールのカスタムダッシュボードは Grafana 6.x に基づいており、Dev Workspace Operator からの次のメトリックを表示します。
Grafana 6.x ダッシュボードのすべての機能が OpenShift Web コンソールダッシュボードとしてサポートされているわけではありません。
4.7.3.4.1. Dev Workspace メトリック リンクのコピーリンクがクリップボードにコピーされました!
Dev Workspace 固有のメトリクスは、Dev Workspace Metrics パネルに表示されます。
図4.1 Dev Workspace Metrics パネル
- ワークスペースの平均起動時間
- ワークスペースの平均起動時間。
- ワークスペースの起動
- ワークスペースの起動の成功と失敗の回数。
- Dev Workspace の成功と失敗
- Dev Workspace の起動の成功と失敗の比較。
- Dev Workspace の失敗率
- ワークスペースの起動失敗回数と総起動回数の比率。
- Dev Workspace 起動失敗の理由
ワークスペース起動失敗の分布を表示する円グラフ:
-
BadRequest
-
InfrastructureFailure
-
Unknown
-
4.7.3.4.2. Operator メトリクス リンクのコピーリンクがクリップボードにコピーされました!
Operator 固有のメトリクスは Operator Metrics パネルに表示されます。
図4.2 Operator Metrics パネル
- 進行中の Webhook
- さまざまな Webhook リクエストの数の比較。
- 作業キューの深さ
- 作業キューにある調整リクエストの数。
- メモリー
- Dev Workspace コントローラーと Dev Workspace Webhook サーバーのメモリー使用状況。
- 1 秒あたりの平均調整数 (DWO)
- Dev Workspace コントローラーの 1 秒あたりの平均調整回数。
4.7.4. Dev Spaces サーバーの監視 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Dev Spaces サーバーの JVM メモリーやクラスローディングなどの JVM メトリックを公開するように OpenShift Dev Spaces を設定できます。
4.7.4.1. OpenShift Dev Spaces サーバーメトリックの有効化と公開 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Dev Spaces は、che-host
サービスのポート 8087
で JVM メトリックを公開します。この動作を設定できます。
手順
CheCluster
カスタムリソースを設定します。「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
。
4.7.4.2. Prometheus を使用した OpenShift Dev Spaces メトリックの収集 リンクのコピーリンクがクリップボードにコピーされました!
クラスター内 Prometheus インスタンスを使用して OpenShift Dev Spaces Server の JVM メトリックを収集、保存、およびクエリーするには:
前提条件
- OpenShift Dev Spaces の組織インスタンスが Red Hat OpenShift にインストールされ、実行されています。
-
宛先 OpenShift クラスターへの管理権限を持つアクティブな
oc
セッション。CLI のスタートガイド を参照してください。 -
OpenShift Dev Spaces は、ポート
8087
にメトリックを公開しています。OpenShift Dev Spaces サーバーの JVM メトリクスの有効化および公開 を参照してください。
手順
OpenShift Dev Spaces JVM メトリックサービスを検出するための ServiceMonitor を作成します。
Prometheus がメトリックを表示できるようにするには、Role と RoleBinding を作成します。
例4.43 Role
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- OpenShift Dev Spaces namespace。デフォルトは
openshift-devspaces
です。
例4.44 RoleBinding
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- OpenShift Dev Spaces namespace。デフォルトは
openshift-devspaces
です。
クラスター内の Prometheus インスタンスが OpenShift Dev Spaces namespace 内の ServiceMonitor を検出できるようにします。デフォルトの OpenShift Dev Spaces の namespace は
openshift-devspaces
です。oc label namespace openshift-devspaces openshift.io/cluster-monitoring=true
$ oc label namespace openshift-devspaces openshift.io/cluster-monitoring=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
-
OpenShift Web コンソールの Administrator ビューで、Observe
Metrics に移動します。 -
PromQL クエリーを実行して、メトリックが利用可能であることを確認します。たとえば、
process_uptime_seconds{job="che-host"}
と入力し、Run queries をクリックします。
不足しているメトリクスのトラブルシューティングを行うには、Prometheus コンテナーログで RBAC 関連のエラーを確認します。
Prometheus Pod の名前を取得します。
$ oc get pods -l app.kubernetes.io/name=prometheus -n openshift-monitoring -o=jsonpath='{.items[*].metadata.name}'
$ oc get pods -l app.kubernetes.io/name=prometheus -n openshift-monitoring -o=jsonpath='{.items[*].metadata.name}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前のステップの Prometheus Pod から Prometheus コンテナーログの最後の 20 行を出力します。
$ oc logs --tail=20 <prometheus_pod_name> -c prometheus -n openshift-monitoring
$ oc logs --tail=20 <prometheus_pod_name> -c prometheus -n openshift-monitoring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7.4.3. OpenShift Web コンソールダッシュボードからの OpenShift Dev Spaces Server の表示 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Dev Spaces Server JVM メトリックを収集するようにクラスター内 Prometheus インスタンスを設定した後、OpenShift Web コンソールの Administrator パースペクティブのカスタムダッシュボードにメトリックを表示できます。
前提条件
- OpenShift Dev Spaces の組織インスタンスが Red Hat OpenShift にインストールされ、実行されています。
-
宛先 OpenShift クラスターへの管理権限を持つアクティブな
oc
セッション。CLI のスタートガイド を参照してください。 - クラスター内の Prometheus インスタンスはメトリックを収集しています。「Prometheus を使用した OpenShift Dev Spaces メトリックの収集」 を参照してください。
手順
openshift-config-managed
プロジェクトでダッシュボード定義の ConfigMap を作成し、必要なラベルを適用します。oc create configmap grafana-dashboard-devspaces-server \ --from-literal=devspaces-server-dashboard.json="$(curl https://raw.githubusercontent.com/eclipse-che/che-server/main/docs/grafana/openshift-console-dashboard.json)" \ -n openshift-config-managed
$ oc create configmap grafana-dashboard-devspaces-server \ --from-literal=devspaces-server-dashboard.json="$(curl https://raw.githubusercontent.com/eclipse-che/che-server/main/docs/grafana/openshift-console-dashboard.json)" \ -n openshift-config-managed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記前のコマンドには、アップストリームコミュニティーからの資料へのリンクが含まれています。この資料は、利用可能な最新のコンテンツと最新のベストプラクティスを表しています。これらのヒントは Red Hat の QE 部門によってまだ精査されておらず、広範なユーザーグループによってまだ証明されていません。この情報は慎重に使用してください。
oc label configmap grafana-dashboard-devspaces-server console.openshift.io/dashboard=true -n openshift-config-managed
$ oc label configmap grafana-dashboard-devspaces-server console.openshift.io/dashboard=true -n openshift-config-managed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ダッシュボード定義は、Grafana 6.x ダッシュボードに基づいています。すべての Grafana 6.x ダッシュボード機能が OpenShift Web コンソールでサポートされているわけではありません。
検証手順
-
OpenShift Web コンソールの Administrator ビューで、Observe
Dashboards に移動します。 Dashboard
Dev Workspace Operator に移動し、ダッシュボードパネルにデータが含まれていることを確認します。 図4.3 クイックファクト
図4.4 JVM メモリー
図4.5 JVM Misc
図4.6 JVM メモリープール (ヒープ)
図4.7 JVM メモリープール (非ヒープ)
図4.8 ガベージコレクション
図4.9 クラスローディング
図4.10 バッファープール