-
Notifications
You must be signed in to change notification settings - Fork 4.2k
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
add attempt metrics #21286
add attempt metrics #21286
Conversation
OssMetricsRegistry(final MetricEmittingApp application, | ||
final String metricName, | ||
final String metricDescription) { | ||
final String metricDescription, | ||
final String... metricTags) { |
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.
i like this idea even though we can't strictly enforce it. Perhaps we can do slightly better by turning this into a list of metric tags and having a static constant named NO_METRIC_TAGS
to make it obvious.
Any bit of discoverability or readability helps.
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.
@davinchia That would add additional logic to check the list to see if it only has one entry and it's value is NO_METRIC_TAGS
. That seems more complicated than using the ellipses to indicate that the list/array can simply not be provided if there are no tags. This also aligns with how the OpenTracing/DataDog tracing classes work.
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.
No. I wasn't even thinking of going that far.
I was suggesting that we add a sentinel variable and enforce via convention that the metrics with no tags are initialised with new OssMericsRegistry(application, name, description, NO_TAG)
vs new OssMericsRegistry(application, name, description)
. I like this because in the empty case, I no longer need to click into the constructor, read javadocs and understand what the variable arguments mean.
Sounds reasonable. I like the min/max approach. I think we should give it a shot. It's a 2-way door so should be easy to try and pick what we like best. Curious, why do you say pending isn't meaningful? If I recall correctly, that alert has helped us in the past when there are issues with the worker deployment. |
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.
A job is set to pending on line 208 of |
Update: I removed the running attempts metric. Because we use a gauge, it doesn't work well to add several dimensions. For now I think nailing the creation and completion is really the key anyway. The rest is all wired up now. I removed data plane id for now. I think that should added as part of the data plane portability project, so I don't want to preempt that. @jdpgrailsdev mind taking one more look? |
|
00f2cb1
to
459a53f
Compare
Airbyte Code Coverage
|
What
I want to be able to build this dashboard (below). I want to know what the failure rate is with connector failures removed. Ideally this is what we would use to trigger pages for the platform team, instead of triggering based on failure rate with connectors included.
(link)
I can't build it because we don't emit one event per attempt or job. We emit n events based on the number of release stages and failure origins. Because of this, I can't really get numbers that reflect the reality. They get skewed by the number of stages and failure origins. I end up with a result I don't really trust.
In addition, I find dashboards like this one that are wrong, because they double count jobs since for each job there could be 1 or 2 release stages.
How
OssMetricRepository
so that we can declare what dimensions we expect to ship with a metric. Not sure this is a good idea yet. The declaration is good, but it currently can't be enforced.To d