github.com/instana/go-sensor@v1.62.2-0.20240520081010-4919868049e1/acceptor/aws.go (about)

     1  // (c) Copyright IBM Corp. 2021
     2  // (c) Copyright Instana Inc. 2020
     3  
     4  package acceptor
     5  
     6  import "time"
     7  
     8  // AWSContainerLimits is used to send container limits (CPU, memory) to the acceptor plugin
     9  type AWSContainerLimits struct {
    10  	CPU    int `json:"cpu"`
    11  	Memory int `json:"memory"`
    12  }
    13  
    14  // ECSTaskData is a representation of an ECS task for com.instana.plugin.aws.ecs.task plugin
    15  type ECSTaskData struct {
    16  	TaskARN               string                 `json:"taskArn"`
    17  	ClusterARN            string                 `json:"clusterArn"`
    18  	AvailabilityZone      string                 `json:"availabilityZone,omitempty"`
    19  	InstanaZone           string                 `json:"instanaZone,omitempty"`
    20  	TaskDefinition        string                 `json:"taskDefinition"`
    21  	TaskDefinitionVersion string                 `json:"taskDefinitionVersion"`
    22  	DesiredStatus         string                 `json:"desiredStatus"`
    23  	KnownStatus           string                 `json:"knownStatus"`
    24  	Limits                AWSContainerLimits     `json:"limits"`
    25  	PullStartedAt         time.Time              `json:"pullStartedAt"`
    26  	PullStoppedAt         time.Time              `json:"pullStoppedAt"`
    27  	Tags                  map[string]interface{} `json:"tags,omitempty"`
    28  }
    29  
    30  // NewECSTaskPluginPayload returns payload for the ECS task plugin of Instana acceptor
    31  func NewECSTaskPluginPayload(entityID string, data ECSTaskData) PluginPayload {
    32  	const pluginName = "com.instana.plugin.aws.ecs.task"
    33  
    34  	return PluginPayload{
    35  		Name:     pluginName,
    36  		EntityID: entityID,
    37  		Data:     data,
    38  	}
    39  }
    40  
    41  // ECSContainerData is a representation of an ECS container for com.instana.plugin.aws.ecs.container plugin
    42  type ECSContainerData struct {
    43  	Runtime               string             `json:"runtime"`
    44  	Instrumented          bool               `json:"instrumented,omitempty"`
    45  	DockerID              string             `json:"dockerId"`
    46  	DockerName            string             `json:"dockerName"`
    47  	ContainerName         string             `json:"containerName"`
    48  	Image                 string             `json:"image"`
    49  	ImageID               string             `json:"imageId"`
    50  	TaskARN               string             `json:"taskArn"`
    51  	TaskDefinition        string             `json:"taskDefinition"`
    52  	TaskDefinitionVersion string             `json:"taskDefinitionVersion"`
    53  	ClusterARN            string             `json:"clusterArn"`
    54  	DesiredStatus         string             `json:"desiredStatus"`
    55  	KnownStatus           string             `json:"knownStatus"`
    56  	Limits                AWSContainerLimits `json:"limits"`
    57  	CreatedAt             time.Time          `json:"createdAt"`
    58  	StartedAt             time.Time          `json:"startedAt"`
    59  	Type                  string             `json:"type"`
    60  }
    61  
    62  // NewECSContainerPluginPayload returns payload for the ECS container plugin of Instana acceptor
    63  func NewECSContainerPluginPayload(entityID string, data ECSContainerData) PluginPayload {
    64  	const pluginName = "com.instana.plugin.aws.ecs.container"
    65  
    66  	return PluginPayload{
    67  		Name:     pluginName,
    68  		EntityID: entityID,
    69  		Data:     data,
    70  	}
    71  }
    72  
    73  // NewAWSLambdaPluginPayload returns payload for the AWS Lambda plugin of Instana acceptor
    74  func NewAWSLambdaPluginPayload(entityID string) PluginPayload {
    75  	const pluginName = "com.instana.plugin.aws.lambda"
    76  
    77  	return PluginPayload{
    78  		Name:     pluginName,
    79  		EntityID: entityID,
    80  	}
    81  }