Func によるカスタム健康度関数¶
Guance は Func プラットフォーム を通じて、健康度の計算ロジックをカスタマイズできます。独自の関数を作成し、DQL、構成エンティティ、イベントなどのデータを自由に使って健康度を計算し、プラットフォームのデフォルトアルゴリズムを置き換えることができます。
関数スクリプトの作成¶
Func で関数スクリプトを新規作成します。関数名は自由に設定できますが、以下の入出力の制約を満たす必要があります。
入力パラメータ:
| フィールド | 必須 | 説明 |
|---|---|---|
entity |
はい | 現在健康度を計算するエンティティのリスト。各エンティティオブジェクトには、完全な URN、エンティティ名、タイプ、タグなどの基本情報が含まれます |
出力形式:
入力パラメータ entity を走査し、エンティティごとに健康度を計算します。関数はオブジェクトを返す必要があります。各エンティティの完全な URN をキーとし、以下のフィールドを含むオブジェクトを値とします。
| フィールド | 必須 | 説明 |
|---|---|---|
health_status |
はい | 健康状態。固定値:healthy(正常)、warning(注意)、critical(重大)、unknown(不明) |
health_score |
はい | 0〜100 点の健康スコア。計算できない場合は null を返します |
{
"エンティティAのURN": {"health_status": "healthy", "health_score": 95},
"エンティティBのURN": {"health_status": "warning", "health_score": 65}
}
関数の例:
'''
カスタム健康度関数の例
説明:
1. 関数名は自由に設定できます。入力パラメータには entity が必須です
2. entity は現在健康度を計算するエンティティのリストです
3. 関数内では DQL、components、events などを使用してデータを自由にクエリし、計算できます
4. entity を走査してエンティティごとに計算し、エンティティの完全な URN をキーとして結果を返します
5. 各エンティティの結果には health_status と health_score が含まれている必要があります
'''
@DFF.API('自定义系统健康度', category='dataPlatform.entityHealthFunc')
def myCustomHealth(entity):
result = {}
for item in entity:
# 現在のエンティティに基づいて構成エンティティ、関連アラートなどのデータをクエリ
# カスタム計算ロジック...
urn = item['urn']
result[urn] = {
'health_status': 'healthy',
'health_score': 95
}
return result
関数カテゴリの追加¶
作成が完了したら、関数にカテゴリタグを追加する必要があります。追加しない場合、その関数は健康度設定の選択リストに表示されません。
カテゴリタグは次の固定値です:
関数の公開¶
コードの作成が完了したら、公開 をクリックします。未公開の関数は健康度設定に表示されません。
健康度設定での使用¶
公開に成功したら、統合カタログ > エンティティタイプ管理 に移動し、操作列の「健康度設定」をクリックして、「カスタム関数」を選択します。
このとき、ドロップダウンリストには、公開済みで分類が dataPlatform.entityHealthFunc であるすべての関数が表示されます。作成した関数を選択して保存すると有効になります。
よくある質問¶
作成した関数が健康度設定のドロップダウンリストに表示されないのはなぜですか?
次の 3 点を確認してください:
- 関数が公開されているか
category='dataPlatform.entityHealthFunc'のカテゴリを追加しているか- 関数が
@DFF.APIデコレータで正しく登録されているか
関数の実行に失敗した場合はどうなりますか?
プラットフォームは関数の出力を検証します。出力形式が要件を満たさない場合や実行時にエラーが発生した場合、そのシステムの健康度は「不明」と表示されます。
関数内ではどのようなデータを使用できますか?
関数内では、DQL を使用してメトリクス、ログ、イベントなどのデータをクエリでき、また entity の構成エンティティの情報を読み取ることもできます。具体的なクエリ方法については Func プラットフォームのドキュメント を参照してください。