-
Notifications
You must be signed in to change notification settings - Fork 8.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
[APM] Track usage of Gold+ features #77630
[APM] Track usage of Gold+ features #77630
Conversation
5fe337f
to
6e49da5
Compare
x-pack/plugins/apm/server/feature.ts
Outdated
export const APM_SERVICE_MAPS_FEATURE_NAME = 'APM service maps'; | ||
export const APM_SERVICE_MAPS_LICENSE_TYPE = 'platinum'; |
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.
nit: Since a feature name and a feature license belongs together I think we should group them like:
export const APM_SERVICE_MAPS_FEATURE_NAME = 'APM service maps'; | |
export const APM_SERVICE_MAPS_LICENSE_TYPE = 'platinum'; | |
export const APM_SERVICE_MAPS_FEATURE = { | |
name: 'APM service maps', | |
license: 'platinum' | |
} |
Pinging @elastic/apm-ui (Team:apm) |
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.
lgtm 👍
interface Feature { | ||
name: string; | ||
license: LicenseType; | ||
} | ||
type FeatureName = 'serviceMaps' | 'ml' | 'customLinks'; | ||
export const features: Record<FeatureName, Feature> = { | ||
serviceMaps: { | ||
name: 'APM service maps', | ||
license: 'platinum', | ||
}, | ||
ml: { | ||
name: 'APM machine learning', | ||
license: 'platinum', | ||
}, | ||
customLinks: { | ||
name: 'APM custom links', | ||
license: 'gold', | ||
}, | ||
}; | ||
|
||
export function registerFeaturesUsage({ | ||
licensingPlugin, | ||
}: { | ||
licensingPlugin: LicensingPluginSetup; | ||
}) { | ||
Object.values(features).forEach(({ name, license }) => { | ||
licensingPlugin.featureUsage.register(name, license); | ||
}); | ||
} | ||
|
||
export function notifyFeatureUsage({ | ||
licensingPlugin, | ||
featureName, | ||
}: { | ||
licensingPlugin: LicensingRequestHandlerContext; | ||
featureName: FeatureName; | ||
}) { | ||
const feature = features[featureName]; | ||
licensingPlugin.featureUsage.notifyUsage(feature.name); | ||
} |
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.
@sqren what do you think of this? too much?
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.
Looks good 👍
💚 Build SucceededBuild metrics@kbn/optimizer bundle module count
async chunks size
distributable file count
History
To update your PR or re-run it, just comment with: |
Feel free to merge 👍 |
* adding license check * fixing api test * refactoring
* master: (92 commits) [ILM] Data tiers for 7.10 (elastic#76126) [ML] Transforms: Fixes styling of preview grid pagination in summary step (elastic#77789) [Drilldowns] Beta badge support. Mark URL Drilldown as Beta (elastic#75654) Re-enable session lifespan, idle timeout api integration tests and use unique names for the security test reports. (elastic#77746) [Alerting] renames code in alerting RBAC exemption to make it easier to maintain (elastic#77598) [Alerting & Actions] Overwrite SOs when updating instead of partially updating (elastic#73688) fixed react warning in Suspense in alert flyout (elastic#77777) [APM] Track usage of Gold+ features (elastic#77630) Visualize: Bad request when working with histogram aggregation (elastic#77684) remove legacy ES plugin (elastic#77703) [Lens] change name of custom query to filters (elastic#77725) skip flaky suite (elastic#76239) remove visual aspects of baseline job (elastic#77815) skip flaky suite (elastic#77835) Fixes typo in data recognizer text (elastic#77691) management/update trusted_apps jest snapshot [build] Use Elastic hosted UBI minimal base image (elastic#77776) [APM] Add transaction error rate alert (elastic#76933) [Security Solution] [Detections] Remove file validation on import route (elastic#77770) [Enterprise Search][tech debt] Add Kea logic paths for easier debugging/defaults (elastic#77698) ...
closes #72054