-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat/performance tracking #1896
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great to see this - I left a few comments; interested to see what you think.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
where is the logic for this?
The Profiler will ensure { datadog: true } is appended to all logs
This looks like a great approach, I like the class' interface a lot
the default metadata |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@gsteenkamp89 LGTM. Pending that one question on the logger, are you OK to re-propose Profiler
in the SDK? Then we can keep this PR open and use it to update/align all the uses of the profiler in the relayer.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there any overlap here? across-protocol/indexer#95
Oh jeez.. Yes there's definitely overlap. Although looking at David's PR, it seems the goal there as slightly different maybe? This profiler is just logging production performance data to datadog. |
closes ACX-3198
Goal:
Provide a standardised way of logging performance metrics.
The API is similar to using Node's native perf_hooks, but slightly easier to use.
The Profiler will ensure
{ datadog: true }
is appended to all logs so we can ingest this by searching for this key.Since the Profiler class holds some state, each instance should be created within a function scope so it can be garbage collected.
or wrap an async function with
measureAsync