Migrate epic events to internal events: vol.1
What does this MR do and why?
Related to #421593 (closed)
Migrate some of the redis_hll_counters.epics_usage.epics_usage_total_unique_counts_monthly event's sub-events to Internal Events API.
Script used to update the files:
class DebugGenerator < Gitlab::Analytics::InternalEventsGenerator
  source_root File.expand_path('generator_templates/gitlab_internal_events', __dir__)
  def create_metric_file
    validate!
    template "event_definition.yml",
      event_file_path(event),
      options.fetch(:event_desc)
  end
end
is_ee = true
mr_number = 131794
unique_by = "user.id"
section = "dev"
stage = "plan"
group = "product_planning"
events_with_desc = [
['g_project_management_epic_created', 'An epic has been created'],
['g_project_management_users_updating_epic_titles', "An epic's title has been updated"],
['g_project_management_users_updating_epic_descriptions', "An epic's description has been updated"]
]
events_with_desc.each do |event_name, event_desc|
  tiers = %w[premium ultimate]
  tiers = %w[free premium ultimate] if !is_ee
  DebugGenerator.new([], {
    event: event_name,
    event_desc: event_desc,
    section: section,
    stage: stage,
    group: group,
    mr: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/#{mr_number}",
    unique: unique_by,
    tiers: tiers
  }).invoke_all
  ['28d', '7d'].each do |days|
    dir_prefix = is_ee ? "ee/" : ""
    event_file_pattern = event_name.delete_prefix('g_project_management_')
    files = Dir["#{dir_prefix}config/metrics/counts_#{days}/*\_#{event_file_pattern}\_*"]
    raise StandardError, "Multiple files found: #{files}" unless files.count == 1
    file_name = files.first
    text = File.read(file_name)
    new_contents = text.gsub(/distribution:/, "events:
  - name: #{event_name}
    unique: #{unique_by}\ndistribution:")
    File.open(file_name, "w") {|file| file.puts new_contents }
  end
end
Screenshots or screen recordings
Screenshots are required for UI changes, and strongly recommended for all other merge requests.
| Before | After | 
|---|---|
How to set up and validate locally
- Set up snowplow-micro
- Trigger the events migrated here:
- create an epic
- edit an epic's title
- edit an epic's description
 
- Make sure that the events have been triggered with content as per their new event definition files [eg. - categorysent asInternalEventTracking] on thehttp://localhost:9091/micro/goodsnowplow micro endpoint.
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
- 
I have evaluated the MR acceptance checklist for this MR. 
Edited  by Michał Wielich