Kubernetes の定義済みのテンプレート変数

定義済みの変数は、HTTP リクエストテンプレートまたは電子メールテンプレートで使用できます。トリガーイベントのコンテキストにおける変数の値は、実際のリクエストまたはメールを送信する際にポリシーエンジンによって置換されます。

情報クラスとベース名を使用して変数を形成し、電子メールテンプレートと HTML テンプレートでこれらの定義済み変数を使用する必要があります。Notification(通告)にこのテンプレートを使用するには、「Notification(通告)アクション」を参照してください。

ベース名

ベース名は、定義済み変数に対して、対応する情報クラスフィールドとともに使用されます。Kubernetes 関連のトリガーイベントの場合、ベース名は latestEvent です。

変数名の形成

事前定義された変数名を形成するには、変数のベース名を対応する情報クラスのフィールドに結合します。

情報クラスに複数のフィールドが含まれる場合、1つのフィールドを選択してベース名と関連付けます。情報クラスと関連付けられているフィールドの一覧については、「情報クラスフィールド」を参照してください。たとえば、Kubernetes エンティティ名と属性をテンプレート内で変数として使用するには、ベース名 latestEventname, entityTypeDisplayName および ModernEntityInfo クラスの属性フィールドと組み合わせます。これにより、次の変数が形成されます。
CODE
${latestEvent.modernEntity.name} (${latestEvent.modernEntity.entityTypeDisplayName})
${latestEvent.modernEntity.attributes}
これらは、ModernEntityInfo クラスで利用可能なフィールドです。
  • entityType:CLUSTER、NAMESPACE、DEPLOYMENT、POD などのエンティティのタイプ。
  • entityTypeDisplayName:クラスターなどのエンティティタイプの表示名。
  • name:エンティティの実際の名前。
  • isLegacyEntity:エンティティが最新(Kubernetes エンティティ)か旧来かを判断します。たとえば、影響を受けるエンティティに対して反復する場合は、このフィールドを使用できます。
  • attributes:Kubernetes エンティティに必要な属性を階層的に含めます。以下は、サポートされる属性です。
    • k8s.cluster.name
    • k8s.namespace.name
    • k8s.deployment.name
    • k8s.daemonset.name
    • k8s.cronjob.name
    • k8s.statefulset.name
    • k8s.replicaset.name
    • k8s.container.name
    • k8s.resourcequota.name
    • k8s.pod.name
    • k8s.entity.type
    • k8s.workload.type
EventInfo クラスには、ModernEntity フィールドが含まれているため、クラス ModernEntityInfo で言及されているフィールドのいずれかを使用できます。次のように、テンプレートで変数を使用できます。
CODE
${latestEvent.modernEntity.name} (${latestEvent.modernEntity.entityTypeDisplayName})
${latestEvent.modernEntity.attributes}
事前定義されたテンプレートの使用の詳細については、「変数名の形成」および「ベース名」を参照してください。

情報クラスフィールド

ここで言及されているフィールドは、テンプレートで使用できる変数を形成するのに役立ちます。情報クラスの詳細については、「情報クラスフィールド」を参照してください。
  • ModernEntityInfo クラスは Kubernetes エンティティに使用されます。
  • EntityInfo クラスには、エンティティが旧来(アプリケーション、階層、ノードなど)であるか、最新(Kubernetes エンティティ)であるかに関する情報を提供する、isLegacyEntity フィールドが含まれます。
  • ModernEntityInfo クラス内の属性フィールドは、階層的に詳細を決定することを目的としています。
  • 長い識別子は EntityInfo クラスにのみ適用され、ModernEntity には適用されません。
CODE
class EventInfo {
  EventType eventType  
  String guid
  String eventTypeKey
  Date eventTime
  String displayName
  String summaryMessage
  String eventMessage
  EntityInfo application
  EntityInfo tier
  EntityInfo node
  EntityInfo db
  ModernEntityInfo modernEntity;
  List<EntityInfo> affectedEntities
  boolean healthRuleEvent
  EntityInfo anomaly // * Only defined in case of anomaly event
  EntityInfo healthRule // * Only defined when healthRuleEvent == true
  EntityInfo incident // * Only defined when healthRuleEvent == true
  boolean healthRuleViolationEvent
  NotificationSeverity severity
  ImageInfo severityImage
  boolean btPerformanceEvent // * true when eventType matches one of the BT performance event types
  String deepLink
}

class ImageInfo {
  String name
  String fileName
  String mimeContentRef
  String deepLink
}

class EntityInfo { 
  EntityType entityType 
  String entityTypeDisplayName 
  long id 
  String name 
  boolean isLegacyEntity;
  Map<String, String> tagValues    
} 

class ModernEntityInfo extends EntityInfo {
  String entityTypeDisplayName;
  Map<String, Object> attributes; 
}

class ModernEntityInfo {
  EntityType entityType;
  String entityTypeDisplayName;
  String name;
  boolean isLegacyEntity;
  Map<String, Object> attributes; 
}

class ActionInfo extends EntityInfo {
 Date triggerTime 
} 


class PolicyInfo extends EntityInfo {
 boolean digest 
 digestDurationInMins 
}

class PolicyInfo {
  EntityType entityType
  String entityTypeDisplayName
  long id
  String name
  boolean digest
  int digestDurationInMins
}

class ActionInfo {
  EntityType entityType
  String entityTypeDisplayName
  String name
  Date triggerTime
}
enum NotificationSeverity { INFO, WARN, ERROR }
 
class NodeTemplateVariables {
    private String name;
    private long tierId;
    private String tierName;
    private long machineId;
    private String machineName;
    private boolean machineAgentPresent;
    private String machineAgentVersion;
    private boolean appAgentPresent;
    private String appAgentVersion;
    private String ipAddresses;
    private AgentType agentType;
 	private Map<String, String> tagValues;
}