Deploy the Azure Arc telemetry Router

Note

  • The telemetry router is in Public Preview and should be deployed for testing purposes only.
  • While the telemetry router is in Public Preview, be advised that future preview releases could include changes to CRD specs, CLI commands, and/or telemetry router messages.
  • The current preview does not support in-place upgrades of a data controller deployed with the Arc telemetry router enabled. In order to install or upgrade a data controller in a future release, you will need to uninstall the data controller and then re-install.

What is the Azure Arc Telemetry Router?

The Azure Arc telemetry router enables exporting telemetry data to other monitoring solutions. For this Public Preview, we only support exporting log data to either Kafka or Elasticsearch and metric data to Kafka.

This document specifies how to deploy the telemetry router and configure it to work with the supported exporters.

Deployment

Note

The telemetry router currently supports indirectly connected mode only.

Create a Custom Configuration Profile

After setting up your Kubernetes cluster, you'll need to create a custom configuration profile. Next, enable a temporary feature flag that deploys the telemetry router during data controller creation.

Turn on the Feature Flag

After creating the custom configuration profile, you'll need to edit the profile to add the monitoring property with the enableOpenTelemetry flag set to true. You can set the feature flag by running the following az CLI commands (edit the --path parameter, as necessary):

az arcdata dc config add --path ./control.json --json-values ".spec.monitoring={}"
az arcdata dc config add --path ./control.json --json-values ".spec.monitoring.enableOpenTelemetry=true"

To confirm the flag was set correctly, open the control.json file and confirm the monitoring object was added to the spec object and enableOpenTelemetry is set to true.

spec:
    monitoring:
        enableOpenTelemetry: true

This feature flag requirement will be removed in a future release.

Create the Data Controller

After creating the custom configuration profile and setting the feature flag, you're ready to create the data controller using indirect connectivity mode. Be sure to replace the --profile-name parameter with a --path parameter that points to your custom control.json file (see use custom control.json file to deploy Azure Arc-enabled data controller)

Verify Telemetry Router Deployment

When the data controller is created, a TelemetryRouter custom resource is also created. Data controller deployment is marked ready when both custom resources have finished deploying. After the data controller finishes deployment, you can use the following command to verify that the TelemetryRouter exists:

kubectl describe telemetryrouter arc-telemetry-router -n <namespace>
apiVersion: arcdata.microsoft.com/v1beta4
  kind: TelemetryRouter
  metadata:
    name: arc-telemetry-router
    namespace: <namespace>
  spec:
    credentials:
    exporters:
    pipelines:

At the time of creation, no pipeline or exporters are set up. You can setup your own pipelines and exporters to route metrics and logs data to your own instances of Kafka and Elasticsearch.

After the TelemetryRouter is deployed, an instance of Kafka (arc-router-kafka) and a single instance of TelemetryCollector (collector-inbound) should be deployed and in a ready state. These resources are system managed and editing them isn't supported. The following pods will be deployed as a result:

  • An inbound collector pod - arctc-collector-inbound-0
  • A kakfa broker pod - arck-arc-router-kafka-broker-0
  • A kakfa controller pod - arck-arc-router-kafka-controller-0

Note

An outbound collector pod isn't created until at least one pipeline has been added to the telemetry router.

After you create the first pipeline, an additional TelemetryCollector resource (collector-outbound) and pod arctc-collector-outbound-0 are deployed.

kubectl get pods -n <namespace>

NAME                                 READY   STATUS      RESTARTS   AGE
arc-bootstrapper-job-4z2vr           0/1     Completed   0          15h
arc-webhook-job-facc4-z7dd7          0/1     Completed   0          15h
arck-arc-router-kafka-broker-0       2/2     Running     0          15h
arck-arc-router-kafka-controller-0   2/2     Running     0          15h
arctc-collector-inbound-0            2/2     Running     0          15h
bootstrapper-8d5bff6f7-7w88j         1/1     Running     0          15h
control-vpfr9                        2/2     Running     0          15h
controldb-0                          2/2     Running     0          15h
logsdb-0                             3/3     Running     0          15h
logsui-fwrh9                         3/3     Running     0          15h
metricsdb-0                          2/2     Running     0          15h
metricsdc-bc4df                      2/2     Running     0          15h
metricsdc-fm7jh                      2/2     Running     0          15h
metricsui-qqgbv                      2/2     Running     0          15h