Skip to content

Telemetry ​

The telemetry.operator.kyma-project.io CustomResourceDefinition (CRD) is a detailed description of the kind of data and the format used to define a Telemetry module instance. To get the current CRD and show the output in the YAML format, run this command:

bash
kubectl get crd telemetry.operator.kyma-project.io -o yaml

Sample Custom Resource ​

The following Telemetry object defines a module:

yaml
apiVersion: operator.kyma-project.io/v1alpha1
kind: Telemetry
metadata:
  name: default
  namespace: kyma-system
  generation: 2
spec:
  enrichments:
    cluster:
      name: "clusterName"
    extractPodLabels:
      - key: "app.kubernetes.io/name"
      - keyPrefix: "app.kubernetes.io"
  trace:
    gateway:
      scaling:
        type: Static
        static:
          replicas: 3
  metric:
    gateway:
      scaling:
        type: Static
        static:
          replicas: 4
Status:
  state: Ready
  endpoints:
    traces:
      grpc: http://telemetry-otlp-traces.kyma-system:4317
      http: http://telemetry-otlp-traces.kyma-system:4318
    metrics:
      grpc: http://telemetry-otlp-metrics.kyma-system:4317
      http: http://telemetry-otlp-metrics.kyma-system:4318
    logs:
      grpc: http://telemetry-otlp-logs.kyma-system:4317
      http: http://telemetry-otlp-logs.kyma-system:4318
  conditions:
    - lastTransitionTime: "2023-09-01T15:28:28Z"
      message: All log components are running
      observedGeneration: 2
      reason: ComponentsRunning
      status: "True"
      type: LogComponentsHealthy
    - lastTransitionTime: "2023-09-01T15:46:59Z"
      message: All metric components are running
      observedGeneration: 2
      reason: ComponentsRunning
      status: "True"
      type: MetricComponentsHealthy
    - lastTransitionTime: "2023-09-01T15:35:38Z"
      message: All trace components are running
      observedGeneration: 2
      reason: ComponentsRunning
      status: "True"
      type: TraceComponentsHealthy

For further examples, see the samples directory.

Custom Resource Parameters ​

For details, see the Telemetry specification file.

Telemetry.operator.kyma-project.io/v1alpha1 ​

Spec:

ParameterTypeDescription
enrichmentsobjectEnrichments configures optional enrichments of all telemetry data collected by pipelines. This field is optional.
enrichments.​clusterobjectCluster provides user-defined cluster definitions to enrich resource attributes.
enrichments.​cluster.​namestringName specifies a custom cluster name for the resource attribute k8s.cluster.name.
enrichments.​extractPodLabels[]objectExtractPodLabels specifies the list of Pod labels to be used for enrichment.
enrichments.​extractPodLabels.​keystringKey specifies the exact label key to be used.
enrichments.​extractPodLabels.​keyPrefixstringKeyPrefix specifies a prefix for label keys to be used.
logobjectLog configures module settings specific to the log features. This field is optional.
log.​gatewayobjectGateway configures the log gateway.
log.​gateway.​scalingobjectScaling defines which strategy is used for scaling the gateway, with detailed configuration options for each strategy type.
log.​gateway.​scaling.​staticobjectStatic is a scaling strategy enabling you to define a custom amount of replicas to be used for the gateway. Present only if Type = StaticScalingStrategyType.
log.​gateway.​scaling.​static.​replicasintegerReplicas defines a static number of Pods to run the gateway. Minimum is 1.
log.​gateway.​scaling.​typestringType of scaling strategy. Default is none, using a fixed amount of replicas.
metricobjectMetric configures module settings specific to the metric features. This field is optional.
metric.​gatewayobjectGateway configures the metric gateway.
metric.​gateway.​scalingobjectScaling defines which strategy is used for scaling the gateway, with detailed configuration options for each strategy type.
metric.​gateway.​scaling.​staticobjectStatic is a scaling strategy enabling you to define a custom amount of replicas to be used for the gateway. Present only if Type = StaticScalingStrategyType.
metric.​gateway.​scaling.​static.​replicasintegerReplicas defines a static number of Pods to run the gateway. Minimum is 1.
metric.​gateway.​scaling.​typestringType of scaling strategy. Default is none, using a fixed amount of replicas.
traceobjectTrace configures module settings specific to the trace features. This field is optional.
trace.​gatewayobjectGateway configures the trace gateway.
trace.​gateway.​scalingobjectScaling defines which strategy is used for scaling the gateway, with detailed configuration options for each strategy type.
trace.​gateway.​scaling.​staticobjectStatic is a scaling strategy enabling you to define a custom amount of replicas to be used for the gateway. Present only if Type = StaticScalingStrategyType.
trace.​gateway.​scaling.​static.​replicasintegerReplicas defines a static number of Pods to run the gateway. Minimum is 1.
trace.​gateway.​scaling.​typestringType of scaling strategy. Default is none, using a fixed amount of replicas.

Status:

ParameterTypeDescription
conditions[]objectConditions contain a set of conditionals to determine the State of Status. If all Conditions are met, State is expected to be in StateReady.
conditions.​lastTransitionTime (required)stringlastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
conditions.​message (required)stringmessage is a human readable message indicating details about the transition. This may be an empty string.
conditions.​observedGenerationintegerobservedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
conditions.​reason (required)stringreason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
conditions.​status (required)stringstatus of the condition, one of True, False, Unknown.
conditions.​type (required)stringtype of condition in CamelCase or in foo.example.com/CamelCase.
endpointsobjectEndpoints for log, trace, and metric gateway.
endpoints.​logsobjectLogs contains the endpoints for log gateway supporting OTLP.
endpoints.​logs.​grpcstringgRPC endpoint for OTLP.
endpoints.​logs.​httpstringHTTP endpoint for OTLP.
endpoints.​metricsobjectMetrics contains the endpoints for metric gateway supporting OTLP.
endpoints.​metrics.​grpcstringgRPC endpoint for OTLP.
endpoints.​metrics.​httpstringHTTP endpoint for OTLP.
endpoints.​tracesobjectTraces contains the endpoints for trace gateway supporting OTLP.
endpoints.​traces.​grpcstringgRPC endpoint for OTLP.
endpoints.​traces.​httpstringHTTP endpoint for OTLP.
state (required)stringState signifies current state of Module CR. Value can be one of these three: "Ready", "Deleting", or "Warning".

The state attribute of the Telemetry CR is derived from the combined state of all the subcomponents, namely, from the condition types LogComponentsHealthy, TraceComponentsHealthy and MetricComponentsHealthy.

Log Components State ​

The state of the log components is determined by the status condition of type LogComponentsHealthy:

Condition StatusCondition ReasonCondition Message
TrueComponentsRunningAll log components are running
TrueNoPipelineDeployedNo pipelines have been deployed
TrueTLSCertificateAboutToExpireTLS (CA) certificate is about to expire, configured certificate is valid until YYYY-MM-DD
FalseAgentNotReadyLog agent DaemonSet is not ready
FalseReferencedSecretMissingOne or more referenced Secrets are missing: Secret 'my-secret' of Namespace 'my-namespace'
FalseReferencedSecretMissingOne or more keys in a referenced Secret are missing: Key 'my-key' in Secret 'my-secret' of Namespace 'my-namespace'"
FalseReferencedSecretMissingSecret reference is missing field/s: (field1, field2, ...)
FalseResourceBlocksDeletionThe deletion of the module is blocked. To unblock the deletion, delete the following resources: LogPipelines (resource-1, resource-2,...), LogParsers (resource-1, resource-2,...)
FalseTLSCertificateExpiredTLS (CA) certificate expired on YYYY-MM-DD
FalseTLSConfigurationInvalidTLS configuration invalid
FalseValidationFailedPipeline validation failed due to an error from the Kubernetes API server
FalseAgentAllTelemetryDataDroppedBackend is not reachable or rejecting logs. All logs are dropped. See troubleshooting: No Logs Arrive at the Backend
FalseAgentBufferFillingUpBuffer nearing capacity. Incoming log rate exceeds export rate. See troubleshooting: Agent Buffer Filling Up
FalseAgentNoLogsDeliveredBackend is not reachable or rejecting logs. Logs are buffered and not yet dropped. See troubleshooting: No Logs Arrive at the Backend
FalseAgentSomeDataDroppedBackend is reachable, but rejecting logs. Some logs are dropped. See troubleshooting: No All Logs Arrive at the Backend

Trace Components State ​

The state of the trace components is determined by the status condition of type TraceComponentsHealthy:

Condition StatusCondition ReasonCondition Message
TrueComponentsRunningAll trace components are running
TrueNoPipelineDeployedNo pipelines have been deployed
TrueTLSCertificateAboutToExpireTLS (CA) certificate is about to expire, configured certificate is valid until YYYY-MM-DD
FalseGatewayNotReadyTrace gateway Deployment is not ready
FalseMaxPipelinesExceededMaximum pipeline count exceeded
FalseReferencedSecretMissingOne or more referenced Secrets are missing: Secret 'my-secret' of Namespace 'my-namespace'
FalseReferencedSecretMissingOne or more keys in a referenced Secret are missing: Key 'my-key' in Secret 'my-secret' of Namespace 'my-namespace'"
FalseResourceBlocksDeletionThe deletion of the module is blocked. To unblock the deletion, delete the following resources: TracePipelines (resource-1, resource-2,...)
FalseTLSCertificateExpiredTLS (CA) certificate expired on YYYY-MM-DD
FalseTLSConfigurationInvalidTLS configuration invalid
FalseValidationFailedPipeline validation failed due to an error from the Kubernetes API server
FalseGatewayAllTelemetryDataDroppedBackend is not reachable or rejecting spans. All spans are dropped. See troubleshooting: No Spans Arrive at the Backend
FalseGatewayThrottlingTrace gateway is unable to receive spans at current rate. See troubleshooting: Gateway Throttling
FalseGatewaySomeTelemetryDataDroppedBackend is reachable, but rejecting spans. Some spans are dropped. No All Spans Arrive at the Backend

Metric Components State ​

The state of the metric components is determined by the status condition of type MetricComponentsHealthy:

Condition StatusCondition ReasonCondition Message
TrueComponentsRunningAll metric components are running
TrueNoPipelineDeployedNo pipelines have been deployed
TrueTLSCertificateAboutToExpireTLS (CA) certificate is about to expire, configured certificate is valid until YYYY-MM-DD
FalseAgentNotReadyMetric agent DaemonSet is not ready
FalseGatewayNotReadyMetric gateway deployment is not ready
FalseMaxPipelinesExceededMaximum pipeline count exceeded
FalseReferencedSecretMissingOne or more referenced Secrets are missing: Secret 'my-secret' of Namespace 'my-namespace'
FalseReferencedSecretMissingOne or more keys in a referenced Secret are missing: Key 'my-key' in Secret 'my-secret' of Namespace 'my-namespace'"
FalseResourceBlocksDeletionThe deletion of the module is blocked. To unblock the deletion, delete the following resources: MetricPipelines (resource-1, resource-2,...)
FalseTLSCertificateExpiredTLS (CA) certificate expired on YYYY-MM-DD
FalseTLSConfigurationInvalidTLS configuration invalid
FalseValidationFailedPipeline validation failed due to an error from the Kubernetes API server
FalseGatewayAllTelemetryDataDroppedBackend is not reachable or rejecting metrics. All metrics are dropped. See troubleshooting: No Metrics Arrive at the Backend
FalseGatewayThrottlingMetric gateway is unable to receive metrics at current rate. See troubleshooting: Gateway Throttling
FalseGatewaySomeTelemetryDataDroppedBackend is reachable, but rejecting metrics. Some metrics are dropped. See troubleshooting: No All Metrics Arrive at the Backend

Telemetry CR State ​

  • 'Ready': Only if all the subcomponent conditions (LogComponentsHealthy, TraceComponentsHealthy, and MetricComponentsHealthy) have a status of True.
  • 'Warning': If any of these conditions are not True.
  • 'Deleting': When a Telemetry CR is being deleted.