Skip to content

About the telemetry pipeline

Page as Markdown

Learn about the Gloo telemetry pipeline architecture, its components, and default pipelines that you can choose from.

You can gain insights into the health and performance of your cluster components by using the Gloo telemetry pipeline. Built on top of the OpenTelemetry open source project, the Gloo telemetry pipeline helps you to collect and export telemetry data, such as metrics, logs, traces, and Gloo insights, and to visualize this data by using Gloo observability tools.

Review the information on this page to learn more about the Gloo telemetry pipeline and how to use it in your cluster.

Setup

The Gloo telemetry pipeline is set up by default when you install Gloo Mesh Gateway.

To see the receivers, processors, and exporters that are set up by default for you, run the following commands:

kubectl get configmap gloo-telemetry-gateway-config -n gloo-mesh -o yaml
kubectl get configmap gloo-telemetry-collector-config -n gloo-mesh -o yaml

Disable the telemetry pipeline

If you want to disable the Gloo telemetry pipeline, follow the Upgrade guide and add the following configuration to your Helm values file:


telemetryCollector:
  enabled: false
telemetryGateway:
  enabled: false

Customize the pipeline

You can customize the Gloo telemetry pipeline and set up additional receivers, processors, and exporters in your pipeline. The Gloo telemetry pipeline is set up with pre-built pipelines that use a variety of receivers, processors, and exporters to collect and store telemetry data in your cluster. You can enable and disable these pipelines as part of your Helm installation.

Because the Gloo telemetry pipeline is built on top of the OpenTelemetry open source project, you also have the option to add your own custom receivers, processors, and exporters to the pipeline. For more information, see the pipeline architecture information in the OpenTelemetry documentation.

To see the receivers, processors, and exporters that are set up by default for you, run the following commands:

kubectl get configmap gloo-telemetry-gateway-config -n gloo-mesh -o yaml
kubectl get configmap gloo-telemetry-collector-config -n gloo-mesh -o yaml

To add more telemetry data to the Gloo telemetry pipeline, see Customize the pipeline.

Shard telemetry collectors

By default, the telemetry collector runs as a daemon set in your Gloo Mesh environment. In some organizations, security or architecture restrictions might prevent you from running the collector pod on every node in the cluster. In this case, you might want to shard the telemetry collector as a stateful set instead. This method allows the collector to be able to continually process a high level of metrics, without requiring the collector pod to deploy as a daemon set.

To shard the telemetry collector, follow the Upgrade guide and add the following configuration to your Helm values file:

telemetryCollector:
  enabled: true
  mode: statefulset
  replicaCount: 2
telemetryCollectorCustomization:
  sharding:
    enabled: true

Architecture

The Gloo telemetry pipeline is decoupled from the Gloo agents and management server core functionality, and consists of two main components: the Gloo telemetry collector agent and telemetry gateway.

Flip through the cards to see how these components are set up in a single and multicluster environment.

In single cluster setups, only a Gloo telemetry collector agent is deployed to the cluster. The agent is configured to scrape metrics from workloads in the cluster, and to enrich the data, such as by adding workload IDs that you can later use to filter metrics. In addition, it receives other telemetry data, such as traces. Depending on the type of telemetry data, the collector agent then forwards this data to other observability tools, such as Jaeger as shown in the following image.

You also have the option to set up your own exporter to forward telemetry data to an observability tool of your choice. To see an example for how to export data to Datadog, see Forward metrics to Datadog.

Figure: Gloo telemetry pipeline architecture in single cluster setups
Figure: Gloo telemetry pipeline architecture in single cluster setups

In multicluster setups, Gloo telemetry collector agents are deployed to the management cluster and each workload cluster. The agents are configured to scrape metrics from workloads in the cluster, and to enrich the data, such as by adding workload IDs that you can later use to filter metrics. In addition, they receive other telemetry data, such as traces and Gloo analyzer logs.

A Gloo telemetry gateway is also deployed to the management cluster and exposed with a Kubernetes load balancer service. The collector agents in each workload cluster send all their telemetry data to the telemetry gateway’s service endpoint. You can choose from a set of pre-built pipelines to configure how the telemetry gateway forwards telemetry data within the cluster.

You also have the option to forward telemetry data to an observability tool of your choice by adding custom exporters to either the telemetry gateway or to each collector agent. The option that is right for you depends on the size of your environment, the amount of telemetry data that you want to export, and the compute resources that are available to the Gloo telemetry pipeline components. To see an example for how to export data to Datadog, see Forward metrics to Datadog.

Figure: Gloo telemetry pipeline architecture in a multicluster setup
Figure: Gloo telemetry pipeline architecture in a multicluster setup

Learn more about the telemetry data that is collected in the Gloo telemetry pipeline.

When you enable the Gloo telemetry pipeline, the collector agents and, if applicable, the telemetry gateway are configured to collect metrics in your Gloo Mesh Gateway environment.

Gloo telemetry collector agents scrape metrics from workloads in your cluster, such as the Gloo agents and management server, the Istio control plane, and the workloads’ sidecar proxies. To determine the workloads that need to be scraped and find the port where metrics are exposed, the prometheus.io/scrape: "true" and prometheus.io/port: "<port_number>" pod annotations are used. All Gloo components that expose metrics and all Istio-specific workloads are automatically deployed with these annotations.

The telemetry agents then enrich the metrics with Layer 7 attributes. For example, the ID of the source and destination workload is added to the metrics so that you can filter the metrics for the workload that you are interested in.

The built-in Prometheus server is set up to scrape metrics from the Gloo telemetry collector agents. In multicluster setups, the Prometheus server also scrapes metrics from the Gloo telemetry gateway in the management cluster that receives metrics from all workload clusters.

Observability tools, such as the Gloo UI or the Gloo operations dashboard, read metrics from Prometheus and visualize this data so that you can monitor the health of the Gloo Mesh Gateway components and Istio workloads, and to receive alerts if an issue is detected. For more information, see the Prometheus overview.

You can configure the Gloo telemetry pipeline to collect metadata about the compute instances, such as virtual machines, that the workload cluster is deployed to so that you can visualize your Gloo Mesh Gateway setup across your cloud provider infrastructure network. The metadata is added as labels to metrics and exposed on the Gloo telemetry collector agent (single cluster), or sent to the Gloo telemetry gateway (multicluster) where they can be scraped by the built-in Prometheus server. You can then use the Prometheus expression browser to analyze these metrics.

For more information, see Collect compute instance metadata.

You can configure the Gloo telemetry pipeline to collect traces that your workloads emit and to forward these traces to your own Jaeger instance. Note that workloads must be instrumented to emit traces before traces can be collected by the pipeline.

To add traces to the Gloo telemetry pipeline, you must configure the collector agents to pick up the traces and forward them to your Jaeger platform.

For more information, see Add Istio request traces.

Gloo Mesh Gateway comes with an insights engine that automatically analyzes your Istio gateways for health issues. These issues are displayed in the UI along with recommendations to harden your Istio gateway setup. The insights give you a checklist to address issues that might otherwise be hard to detect across your environment.

If you follow the Get started guide, insights are automatically enabled in your Gloo Mesh Gateway environment. The Gloo analyzer component in the Gloo agent monitors and analyzes Istio workloads and generates analyzer results. The Gloo agent writes these analyzer results as logs to Redis Streams (single cluster), or forwards the logs to the Gloo telemetry gateway (multicluster) where they are written to Redis.

The Gloo UI uses the analyzer results in Redis and executes queries on Prometheus metrics to create Istio insights. These insights are then stored in memory so that the Gloo UI can read and display them to the user.

For more information, see Add Istio insights.

You can configure the Gloo telemetry pipeline to collect Portal-specific Istio access logs for the ingress gateway. These logs are stored in the built-in Clickhouse database (single cluster) or sent to the Gloo telemetry gateway where they can be forwarded to Clickhouse (multicluster). To visualize these logs and monitor API product usage and the number of users that access your developer portal, you can import the pre-built Portal analytics dashboard in Grafana.

Note that to view Portal analytics, you must configure your ingress gateway to emit Istio access logs and set up your Grafana instance to read these access logs from the Clickhouse database.

For more information, see Monitor Portal analytics.

Built-in telemetry pipelines

The Gloo telemetry pipeline is set up with default pipelines that you can enable to collect telemetry data in your cluster.

Telemetry dataCollector agent pipelineDescription
Compute metadatametrics/otlp_relayThe metrics/otlp_relay pipeline collects metadata about the compute instances, such as virtual machines, that the workload cluster is deployed to, and adds the metadata as labels on metrics. The metrics are exposed on the Gloo telemetry collector agent where they can be scraped by the built-in Prometheus server. For more information, see Collect compute instance metadata.
Insightslogs/analyzerThe logs/analyzer pipeline is enabled by default and collects analyzer results from the Gloo analyzer component. Analyzer results are stored in Redis Streams where they can be picked up by the insights engine in the Gloo management server to generate insights later. If you follow the get started guide, the insights engine is already enabled in your environment, and analyzer results are collected by the Gloo telemetry pipeline. For more information, see Add Istio insights.
Logslogs/uiThe logs/ui pipeline collects logs from Gloo Mesh Gateway components, such as the Gloo management server or agent. These logs are then displayed in the Gloo UI.
Metricsmetrics/uiThe metrics/ui pipeline is enabled by default and collects the metrics that are required for the Gloo UI graph. Metrics in the collector agent are then scraped by the built-in Prometheus server so that they can be provided to Gloo observability tools. To view the metrics that are captured with this pipeline, see Default metrics in the pipeline.
Portal analyticslogs/portalYou can enable Istio access logs for the ingress gateway and use the pre-built logs/portal pipeline to capture access logs for the Portal server and store these logs in the built-in Clickhouse database. You can use these logs to monitor API product usage and the number of users that access your developer portal. For more information, see Monitor Portal analytics.
Tracestraces/istioThe traces/istio pipeline collects request traces from Istio-enabled workloads and sends them to your custom Jaeger instance. For more information, see Add Istio request traces.
Telemetry dataCollector agent pipelineGateway pipelineDescription
Compute metadatametrics/otlp_relayN/AThe metrics/otlp_relay pipeline collects metadata about the compute instances, such as virtual machines, that the cluster is deployed to, and adds the metadata as labels on metrics. The metrics are sent to the Gloo telemetry gateway where they can be scraped by the built-in Prometheus server. For more information, see Collect compute instance metadata.
Insightslogs/analyzerlogs/redis_streamThe logs/analyzer pipeline is enabled by default, and collects analyzer results from the Gloo analyzer component and forwards them to the Gloo telemetry gateway. Analyzer results are then stored in Redis by using the logs/redis_stream pipeline so that they can be picked up by the insights engine in the Gloo management server to generate insights. If you follow the get started guide, the insights engine is already enabled in your environment, and analyzer results are collected by the Gloo telemetry pipeline. For more information, see Add Istio insights.
Logslogs/uiN/AThe logs/ui pipeline collects logs from Gloo Mesh Gateway components, such as the Gloo management server or agent. These logs are then displayed in the Gloo UI.
Metricsmetrics/uimetrics/prometheusThe metrics/ui pipeline is enabled by default and collects the metrics that are required for the Gloo UI graph. Metrics in the collector agent are then scraped by the built-in Prometheus server so that they can be provided to Gloo observability tools. To view the metrics that are captured with this pipeline, see Default metrics in the pipeline.
Portal analyticslogs/portallogs/clickhouseYou can enable Istio access logs for the ingress gateway and use the pre-built logs/portal pipeline to capture access logs for the Portal server and store these logs in the built-in Clickhouse database. Then, use the logs/clickhouse pipeline to store these logs in the built-in Clickhouse database. You can use these logs to monitor API product usage and the number of users that access your developer portal. You can use these logs to monitor API product usage and the number of users that access your developer portal. For more information, see Monitor Portal analytics.
Tracestraces/istiotraces/jaegerThe traces/istio pipeline collects request traces from Istio-enabled workloads and sends them to your custom Jaeger instance by using the traces/jaeger pipeline. For more information, see Add Istio request traces.

Default metrics in the pipeline

By default, the Gloo telemetry pipeline is configured to scrape the metrics that are required for the Gloo UI from various workloads in your cluster by using the metrics/ui and metrics/prometheus pipelines. The built-in Prometheus server is configured to scrape metrics from the Gloo collector agent (single cluster), or Gloo telemetry gateway and collector agent (multicluster). To reduce cardinality in the Gloo telemetry pipeline, only a few labels are collected for each metric. For more information, see Metric labels.

Review the metrics that are available in the Gloo telemetry pipeline. You can set up additional receivers to scrape other metrics, or forward the metrics to other observability tools, such as Datadog, by creating your own custom exporter for the Gloo telemetry gateway. To find an example setup, see Forward metrics to Datadog.

Istio proxy metrics

MetricDescription
istio_response_bytesThe number of bytes that are returned in the HTTP response.
istio_request_bytesThe number of bytes that were sent in the HTTP request.
istio_requests_totalThe number of requests that were processed for an Istio proxy.
istio_request_duration_millisecondsThe time it takes for a request to reach its destination in milliseconds.
istio_request_duration_milliseconds_bucketThe time it takes for a request to reach its destination in milliseconds.
istio_request_duration_milliseconds_countThe total number of Istio requests since the Istio proxy was last started.
istio_request_duration_milliseconds_sumThe sum of all request durations since the last start of the Istio proxy.
istio_tcp_sent_bytesThe number of bytes that are sent in a response at a particular moment in time.
istio_tcp_sent_bytes_totalThe total number of bytes that are sent in a response.
istio_tcp_received_bytesThe number of bytes that are received in a request at a particular moment in time.
istio_tcp_received_bytes_totalThe total number of bytes that are received in a request.
istio_tcp_connections_openedThe number of open connections to an Istio proxy at a particular moment in time.
istio_tcp_connections_opened_totalThe total number of open connections to an Istio proxy.

Istiod metrics

MetricDescription
pilot_proxy_convergence_timeThe time it takes between applying a configuration change and the Istio proxy receiving the configuration change.

Gloo Mesh Gateway management server metrics

MetricDescription
gloo_mesh_build_snapshot_metric_time_secThe time in seconds for the Gloo management server to generate an output snapshot for connected Gloo agents.
gloo_mesh_garbage_collection_time_secThe time it takes for the garbage collector to clean up unused resources in seconds, such as after the custom resource translation.
gloo_mesh_reconciler_time_sec_bucketThe time the Gloo management server needs to sync with the Gloo agents in the workload clusters to apply the translated resources. This metric is captured in seconds for the following intervals (buckets): 1, 2, 5, 10, 15, 30, 50, 80, 100, 200.
gloo_mesh_redis_relation_err_totalThe number of errors that occurred during a read or write operation of relationship data to Redis.
gloo_mesh_redis_sync_err_totalThe number of times the Gloo management server could not read from or write to the Gloo Redis instance.
gloo_mesh_redis_write_time_secThe time it takes in seconds for the Gloo management server to write to the Redis database.
gloo_mesh_relay_client_delta_pull_time_secThe time it takes for a Gloo agent to receive a delta output snapshot from the Gloo management server in seconds.
gloo_mesh_relay_client_delta_pull_errThe number of errors that occurred while sending a delta output snapshot to a connected Gloo agent.
gloo_mesh_relay_client_delta_push_last_loop_timestamp_secondsThe unix timestamp (in seconds) of the last time the relay agent created a delta snapshot. This metric is generated, even if the snapshot was empty and not sent to the management server.
gloo_mesh_relay_client_delta_push_time_secThe time it takes for a Gloo agent to send a delta input snapshot to the Gloo management server in seconds.
gloo_mesh_relay_client_delta_push_errThe number of errors that occurred while sending a delta input snapshot from the Gloo agent to the Gloo management server.
gloo_mesh_relay_client_last_delta_pull_received_timestamp_secondsThe unix timestamp (in seconds) of the last time the relay agent received a delta snapshot from the management server.
gloo_mesh_relay_client_last_delta_push_timestamp_secondsThe unix timestamp (in seconds) of the last time the relay agent pushed a delta snapshot (either non-empty, or the initial snapshot).
gloo_mesh_relay_client_last_server_communication_pull_stream_timestamp_secondsThe unix timestamp (in seconds) of the last time the relay agent received a response from the management server.
gloo_mesh_snapshot_upserter_op_time_secThe time it takes for a snapshot to be updated and/or inserted in the Gloo management server local memory in seconds.
gloo_mesh_safe_mode_activeIndicates whether safe mode is enabled in the Gloo management server. For more information, see Redis safe mode options.
gloo_mesh_translation_time_sec_bucketThe time the Gloo management server needs to translate Gloo resources into Istio or Envoy resources. This metric is captured in seconds for the following intervals (buckets): 1, 2, 5, 10, 15, 20, 25, 30, 45, 60, and 120.
gloo_mesh_translator_concurrencyThe number of translation operations that the Gloo management server can perform at the same time.
object_write_fails_totalThe total number of failures that occurred when attempting to write an Istio object to storage. For example, this metric increases if invalid Istio configuration is rejected by the Istio control plane istiod. Write failures can occur during an upsert, delete, or status upsert action.
relay_pull_clients_connectedThe number of Gloo agents that are connected to the Gloo management server.
relay_push_clients_warmedThe number of Gloo agents that are ready to accept updates from the Gloo management server.
solo_io_gloo_gateway_licenseThe number of minutes until the Gloo Mesh Gateway license expires. To prevent your management server from crashing when the license expires, make sure to upgrade the license before expiration.
solo_io_gloo_mesh_licenseThe number of minutes until the Gloo Mesh (Gloo Platform APIs) license expires. To prevent your management server from crashing when the license expires, make sure to upgrade the license before expiration.
translation_errorThe number of translation errors that were reported by the Gloo management server.
translation_warningThe number of translation warnings that were reported by the Gloo management server.

Gloo telemetry pipeline metrics

MetricDescription
otelcol_processor_refused_metric_pointsThe number of metrics that were refused by the Gloo telemetry pipeline processor. For example, metrics might be refused to prevent collector agents from being overloaded in the case of insufficient memory resources.
otelcol_receiver_refused_metric_pointsThe number of metrics that were refused by the Gloo telemetry pipeline receiver. For example, metrics might be refused to prevent collector agents from being overloaded in the case of insufficient memory resources.
otelcol_processor_refused_spansThe metric spans that were refused by the memory_limiter in the Gloo telemetry pipeline to prevent collector agents from being overloaded.
otelcol_exporter_queue_capacityThe amount of telemetry data that can be stored in memory while waiting on a worker in the collector agent to become available to send the data.
otelcol_exporter_queue_sizeThe amount of telemetry data that is currently stored in memory. If the size is equal or larger than otelcol_exporter_queue_capacity, new telemetry data is rejected.
otelcol_loadbalancer_backend_latencyThe time the collector agents need to export telemetry data.
otelcol_exporter_send_failed_spansThe number of telemetry data spans that could not be sent to a backend.

Metrics labels

To reduce cardinality in the Gloo telemetry pipeline, only the following labels are collected for each metric.

Metric groupLabels
Istio[“cluster”, “collector_pod” , “connection_security_policy”, “destination_cluster”, “destination_principal”, “destination_service”, “destination_workload”, “destination_workload_id”, “destination_workload_namespace”, “gloo_mesh”, “namespace”, “pod_name”, “reporter”, “response_code”, “source_cluster”, “source_principal”, “source_workload”, “source_workload_namespace”, “version”, “workload_id”]
Telemetry pipeline[“app”, “cluster”, “collector_name”, “collector_pod”, “component”, “exporter”, “namespace”, “pod_template_generation”, “processor”, “service_version”]