Kubernetes data collection and agent interface

The Observe Agent Helm Chart scrapes and produces some data by default in addition to being able to ingest various other user-provided data. This document will describe the schemas of the data available by default when installing the Agent Helm Chart but does not represent a comprehensive list of all data that might be present after installing the Helm Chart.

Metrics

We gather metrics through multiple components including the hostmetrics receiver, the k8scluster receiver, the kubeletstats receiver, and the prometheus receiver. For each of these receivers, we configure a subset of metrics to gather from the overall list that is available. The metrics are gathered into two datasets, one representing the metric point and another representing the metric metadata such as unit, description, etc.

Prometheus Metrics Schema

Column NameColumn TypeDescription
timestampdatetimeTimestamp of metric
metricstringMetric name
valuedoubleMetric Value
labelsJSONLabels associated with metric
metaJSONIngestion related metadata of metric

Prometheus Metadata Schema

Column NameColumn TypeDescription
timestampdatetimeTimestamp of metric metadata
metricstringMetric name
metric_typestringMetric type
metric_unitstringMetric unit
metric_descriptionstringMetric description
metaJSONIngestion related metadata of metric

hostmetrics receiver

List of metrics produced:

  • system_filesystem_usage_bytes
  • system_disk_operation_time_seconds_total
  • system_disk_io_bytes_total
  • system_disk_merged_total
  • system_disk_operations_total
  • system_filesystem_inodes_usage
  • system_cpu_time_seconds_total
  • system_disk_weighted_io_time_seconds_total
  • system_disk_pending_operations
  • system_disk_io_time_seconds_total
  • system_network_connections
  • system_memory_usage_bytes
  • system_network_errors_total
  • system_network_packets_total
  • system_network_dropped_total
  • system_network_io_bytes_total
  • system_cpu_load_average_1m
  • system_cpu_load_average_15m
  • system_cpu_load_average_5m

Labels

NameDescriptionTypeRequired
k8s_cluster_nameCustom name for cluster provided from config/env varStringNo
k8s_cluster_uidCustom uid for cluster provided from config/env varStringNo

kubeletstats receiver

This receiver collects metrics by querying the kubelet’s metrics API on each node. For metrics collected through this receiver, the details including description, unit, and type for each metric can be found in the documentation of this receiver. Note that since Observe exports the metrics in Prometheus format, the unit if available is appended to the end of the metric name and the period delimiter is converted to underscore. So for example container_cpu_time_seconds_total appears in the component documentation as container.cpu.time. This document will specify the exact metric name that appears in Observe.

List of metrics produced:

  • container_cpu_time_seconds_total
  • container_filesystem_available_bytes
  • container_filesystem_capacity_bytes
  • container_filesystem_usage_bytes
  • container_memory_available_bytes
  • container_memory_major_page_faults_ratio
  • container_memory_page_faults_ratio
  • container_memory_rss_bytes
  • container_memory_usage_bytes
  • container_memory_working_set_bytes
  • k8s_node_cpu_time_seconds_total
  • k8s_node_filesystem_available_bytes
  • k8s_node_filesystem_capacity_bytes
  • k8s_node_filesystem_usage_bytes
  • k8s_node_memory_available_bytes
  • k8s_node_memory_major_page_faults_ratio
  • k8s_node_memory_page_faults_ratio
  • k8s_node_memory_rss_bytes
  • k8s_node_memory_usage_bytes
  • k8s_node_memory_working_set_bytes
  • k8s_node_network_errors_total
  • k8s_node_network_io_bytes_total
  • k8s_pod_cpu_time_seconds_total
  • k8s_pod_filesystem_available_bytes
  • k8s_pod_filesystem_capacity_bytes
  • k8s_pod_filesystem_usage_bytes
  • k8s_pod_memory_available_bytes
  • k8s_pod_memory_major_page_faults_ratio
  • k8s_pod_memory_page_faults_ratio
  • k8s_pod_memory_rss_bytes
  • k8s_pod_memory_usage_bytes
  • k8s_pod_memory_working_set_bytes
  • k8s_pod_network_errors_total
  • k8s_pod_network_io_bytes_total
  • container_cpu_usage
  • container_uptime_seconds_total
  • k8s_container_cpu_node_utilization_ratio
  • k8s_container_cpu_limit_utilization_ratio
  • k8s_container_cpu_request_utilization_ratio
  • k8s_container_memory_node_utilization_ratio
  • k8s_container_memory_limit_utilization_ratio
  • k8s_container_memory_request_utilization_ratio
  • k8s_node_cpu_usage
  • k8s_node_uptime_seconds_total
  • k8s_pod_cpu_node_utilization_ratio
  • k8s_pod_cpu_usage
  • k8s_pod_cpu_limit_utilization_ratio
  • k8s_pod_cpu_request_utilization_ratio
  • k8s_pod_memory_node_utilization_ratio
  • k8s_pod_memory_limit_utilization_ratio
  • k8s_pod_memory_request_utilization_ratio
  • k8s_pod_uptime_seconds_total

Labels

NameDescriptionTypeRequired
k8s_cluster_nameCustom name for cluster provided from config/env varStringNo
k8s_cluster_uidCustom uid for cluster provided from config/env varStringNo
k8s_namespace_nameName of parent namespaceStringNo
k8s_deployment_nameName of related deploymentStringNo
k8s_replicaset_nameName of related replicasetStringNo
k8s_statefulset_nameName of related statefulsetStringNo
k8s_daemonset_nameName of related daemonsetStringNo
k8s_cronjob_nameName of related cronjobStringNo
k8s_job_nameName of related jobStringNo
k8s_node_nameName of nodeStringNo
k8s_node_uidUid of nodeStringNo
k8s_pod_nameName of podStringNo
k8s_pod_uidUid of podStringNo

k8scluster receiver

This receiver collects cluster level metrics from the Kubernetes API server. These are scraped on an interval from the cluster API server. For metrics collected through this receiver, the details including description, unit, and type for each metric can be found in the documentation of this receiver. Note that since Observe exports the metrics in Prometheus format, the unit if available is appended to the end of the metric name and the period delimiter is converted to underscore. So for example k8s_container_cpu_limit appears in the component documentation as k8s.container.cpu_limit. This document will specify the exact metric name that appears in Observe.

List of metrics produced:

  • k8s_container_cpu_limit
  • k8s_container_cpu_request
  • k8s_container_memory_limit_bytes
  • k8s_container_memory_request_bytes
  • k8s_container_storage_limit_bytes
  • k8s_container_storage_request_bytes
  • k8s_container_ephemeralstorage_limit_bytes
  • k8s_container_ephemeralstorage_request_bytes
  • k8s_container_ready
  • k8s_container_restarts
  • k8s_cronjob_active_jobs
  • k8s_daemonset_current_scheduled_nodes
  • k8s_daemonset_desired_scheduled_nodes
  • k8s_daemonset_misscheduled_nodes
  • k8s_daemonset_ready_nodes
  • k8s_deployment_available
  • k8s_deployment_desired
  • k8s_hpa_current_replicas
  • k8s_hpa_desired_replicas
  • k8s_hpa_max_replicas
  • k8s_hpa_min_replicas
  • k8s_job_active_pods
  • k8s_job_desired_successful_pods
  • k8s_job_failed_pods
  • k8s_job_max_parallel_pods
  • k8s_job_successful_pods
  • k8s_namespace_phase_cores
  • k8s_pod_phase
  • k8s_replicaset_available
  • k8s_replicaset_desired
  • k8s_replication_controller_available
  • k8s_replication_controller_desired
  • k8s_statefulset_current_pods
  • k8s_statefulset_desired_pods
  • k8s_statefulset_ready_pods
  • k8s_statefulset_updated_pods
  • k8s_node_condition
  • k8s_node_condition_disk_pressure
  • k8s_node_condition_memory_pressure
  • k8s_node_condition_ready

Labels

NameDescriptionTypeRequired
k8s_cluster_nameCustom name for cluster provided from config/env varStringNo
k8s_cluster_uidCustom uid for cluster provided from config/env varStringNo
k8s_namespace_nameName of parent namespaceStringNo
k8s_deployment_nameName of related deploymentStringNo
k8s_deployment_uidUid of related deploymentStringNo
k8s_daemonset_nameName of related deploymentStringNo
k8s_daemonset_uidUid of related deploymentStringNo
k8s_node_nameName of nodeStringNo
k8s_node_uidUid of nodeStringNo
k8s_container_nameName of related containerStringNo
k8s_pod_nameName of related podStringNo
k8s_pod_uidUid of related podStringNo
k8s_hpa_nameName of related hpaStringNo
k8s_hpa_uidUid of related hpaStringNo
k8s_cronjob_nameName of related hpaStringNo
k8s_cronjob_uidUid of related hpaStringNo
k8s_job_nameName of related hpaStringNo
k8s_job_uidUid of related hpaStringNo
k8s_replicaset_nameName of related replicasetStringNo
k8s_replicaset_uidUid of related replicasetStringNo
k8s_statefulset_nameName of related statefulsetStringNo
k8s_statefulset_uidUid of related replicasetStringNo
k8s_replicationcontroller_nameName of related replication controllerStringNo
k8s_replicationcontroller_uidUid of related replicasetStringNo
conditionCondition of nodeStringNo
service_nameName of the serviceStringNo
app_kubernetes_io_nameName of the applicationStringNo
app_kubernetes_io_instanceA unique name identifying the instance of an applicationStringNo
app_kubernetes_io_versionCurrent version of the applicationStringNo
app_kubernetes_io_componentThe component within the application architectureStringNo
app_kubernetes_io_part-ofName of a higher-level application this object is part ofStringNo
app_kubernetes_io_managed-byThe tool being used to manage the operation of an applicationStringNo

prometheus receiver

This receiver scrapes various prometheus endpoints and gathers metrics from them. By default it scrapes the Observe Agent’s own metrics. The full list of metrics depends on the detail level configured for the agent self-telemetry and is available in the documentation.

Labels

NameDescriptionTypeRequired
k8s_namespace_nameName of parent namespaceStringNo
k8s_pod_nameName of related podStringNo
k8s_pod_uidUid of related podStringNo
k8s_deployment_nameName of related deploymentStringNo
k8s_replicaset_nameName of related replicasetStringNo
k8s_statefulset_nameName of related statefulsetStringNo
k8s_daemonset_nameName of related daemonsetStringNo
k8s_cronjob_nameName of related cronjobStringNo
k8s_job_nameName of related jobStringNo
k8s_cluster_uidUid of the clusterStringNo
k8s_node_nameName of nodeStringNo
k8s_node_uidUid of nodeStringNo
k8s_container_nameName of related containerStringNo
container_idUid of related containerStringNo

Logs

The Observe Kubernetes Agent Helm Chart can scrape container logs from the nodes in the cluster. These logs are ingested to the OpenTelemetry Logs dataset.

OpenTelemetry Logs Schema

Column NameColumn TypeDescription
timestampdatetimeTimestamp of log
bodystringLog body
attributesJSONAttributes associated with metric
resource_attributesJSONResource attributes associated with metric. Kubernetes entity metadata will be located as attributes here.
instrumentation_scopeJSON
fieldsJSON
metaJSONIngestion related metadata of metric

Attributes

NameDescriptionTypeRequired
log.file.pathPath of log filestring

Resource Attributes

NameDescriptionTypeRequired
k8s_namespace_nameName of parent namespaceStringNo
k8s_pod_nameName of related podStringNo
k8s_pod_uidUid of related podStringNo
k8s_deployment_nameName of related deploymentStringNo
k8s_replicaset_nameName of related replicasetStringNo
k8s_statefulset_nameName of related statefulsetStringNo
k8s_daemonset_nameName of related daemonsetStringNo
k8s_cronjob_nameName of related cronjobStringNo
k8s_job_nameName of related jobStringNo
k8s_cluster_uidUid of the clusterStringNo
k8s_node_nameName of nodeStringNo
k8s_node_uidUid of nodeStringNo
k8s_container_nameName of related containerStringNo
container_idUid of related containerStringNo