umbraco-health-check について
umbraco-health-checkは、Health Checkダッシュボードに表示するシステム診断の実装を支援するUmbraco開発者向けスキルです。バックオフィスのコンテキストと自動検出されるC#チェックを扱い、実行可能な対処案の提示方法も案内します。
主な機能
- 01カスタムシステム診断の作成
- 02Health Checkダッシュボードでの状態表示
- 03バックオフィスコンテキストによるチェック実装
- 04自動検出されるC#チェックへの対応
- 05警告と修正案の提示
活用シーン
- 01Umbracoのインストールと関連サービスの確認
- 02ダッシュボードへのカスタム診断状態の表示
- 03運用上の問題に対する修正操作の提示
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ umbraco/ umbraco-cms-backoffice-skills --skill umbraco-health-checkインストール後、Claude Code で/umbraco-health-checkを入力して読み込まれたか確認します。
詳細
Umbraco ヘルスチェック
これは何ですか?
Umbraco のヘルスチェックを使用すると、ヘルスチェックダッシュボードに表示されるカスタムのシステム診断を作成できます。これらは、Umbraco のインストールと関連サービスが正しく機能していることを検証します。ヘルスチェックは、ステータスを報告し、警告を表示し、問題を解決するための実行可能な推奨事項を提供できます。
ドキュメント
実装する前に、常に最新のドキュメントを取得してください:
- メインドキュメント: https://docs.umbraco.com/umbraco-cms/run-in-production/infrastructure-and-ops/health-check
- Foundation: https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/foundation
- Extension Registry: https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-registry
関連する Foundation スキル
-
Context API: アプリケーションの状態にアクセスする場合
- 参照スキル:
umbraco-context-api
- 参照スキル:
-
Controllers: チェック用の API エンドポイントを作成する場合
- 参照スキル:
umbraco-controllers
- 参照スキル:
ワークフロー
- ドキュメントを取得 - 上記の URL に対して WebFetch を使用します
- 質問する - 何をチェックすべきですか?どのようなアクションを提供しますか?
- ファイルを生成 - 最新のドキュメントに基づいてマニフェスト + コンテキストを作成します
- 説明する - 作成された内容とテスト方法を示します
最小限の例
マニフェスト (manifests.ts)
import type { ManifestHealthCheck } from '@umbraco-cms/backoffice/health-check';
export const manifests: Array<ManifestHealthCheck> = [
{
type: 'healthCheck',
alias: 'My.HealthCheck.Custom',
name: 'Custom Health Check',
api: () => import('./my-health-check.context.js'),
meta: {
label: 'Custom Check',
},
},
];
コンテキストの実装 (my-health-check.context.ts)
import { UmbHealthCheckContext } from '@umbraco-cms/backoffice/health-check';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import type { HealthCheckResultResponseModel } from '@umbraco-cms/backoffice/external/backend-api';
export class MyHealthCheckContext extends UmbHealthCheckContext {
constructor(host: UmbControllerHost) {
super(host);
}
override async check(): Promise<HealthCheckResultResponseModel> {
// Perform your health check logic
const isHealthy = await this.#performCheck();
return {
message: isHealthy ? 'All systems operational' : 'Issue detected',
resultType: isHealthy ? 'Success' : 'Warning',
actions: isHealthy ? [] : [
{
alias: 'fix-issue',
name: 'Fix Issue',
description: 'Attempt to automatically fix this issue',
},
],
};
}
async #performCheck(): Promise<boolean> {
// Your custom check logic here
return true;
}
override async executeAction(actionAlias: string): Promise<HealthCheckResultResponseModel> {
if (actionAlias === 'fix-issue') {
// Execute the fix action
return {
message: 'Issue has been resolved',
resultType: 'Success',
actions: [],
};
}
return {
message: 'Unknown action',
resultType: 'Error',
actions: [],
};
}
}
export { MyHealthCheckContext as api };
インターフェイスリファレンス
interface ManifestHealthCheck extends ManifestBase {
type: 'healthCheck';
api: ApiLoaderProperty; // Should implement UmbHealthCheckContext
meta: MetaHealthCheck;
}
interface MetaHealthCheck {
label: string;
}
// Result types: 'Success' | 'Warning' | 'Error' | 'Info'
interface HealthCheckResultResponseModel {
message: string;
resultType: string;
actions?: Array<{
alias: string;
name: string;
description?: string;
}>;
}
バックエンドの C# ヘルスチェック
ヘルスチェックは、Umbraco によって自動検出される C# クラスとして実装することもできます。
using Umbraco.Cms.Core.HealthChecks;
namespace MyPackage.HealthChecks;
[HealthCheck(
"12345678-1234-1234-1234-123456789012",
"My Custom Check",
Description = "Verifies custom services are running",
Group = "Custom")]
public class MyHealthCheck : HealthCheck
{
public MyHealthCheck(HealthCheckContext context) : base(context) { }
public override Task<IEnumerable<HealthCheckStatus>> GetStatus()
{
var isHealthy = CheckMyService();
var status = new HealthCheckStatus(isHealthy ? "Service running" : "Service down")
{
ResultType = isHealthy ? StatusResultType.Success : StatusResultType.Error,
Actions = isHealthy ? null : new List<HealthCheckAction>
{
new("restart", Id) { Name = "Restart Service" }
}
};
return Task.FromResult<IEnumerable<HealthCheckStatus>>(new[] { status });
}
public override HealthCheckStatus ExecuteAction(HealthCheckAction action)
{
if (action.Alias == "restart")
{
RestartMyService();
return new HealthCheckStatus("Restarted") { ResultType = StatusResultType.Success };
}
throw new InvalidOperationException("Unknown action");
}
private bool CheckMyService() => true;
private void RestartMyService() { }
}
ベストプラクティス
- 明確で実行可能なメッセージを返す
- 可能な場合は修正アクションを提供する
- 適切な結果タイプ (Success、Warning、Error、Info) を使用する
- パフォーマンスを考慮する - ヘルスチェックは定期的に実行されます
以上です!常に最新のドキュメントを取得し、例を最小限に保ち、完全に動作するコードを生成してください。
コメント
Markdown 対応