Skip to content

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

  1. add add_metric(instrumentation) method to usage_data.rb
  2. Use the existing instrumentation classes in usage_data.rb
  3. overite add_metric(instrumentation) in usage_data_queries.rb in order to continue support for generating metrics queries
  4. overite add_metric(instrumentation) for naming suggestions in order to continue support for metrics suggestions
  5. overite add_metric(instrumentation) for lib/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