added config to turn on sentry profiling w/ burnettk

This commit is contained in:
jasquat 2023-02-28 11:23:50 -05:00
parent 586ac6b091
commit 27f3da2458
2 changed files with 25 additions and 14 deletions

View File

@ -1,6 +1,7 @@
"""__init__."""
import faulthandler
import os
import sys
from typing import Any
import connexion # type: ignore
@ -207,25 +208,31 @@ def configure_sentry(app: flask.app.Flask) -> None:
"SPIFFWORKFLOW_BACKEND_SENTRY_TRACES_SAMPLE_RATE is not set somehow"
)
# profiling doesn't work on windows, because of an issue like https://github.com/nvdv/vprof/issues/62
# but also we commented out profiling because it was causing segfaults (i guess it is marked experimental)
# profiles_sample_rate = 0 if sys.platform.startswith("win") else 1
sentry_sdk.init(
dsn=app.config.get("SPIFFWORKFLOW_BACKEND_SENTRY_DSN"),
integrations=[
sentry_configs = {
"dsn": app.config.get("SPIFFWORKFLOW_BACKEND_SENTRY_DSN"),
"integrations": [
FlaskIntegration(),
],
environment=app.config["ENV_IDENTIFIER"],
"environment": app.config["ENV_IDENTIFIER"],
# sample_rate is the errors sample rate. we usually set it to 1 (100%)
# so we get all errors in sentry.
sample_rate=float(sentry_errors_sample_rate),
"sample_rate": float(sentry_errors_sample_rate),
# Set traces_sample_rate to capture a certain percentage
# of transactions for performance monitoring.
# We recommend adjusting this value to less than 1(00%) in production.
traces_sample_rate=float(sentry_traces_sample_rate),
traces_sampler=traces_sampler,
"traces_sample_rate": float(sentry_traces_sample_rate),
"traces_sampler": traces_sampler,
# The profiles_sample_rate setting is relative to the traces_sample_rate setting.
# _experiments={"profiles_sample_rate": profiles_sample_rate},
before_send=before_send,
)
"before_send": before_send,
}
if app.config.get("SPIFFWORKFLOW_BACKEND_SENTRY_PROFILING_ENABLED"):
# profiling doesn't work on windows, because of an issue like https://github.com/nvdv/vprof/issues/62
# but also we commented out profiling because it was causing segfaults (i guess it is marked experimental)
profiles_sample_rate = 0 if sys.platform.startswith("win") else 1
if profiles_sample_rate > 0:
sentry_configs["_experiments"] = {
"profiles_sample_rate": profiles_sample_rate
}
sentry_sdk.init(**sentry_configs)

View File

@ -79,6 +79,10 @@ SPIFFWORKFLOW_BACKEND_SENTRY_ORGANIZATION_SLUG = environ.get(
SPIFFWORKFLOW_BACKEND_SENTRY_PROJECT_SLUG = environ.get(
"SPIFFWORKFLOW_BACKEND_SENTRY_PROJECT_SLUG", default=None
)
SPIFFWORKFLOW_BACKEND_SENTRY_PROFILING_ENABLED = (
environ.get("SPIFFWORKFLOW_BACKEND_SENTRY_PROFILING_ENABLED", default="false")
== "true"
)
SPIFFWORKFLOW_BACKEND_LOG_LEVEL = environ.get(
"SPIFFWORKFLOW_BACKEND_LOG_LEVEL", default="info"