mirror of https://github.com/dapr/docs.git
overview draft
Signed-off-by: Hannah Hunter <hannahhunter@microsoft.com>
This commit is contained in:
parent
263db693ec
commit
78f427d95d
|
@ -6,8 +6,57 @@ weight: 10
|
|||
description: "Overview of Dapr errors"
|
||||
---
|
||||
|
||||
An error code is a numeric or alphamueric code that indicates the nature of an error and, when possible, why it occured.
|
||||
|
||||
Dapr error codes are standardized strings for over 80+ common errors across HTTP and gRPC requests when using the Dapr APIs. These codes are both:
|
||||
- Returned in the JSON response body of the request
|
||||
- When enabled, logged in debug-level logs in the runtime.
|
||||
- If you're running in Kubernetes, error codes are logged in the sidecar.
|
||||
- If you're running in self-hosted, you can enable and run debug logs.
|
||||
|
||||
## Error format
|
||||
|
||||
Dapr error codes consist of a prefix, a category, and shorthand of the error itself. For example:
|
||||
|
||||
| Prefix | Category | Error shorthand |
|
||||
| ------ | -------- | --------------- |
|
||||
| ERR_ | PUBSUB_ | NOT_FOUND |
|
||||
|
||||
Some of the most common errors returned include:
|
||||
|
||||
- ERR_ACTOR_TIMER_CREATE
|
||||
- ERR_PURGE_WORKFLOW
|
||||
- ERR_STATE_STORE_NOT_FOUND
|
||||
- ERR_HEALTH_NOT_READY
|
||||
|
||||
> **Note:** [See a full list of error codes in Dapr.]({{< ref error-codes-reference.md >}})
|
||||
|
||||
An error returned for a state store not found might look like the following:
|
||||
|
||||
```json
|
||||
{
|
||||
"error": "Bad Request",
|
||||
"error_msg": "{\"errorCode\":\"ERR_STATE_STORE_NOT_FOUND\",\"message\":\"state store <name> is not found\",\"details\":[{\"@type\":\"type.googleapis.com/google.rpc.ErrorInfo\",\"domain\":\"dapr.io\",\"metadata\":{\"appID\":\"nodeapp\"},\"reason\":\"DAPR_STATE_NOT_FOUND\"}]}",
|
||||
"status": 400
|
||||
}
|
||||
```
|
||||
|
||||
The returned error includes:
|
||||
- The error code: `ERR_STATE_STORE_NOT_FOUND`
|
||||
- The error message describing the issue: `state store <name> is not found`
|
||||
- The app ID in which the error is occuring: `nodeapp`
|
||||
- The reason for the error: `DAPR_STATE_NOT_FOUND`
|
||||
|
||||
## Dapr error code metrics
|
||||
|
||||
Metrics help users see when exactly errors are occuring from within the runtime. Error code metrics are collected using the `error_code_total` endpoint. This endpoint is disabled by default. You can [enable it using the `recordErrorCodes` field in your configuration file]({{< ref "metrics-overview.md#configuring-metrics-for-error-codes" >}}).
|
||||
|
||||
## Demo
|
||||
|
||||
Watch a demo presented during [Diagrid's Dapr v1.15 celebration](https://www.diagrid.io/videos/dapr-1-15-deep-dive) to see how to enable error code metrics and handle error codes returned in the runtime.
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/NTnwoDhHIcQ?si=I2uCB_TINGxlu-9v&start=2812" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
|
||||
## Next step
|
||||
|
||||
{{< button text="Error code reference" page="error-codes-reference" >}}
|
||||
{{< button text="See a list of all Dapr error codes" page="error-codes-reference" >}}
|
|
@ -145,9 +145,12 @@ metrics:
|
|||
- /payments/{paymentID}/refund
|
||||
- /payments/{paymentID}/details
|
||||
excludeVerbs: false
|
||||
recordErrorCodes: true
|
||||
```
|
||||
|
||||
In the examples above, the path filter `/orders/{orderID}/items/{itemID}` would return _a single metric count_ matching all the `orderID`s and all the `itemID`s, rather than multiple metrics for each `itemID`. For more information, see [HTTP metrics path matching]({{< ref "metrics-overview.md#http-metrics-path-matching" >}})
|
||||
In the examples above, the path filter `/orders/{orderID}/items/{itemID}` would return _a single metric count_ matching all the `orderID`s and all the `itemID`s, rather than multiple metrics for each `itemID`. For more information, see [HTTP metrics path matching]({{< ref "metrics-overview.md#http-metrics-path-matching" >}}).
|
||||
|
||||
The above example also enables [recording error code metrics]({{< ref "metrics-overview.md#configuring-metrics-for-error-codes" >}}), which is disabled by default.
|
||||
|
||||
The following table lists the properties for metrics:
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ spec:
|
|||
|
||||
## Configuring metrics for error codes
|
||||
|
||||
You can enable additional metrics for [Dapr API error codes](https://docs.dapr.io/reference/api/error_codes/) by setting `spec.metrics.recordErrorCodes` to `true`. Dapr APIs which communicate back to their caller may return standardized error codes. As described in the [Dapr development docs](https://github.com/dapr/dapr/blob/master/docs/development/dapr-metrics.md), a new metric called `error_code_total` is recorded, which allows monitoring of error codes triggered by application, code, and category. See [the `errorcodes` package](https://github.com/dapr/dapr/blob/master/pkg/messages/errorcodes/errorcodes.go) for specific codes and categories.
|
||||
You can enable additional metrics for [Dapr API error codes](https://docs.dapr.io/reference/api/error_codes/) by setting `spec.metrics.recordErrorCodes` to `true`. Dapr APIs which communicate back to their caller may return standardized error codes. [A new metric called `error_code_total` is recorded]({{< ref errors-overview.md >}}), which allows monitoring of error codes triggered by application, code, and category. See [the `errorcodes` package](https://github.com/dapr/dapr/blob/master/pkg/messages/errorcodes/errorcodes.go) for specific codes and categories.
|
||||
|
||||
Example configuration:
|
||||
```yaml
|
||||
|
|
|
@ -36,6 +36,7 @@ spec:
|
|||
labels:
|
||||
- name: <LABEL-NAME>
|
||||
regex: {}
|
||||
recordErrorCodes: <TRUE-OR-FALSE>
|
||||
latencyDistributionBuckets:
|
||||
- <BUCKET-VALUE-MS-0>
|
||||
- <BUCKET-VALUE-MS-1>
|
||||
|
|
Loading…
Reference in New Issue