mcpField
U
umbraco-health-check

umbraco-health-check

github.com/umbracoクラウド・DevOps27388 回インストール6 週間前に更新
リポジトリ

umbraco-health-check について

umbraco-health-checkは、Health Checkダッシュボードに表示するシステム診断の実装を支援するUmbraco開発者向けスキルです。バックオフィスのコンテキストと自動検出されるC#チェックを扱い、実行可能な対処案の提示方法も案内します。

主な機能

  1. 01カスタムシステム診断の作成
  2. 02Health Checkダッシュボードでの状態表示
  3. 03バックオフィスコンテキストによるチェック実装
  4. 04自動検出されるC#チェックへの対応
  5. 05警告と修正案の提示

活用シーン

  1. 01Umbracoのインストールと関連サービスの確認
  2. 02ダッシュボードへのカスタム診断状態の表示
  3. 03運用上の問題に対する修正操作の提示

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/umbraco/umbraco-cms-backoffice-skills --skill umbraco-health-check

インストール後、Claude Code で/umbraco-health-checkを入力して読み込まれたか確認します。

詳細

Umbraco ヘルスチェック

これは何ですか?

Umbraco のヘルスチェックを使用すると、ヘルスチェックダッシュボードに表示されるカスタムのシステム診断を作成できます。これらは、Umbraco のインストールと関連サービスが正しく機能していることを検証します。ヘルスチェックは、ステータスを報告し、警告を表示し、問題を解決するための実行可能な推奨事項を提供できます。

ドキュメント

実装する前に、常に最新のドキュメントを取得してください:

関連する Foundation スキル

  • Context API: アプリケーションの状態にアクセスする場合

    • 参照スキル: umbraco-context-api
  • Controllers: チェック用の API エンドポイントを作成する場合

    • 参照スキル: umbraco-controllers

ワークフロー

  1. ドキュメントを取得 - 上記の URL に対して WebFetch を使用します
  2. 質問する - 何をチェックすべきですか?どのようなアクションを提供しますか?
  3. ファイルを生成 - 最新のドキュメントに基づいてマニフェスト + コンテキストを作成します
  4. 説明する - 作成された内容とテスト方法を示します

最小限の例

マニフェスト (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) を使用する
  • パフォーマンスを考慮する - ヘルスチェックは定期的に実行されます

以上です!常に最新のドキュメントを取得し、例を最小限に保ち、完全に動作するコードを生成してください。

コメント