Feature categories for API requests
What does this MR do?
- Allow feature categories to be set for API endpoints.
- Expose those feature categories in structured logging and metrics.
- Fix a bug when an endpoint had no feature category.
$ tail -f log/api_json.log | jq -c '[."meta.caller_id", ."meta.feature_category"]'
["/api/:version/jobs/request",null]
["/api/:version/projects/:id/issues","issue_tracking"]
["/api/:version/projects/:id",null]
["/api/:version/users","users"]
["/api/:version/users","users"]
["/api/:version/users","users"]
["/api/:version/projects/:id",null]
["/api/:version/projects/:id/releases/:tag_name",null]
["/api/:version/projects/:id",null]
["/api/:version/projects/:id",null]
["/api/:version/users","users"]
["/api/:version/users","users"]
["/api/:version/users","users"]
["/api/:version/projects/:id/issues","issue_tracking"]
We'll actually fill in more categories in gitlab-com/gl-infra/scalability#463 (closed).