diff options
author | Erik Johnston <erikj@jki.re> | 2019-02-18 17:22:45 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-18 17:22:45 +0000 |
commit | d154f5a055a22a60d6ae9ee03eac3d38a83d52ac (patch) | |
tree | 1bd9dbcc18b10f3f87694cac97bf6de5fb92e409 /synapse/config/metrics.py | |
parent | Merge pull request #4666 from matrix-org/erikj/register_login_split (diff) | |
parent | Fixup error handling and message (diff) | |
download | synapse-d154f5a055a22a60d6ae9ee03eac3d38a83d52ac.tar.xz |
Merge pull request #4632 from matrix-org/erikj/basic_sentry
Add basic optional sentry.io integration
Diffstat (limited to 'synapse/config/metrics.py')
-rw-r--r-- | synapse/config/metrics.py | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/synapse/config/metrics.py b/synapse/config/metrics.py index 718c43ae03..35f1074765 100644 --- a/synapse/config/metrics.py +++ b/synapse/config/metrics.py @@ -13,7 +13,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -from ._base import Config +from ._base import Config, ConfigError + +MISSING_SENTRY = ( + """Missing sentry-sdk library. This is required to enable sentry + integration. + """ +) class MetricsConfig(Config): @@ -23,12 +29,34 @@ class MetricsConfig(Config): self.metrics_port = config.get("metrics_port") self.metrics_bind_host = config.get("metrics_bind_host", "127.0.0.1") + self.sentry_enabled = "sentry" in config + if self.sentry_enabled: + try: + import sentry_sdk # noqa F401 + except ImportError: + raise ConfigError(MISSING_SENTRY) + + self.sentry_dsn = config["sentry"].get("dsn") + if not self.sentry_dsn: + raise ConfigError( + "sentry.dsn field is required when sentry integration is enabled", + ) + def default_config(self, report_stats=None, **kwargs): res = """\ ## Metrics ### # Enable collection and rendering of performance metrics enable_metrics: False + + # Enable sentry integration + # NOTE: While attempts are made to ensure that the logs don't contain + # any sensitive information, this cannot be guaranteed. By enabling + # this option the sentry server may therefore receive sensitive + # information, and it in turn may then diseminate sensitive information + # through insecure notification channels if so configured. + #sentry: + # dsn: "..." """ if report_stats is None: |