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 kubeletstats
receiver , the prometheus
receiver, and the k8scluster
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 Name |
Column Type |
Description |
---|---|---|
timestamp |
datetime |
Timestamp of metric |
metric |
string |
Metric name |
value |
double |
Metric Value |
labels |
JSON |
Labels associated with metric |
meta |
JSON |
Ingestion related metadata of metric |
Prometheus Metadata
Schema¶
Column Name |
Column Type |
Description |
---|---|---|
timestamp |
datetime |
Timestamp of metric metadata |
metric |
string |
Metric name |
metric_type |
string |
Metric type |
metric_unit |
string |
Metric unit |
metric_description |
string |
Metric description |
meta |
JSON |
Ingestion related metadata of metric |
kubeletstats
Metrics¶
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¶
Name |
Description |
Type |
Required |
---|---|---|---|
k8s_cluster_name |
Custom name for cluster provided from config/env var |
String |
No |
k8s_cluster_uid |
Custom uid for cluster provided from config/env var |
String |
No |
k8s_namespace_name |
Name of parent namespace |
String |
No |
k8s_deployment_name |
Name of related deployment |
String |
No |
k8s_replicaset_name |
Name of related replicaset |
String |
No |
k8s_statefulset_name |
Name of related statefulset |
String |
No |
k8s_daemonset_name |
Name of related daemonset |
String |
No |
k8s_cronjob_name |
Name of related cronjob |
String |
No |
k8s_job_name |
Name of related job |
String |
No |
k8s_node_name |
Name of node |
String |
No |
k8s_node_uid |
Uid of node |
String |
No |
k8s_pod_name |
Name of pod |
String |
No |
k8s_pod_uid |
Uid of pod |
String |
No |
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¶
Name |
Description |
Type |
Required |
---|---|---|---|
k8s_cluster_name |
Custom name for cluster provided from config/env var |
String |
No |
k8s_cluster_uid |
Custom uid for cluster provided from config/env var |
String |
No |
k8s_namespace_name |
Name of parent namespace |
String |
No |
k8s_deployment_name |
Name of related deployment |
String |
No |
k8s_deployment_uid |
Uid of related deployment |
String |
No |
k8s_daemonset_name |
Name of related deployment |
String |
No |
k8s_daemonset_uid |
Uid of related deployment |
String |
No |
k8s_node_name |
Name of node |
String |
No |
k8s_node_uid |
Uid of node |
String |
No |
k8s_container_name |
Name of related container |
String |
No |
k8s_pod_name |
Name of related pod |
String |
No |
k8s_pod_uid |
Uid of related pod |
String |
No |
k8s_hpa_name |
Name of related hpa |
String |
No |
k8s_hpa_uid |
Uid of related hpa |
String |
No |
k8s_cronjob_name |
Name of related hpa |
String |
No |
k8s_cronjob_uid |
Uid of related hpa |
String |
No |
k8s_job_name |
Name of related hpa |
String |
No |
k8s_job_uid |
Uid of related hpa |
String |
No |
k8s_replicaset_name |
Name of related replicaset |
String |
No |
k8s_replicaset_uid |
Uid of related replicaset |
String |
No |
k8s_statefulset_name |
Name of related statefulset |
String |
No |
k8s_statefulset_uid |
Uid of related replicaset |
String |
No |
k8s_replicationcontroller_name |
Name of related replication controller |
String |
No |
k8s_replicationcontroller_uid |
Uid of related replicaset |
String |
No |
condition |
Condition of node |
String |
No |
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¶
Name |
Description |
Type |
Required |
---|---|---|---|
k8s_namespace_name |
Name of parent namespace |
String |
No |
k8s_pod_name |
Name of related pod |
String |
No |
k8s_pod_uid |
Uid of related pod |
String |
No |
k8s_deployment_name |
Name of related deployment |
String |
No |
k8s_replicaset_name |
Name of related replicaset |
String |
No |
k8s_statefulset_name |
Name of related statefulset |
String |
No |
k8s_daemonset_name |
Name of related daemonset |
String |
No |
k8s_cronjob_name |
Name of related cronjob |
String |
No |
k8s_job_name |
Name of related job |
String |
No |
k8s_cluster_uid |
Uid of the cluster |
String |
No |
k8s_node_name |
Name of node |
String |
No |
k8s_node_uid |
Uid of node |
String |
No |
k8s_container_name |
Name of related container |
String |
No |
container_id |
Uid of related container |
String |
No |
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 Name |
Column Type |
Description |
---|---|---|
timestamp |
datetime |
Timestamp of log |
body |
string |
Log body |
attributes |
JSON |
Attributes associated with metric |
resource_attributes |
JSON |
Resource attributes associated with metric. Kubernetes entity metadata will be located as attributes here. |
instrumentation_scope |
JSON |
|
fields |
JSON |
|
meta |
JSON |
Ingestion related metadata of metric |
Attributes¶
Name |
Description |
Type |
Required |
---|---|---|---|
log.file.path |
Path of log file |
string |
Resource Attributes¶
Name |
Description |
Type |
Required |
---|---|---|---|
k8s_namespace_name |
Name of parent namespace |
String |
No |
k8s_pod_name |
Name of related pod |
String |
No |
k8s_pod_uid |
Uid of related pod |
String |
No |
k8s_deployment_name |
Name of related deployment |
String |
No |
k8s_replicaset_name |
Name of related replicaset |
String |
No |
k8s_statefulset_name |
Name of related statefulset |
String |
No |
k8s_daemonset_name |
Name of related daemonset |
String |
No |
k8s_cronjob_name |
Name of related cronjob |
String |
No |
k8s_job_name |
Name of related job |
String |
No |
k8s_cluster_uid |
Uid of the cluster |
String |
No |
k8s_node_name |
Name of node |
String |
No |
k8s_node_uid |
Uid of node |
String |
No |
k8s_container_name |
Name of related container |
String |
No |
container_id |
Uid of related container |
String |
No |