knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
library(googleErrorReportingR)
The following is a tutorial on how to use the googleErrorReportingR
package
inside a plumber API. even though this is meant to be used in an API built
using the plumber package, the same logic
can be used if you API is built with a different tool.
In your plumber.R
file define the central characteristics of the error
messages you will send from you API. We suggest at least defining the
following:
message <- googleErrorReportingR::format_error_message() message$serviceContext$service <- "api_name" message$serviceContext$version <- "api_version"
Nevertheless, if there are other charcateristics in format_error_message()
that are the same for all errors reported from your api, feel free to define
them here.
You also need to indicate the error reporting API key and GCP project_id
.
There are different ways to do this, if your API is hosted on Cloud run, you can
define them as environmental variables or secrets. If you are using a start.sh
file, you can define them there es environmental variables also.
The important thing is that they need to be define at a high level place that, from the moment the API is started, they are available. We strongly recommend you keep both of this elements in a secret manager like GCP's and not as plain text values.
Note: is not recommended that you define them in a Dockerfile, it could lead to security issues.
The easiest way to catch errors from your endpoint is to
wrap the endpoint's functionalities in a function and then wrap that function in
a tryCatch()
that sends an error if found.
The following is a minimal example of the usage of the error reporting
functionality, you can add as much of the format_error_message()
parameters
as you like:
error_catcher_from_function <- tryCatch( your_function(your_parameters), error = function(e) { message$message <- as.character(e) googleErrorReportingR::report_error(message) stop("Error message to print", call. = FALSE) })
Test your api by making a request that you know causes the wrapped function to fail and then go to your GCP's error reporting interface and see the error there. Review how the different parameters translate in the interface and customize more if needed.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.