Documentation
¶
Overview ¶
Copyright The OpenTelemetry Authors SPDX-License-Identifier: Apache-2.0
Copyright The OpenTelemetry Authors SPDX-License-Identifier: Apache-2.0
Copyright The OpenTelemetry Authors SPDX-License-Identifier: Apache-2.0
Index ¶
- Constants
- func ConvertToOTLPMetrics(fields map[string]any, tags map[string]string, logger *zap.Logger) pmetric.Metrics
- func GetUnitForMetric(metric string) string
- func IsContainer(mType string) bool
- func IsInstance(mType string) bool
- func IsNode(mType string) bool
- func IsPod(mType string) bool
- func MetricName(mType string, measurement string) string
- func RemovePrefix(mType string, metricName string) string
- func SumFields(fields []map[string]any) map[string]float64
Constants ¶
const ( // We assume 50 micro-seconds is the minimal gap between two collected data sample to be valid to calculate delta MinTimeDiff = 50 * time.Microsecond // Attribute names InstanceID = "InstanceId" InstanceType = "InstanceType" ClusterNameKey = "ClusterName" AutoScalingGroupNameKey = "AutoScalingGroupName" NodeNameKey = "NodeName" Version = "Version" DiskDev = "device" EbsVolumeID = "ebs_volume_id" // used by kubernetes cluster as persistent volume HostEbsVolumeID = "EBSVolumeId" // used by host filesystem FSType = "fstype" MetricType = "Type" SourcesKey = "Sources" Timestamp = "Timestamp" // The following constants are used for metric name construction CPUTotal = "cpu_usage_total" CPUUser = "cpu_usage_user" CPUSystem = "cpu_usage_system" CPULimit = "cpu_limit" CPUUtilization = "cpu_utilization" CPURequest = "cpu_request" CPUReservedCapacity = "cpu_reserved_capacity" CPUUtilizationOverPodLimit = "cpu_utilization_over_pod_limit" MemUsage = "memory_usage" MemCache = "memory_cache" MemRss = "memory_rss" MemMaxusage = "memory_max_usage" MemSwap = "memory_swap" MemFailcnt = "memory_failcnt" MemMappedfile = "memory_mapped_file" MemWorkingset = "memory_working_set" MemPgfault = "memory_pgfault" MemPgmajfault = "memory_pgmajfault" MemHierarchicalPgfault = "memory_hierarchical_pgfault" MemHierarchicalPgmajfault = "memory_hierarchical_pgmajfault" MemLimit = "memory_limit" MemRequest = "memory_request" MemUtilization = "memory_utilization" MemReservedCapacity = "memory_reserved_capacity" MemUtilizationOverPodLimit = "memory_utilization_over_pod_limit" NetIfce = "interface" NetRxBytes = "network_rx_bytes" NetRxPackets = "network_rx_packets" NetRxDropped = "network_rx_dropped" NetRxErrors = "network_rx_errors" NetTxBytes = "network_tx_bytes" NetTxPackets = "network_tx_packets" NetTxDropped = "network_tx_dropped" NetTxErrors = "network_tx_errors" NetTotalBytes = "network_total_bytes" FSUsage = "filesystem_usage" FSCapacity = "filesystem_capacity" FSAvailable = "filesystem_available" FSInodes = "filesystem_inodes" FSInodesfree = "filesystem_inodes_free" FSUtilization = "filesystem_utilization" RunningPodCount = "number_of_running_pods" RunningContainerCount = "number_of_running_containers" ContainerCount = "number_of_containers" NodeCount = "node_count" FailedNodeCount = "failed_node_count" ContainerRestartCount = "number_of_container_restarts" RunningTaskCount = "number_of_running_tasks" DiskIOServiceBytesPrefix = "diskio_io_service_bytes_" DiskIOServicedPrefix = "diskio_io_serviced_" DiskIOAsync = "Async" DiskIORead = "Read" DiskIOSync = "Sync" DiskIOWrite = "Write" DiskIOTotal = "Total" // Define the metric types TypeCluster = "Cluster" TypeClusterService = "ClusterService" TypeClusterNamespace = "ClusterNamespace" TypeService = "Service" TypeInstance = "Instance" // mean EC2 Instance in ECS TypeNode = "Node" // mean EC2 Instance in EKS TypeInstanceFS = "InstanceFS" TypeNodeFS = "NodeFS" TypeInstanceNet = "InstanceNet" TypeNodeNet = "NodeNet" TypeInstanceDiskIO = "InstanceDiskIO" TypeNodeDiskIO = "NodeDiskIO" TypePod = "Pod" TypePodNet = "PodNet" TypeContainer = "Container" TypeContainerFS = "ContainerFS" TypeContainerDiskIO = "ContainerDiskIO" // Special type for pause container // because containerd does not set container name pause container name to POD like docker does. TypeInfraContainer = "InfraContainer" // unit UnitBytes = "Bytes" UnitMegaBytes = "Megabytes" UnitNanoSecond = "Nanoseconds" UnitBytesPerSec = "Bytes/Second" UnitCount = "Count" UnitCountPerSec = "Count/Second" UnitVCPU = "vCPU" UnitPercent = "Percent" )
define metric names, attribute names, metric types, and units for both EKS and ECS Container Insights
const ( ContainerInstanceIDKey = "ContainerInstanceId" ECS = "ecs" )
define constants that are used for ECS Container Insights only
const ( EKS = "eks" KubeSecurePort = "10250" // attribute names Kubernetes = "kubernetes" K8sNamespace = "Namespace" PodIDKey = "PodId" PodNameKey = "PodName" FullPodNameKey = "FullPodName" K8sPodNameKey = "K8sPodName" ContainerNamekey = "ContainerName" ContainerIDkey = "ContainerId" PodStatus = "pod_status" ContainerStatus = "container_status" ContainerStatusReason = "container_status_reason" ContainerLastTerminationReason = "container_last_termination_reason" // Pod Owners ReplicaSet = "ReplicaSet" ReplicationController = "ReplicationController" StatefulSet = "StatefulSet" DaemonSet = "DaemonSet" Deployment = "Deployment" Job = "Job" CronJob = "CronJob" )
define constants that are used for EKS Container Insights only
Variables ¶
This section is empty.
Functions ¶
func ConvertToOTLPMetrics ¶
func ConvertToOTLPMetrics(fields map[string]any, tags map[string]string, logger *zap.Logger) pmetric.Metrics
ConvertToOTLPMetrics converts a field containing metric values and tags containing the relevant labels to OTLP metrics. For legacy reasons, the timestamp is stored in the tags map with the key "Timestamp", but, unlike other tags, it is not added as a resource attribute to avoid high-cardinality metrics.
func GetUnitForMetric ¶
GetUnitForMetric returns unit for a given metric
func IsContainer ¶
IsContainer checks if a type belongs to container level metrics
func IsInstance ¶
IsInstance checks if a type belongs to instance level metrics (for ECS)
func MetricName ¶
MetricName returns the metric name based on metric type and measurement name For example, a type "node" and a measurement "cpu_utilization" gives "node_cpu_utilization"
func RemovePrefix ¶
RemovePrefix removes the prefix (e.g. "node_", "pod_") from the metric name
Types ¶
This section is empty.