Use instrumented classes in Usage Ping
Use instrumentation classes defined in metrics definitions and usage_data.rb
to build the Usage Ping Payload
This will allow us use instrumentation classes for a limited type of metrics. See &6118 (closed) for adding more support
Proposed roadmap
-
add add_metric(instrumentation)
method tousage_data.rb
-
Use the existing instrumentation classes in usage_data.rb
-
overite add_metric(instrumentation)
in usage_data_queries.rb in order to continue support for generating metrics queries -
overite add_metric(instrumentation)
for naming suggestions in order to continue support for metrics suggestions -
overite add_metric(instrumentation)
forlib/gitlab/usage_data_non_sql_metrics.rb
to continue support for non SQL metrics API
Testing considerations:
Metrics migrated to instrumentation classes in usage_data.rb:
- uuid
- hostname
- counts.issues
- count.boards
- usage_activity_by_stage.plan.issues
- usage_activity_by_stage_monthly.plan.issues
- Ensure JSON payload generated with
SubmitUsagePingService
is generating without any errors. - Correspondent RawUsageData is created correctly
- Payload is submitted to version app
RawUsageData.count SubmitUsagePingService.new.execute RawUsageData.count # inspect payload payload = RawUsageData.last.payload payload['uuid'] payload['hostname'] payload['counts']['issues'] payload['counts']['boards'] payload['usage_activity_by_stage']['plan']['issues'] payload['usage_activity_by_stage_monthly']['plan']['issues']
- Ensure we can generate the metrics queries
bundle exec rake gitlab:usage_data:dump_sql_in_yaml
- Ensure non SQL usage data is working correct
Gitlab::UsageDataNonSqlMetrics.uncached_data
- Name suggestions are correct:
Gitlab::Usage::Metrics::NamesSuggestions::Generator.generate("counts.boards")
Edited by Alina Mihaila