Overview: Control plane logs

Learn about Radius logs for monitoring and troubleshooting the control plane.

The Radius control plane produces logs that you can use to monitor and troubleshoot the control plane. This document describes how to collect and search logs, as well as the log schema.

Log formats

The Radius control plane outputs structured logs to stdout, either plain-text or JSON-formatted. By default, services produce JSON formatted logs.

If you want to use a search engine such as Elastic Search or Azure Monitor to search logs, it is strongly recommended to use JSON-formatted logs which the log collector and the search engine can parse using the built-in JSON parser.

Log collectors

Fluentd

If you run the control plane in a Kubernetes cluster, Fluentd is a popular container log collector. You can use Fluentd with a JSON parser plugin to parse Radius JSON-formatted logs. This how-to shows how to configure Fluentd in your cluster.

Azure Monitor

If you are using Azure Kubernetes Service, you can use the built-in agent to collect logs with Azure Monitor without needing to install Fluentd.

Search engines

Elastic Search and Kibana

If you use Fluentd, we recommend using Elastic Search and Kibana. This how-to shows how to set up Elastic Search and Kibana in your Kubernetes cluster.

Azure Monitor

If you are using the Azure Kubernetes Service, you can use Azure Monitor for containers without installing any additional monitoring tools. Also read How to enable Azure Monitor for containers

Log schema

Control plane logs contain the following fields:

FieldDescriptionExample
timestampISO8601 timestamp2011-10-05T14:48:00.000Z
severityLog level. Available levels are info, warn, debug, and error.info
messageLog messageproxying request target: http://de-api.radius-system:6443
nameLogging scopeucplogger.api
callerService logging pointplanes/proxyplane.go:171
versionControl plane version0.18
serviceNameName of control plane serviceucplogger
hostNameService host nameucp-77bc9b4cbb-nmjlz
resourceIdThe resourceId being affected, if applicable/apis/api.ucp.dev/v1alpha3/planes/deployments/local/resourcegroups/myrg/providers/Microsoft.Resources/deployments/rad-deploy-6c0d37b0-705e-454b-9167-877aa080e656
traceIdw3c traceId. Used to uniquely identify a distributed trace through a system.d1ba9c7d2326ee1b44eb0b8177ef554f
spanIdw3c spanId The ID of this request as known by the caller. Also known as parent-id in some tracing systems.ce52a91ed3c86c6d

Example

{
    "severity": "info",
    "timestamp": "2023-03-03T00:03:55.355Z",
    "name": "ucplogger.api",
    "caller": "planes/proxyplane.go:171",
    "message": "proxying request target: http://de-api.radius-system:6443",
    "serviceName": "ucplogger",
    "version": "0.18",
    "hostName": "ucp-77bc9b4cbb-nmjlz",
    "resourceId": "/apis/api.ucp.dev/v1alpha3/planes/deployments/local/resourcegroups/myrg/providers/Microsoft.Resources/deployments/rad-deploy-6c0d37b0-705e-454b-9167-877aa080e656",
    "traceId": "2435428bbf8533c68b122b1ef31bb42f",
    "spanId": "30a88181fe683c00"
}

References