Browse Source

feat: More event size metrics (#12571)

* feat: More event size metrics

* fix: Remove broken node_size metric

* fix: Do not attempt to serialize CanonicalKeyDict
Markus Unterwaditzer 6 years ago
parent
commit
0c208fddf4
3 changed files with 14 additions and 5 deletions
  1. 6 0
      src/sentry/event_manager.py
  2. 2 5
      src/sentry/models/event.py
  3. 6 0
      src/sentry/web/api.py

+ 6 - 0
src/sentry/event_manager.py

@@ -976,6 +976,12 @@ class EventManager(object):
             },
         )
 
+        metrics.timing(
+            'events.size.data.post_save',
+            event.size,
+            tags={'project_id': project.id}
+        )
+
         return event
 
     def _get_event_user(self, project, data):

+ 2 - 5
src/sentry/models/event.py

@@ -34,7 +34,7 @@ from sentry.db.models import (
 )
 from sentry.db.models.manager import EventManager, SnubaEventManager
 from sentry.interfaces.base import get_interfaces
-from sentry.utils import metrics
+from sentry.utils import json, metrics
 from sentry.utils.cache import memoize
 from sentry.utils.canonical import CanonicalKeyDict, CanonicalKeyView
 from sentry.utils.safe import get_path
@@ -292,10 +292,7 @@ class EventCommon(object):
 
     @property
     def size(self):
-        data_len = 0
-        for value in six.itervalues(self.data):
-            data_len += len(repr(value))
-        return data_len
+        return len(json.dumps(dict(self.data)))
 
     @property
     def transaction(self):

+ 6 - 0
src/sentry/web/api.py

@@ -557,6 +557,12 @@ class StoreView(APIView):
             metrics.timing('events.size.rejected', data_size)
             raise APIForbidden("Event size exceeded 10MB after normalization.")
 
+        metrics.timing(
+            'events.size.data.post_storeendpoint',
+            data_size,
+            tags={'project_id': project.id}
+        )
+
         return process_event(event_manager, project,
                              key, remote_addr, helper, attachments)