--- type: docs title: "Configure metrics" linkTitle: "Overview" weight: 4000 description: "Enable or disable Dapr metrics " --- By default, each Dapr system process emits Go runtime/process metrics and has their own [Dapr metrics](https://github.com/dapr/dapr/blob/master/docs/development/dapr-metrics.md). ## Prometheus endpoint The Dapr sidecars exposes a [Prometheus](https://prometheus.io/) metrics endpoint that you can scrape to gain a greater understanding of how Dapr is behaving. ## Configuring metrics using the CLI The metrics application endpoint is enabled by default. You can disable it by passing the command line argument `--enable-metrics=false`. The default metrics port is `9090`. You can override this by passing the command line argument `--metrics-port` to Daprd. ## Configuring metrics in Kubernetes You can also enable/disable the metrics for a specific application by setting the `dapr.io/enable-metrics: "false"` annotation on your application deployment. With the metrics exporter disabled, `daprd` does not open the metrics listening port. The following Kubernetes deployment example shows how metrics are explicitly enabled with the port specified as "9090". ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nodeapp labels: app: node spec: replicas: 1 selector: matchLabels: app: node template: metadata: labels: app: node annotations: dapr.io/enabled: "true" dapr.io/app-id: "nodeapp" dapr.io/app-port: "3000" dapr.io/enable-metrics: "true" dapr.io/metrics-port: "9090" spec: containers: - name: node image: dapriosamples/hello-k8s-node:latest ports: - containerPort: 3000 imagePullPolicy: Always ``` ## Configuring metrics using application configuration You can also enable metrics via application configuration. To disable the metrics collection in the Dapr sidecars running in a specific namespace: - Use the `metrics` spec configuration. - Set `enabled: false` to disable the metrics in the Dapr runtime. ```yaml apiVersion: dapr.io/v1alpha1 kind: Configuration metadata: name: tracing namespace: default spec: tracing: samplingRate: "1" metrics: enabled: false ``` ## High cardinality metrics Depending on your use case, some metrics emitted by Dapr might contain values that have a high cardinality. This might cause increased memory usage for the Dapr process/container and incur expensive egress costs in certain cloud environments. To mitigate this issue, you can set regular expressions for every metric exposed by the Dapr sidecar. [See a list of all Dapr metrics](https://github.com/dapr/dapr/blob/master/docs/development/dapr-metrics.md). The following example shows how to apply a regular expression for the label `method` in the metric `dapr_runtime_service_invocation_req_sent_total`: ```yaml apiVersion: dapr.io/v1alpha1 kind: Configuration metadata: name: daprConfig spec: metric: enabled: true rules: - name: dapr_runtime_service_invocation_req_sent_total labels: - name: method regex: "orders/": "orders/.+" ``` When this configuration is applied, a recorded metric with the `method` label of `orders/a746dhsk293972nz` will be replaced with `orders/`. ### Watch the demo Watch [this video to walk through handling high cardinality metrics](https://youtu.be/pOT8teL6j_k?t=1524): ## References * [Howto: Run Prometheus locally]({{< ref prometheus.md >}}) * [Howto: Set up Prometheus and Grafana for metrics]({{< ref grafana.md >}})