18 Jun 2024 10:49 AM - last edited on 12 Aug 2024 07:55 AM by Michal_Gebacki
Hello There,
I need your professional help on giving suggestions about detailsInjection in the unified analysis page. I am working on building custom extension to display a customized metrics in "HOST" and "Container" page. According to the documentation (https://docs.dynatrace.com/docs/extend-dynatrace/extend-ui/unified-analysis/unified-analysis-referen...) the "HOST" page can be extended to display my own metrics. I build the package with the extension.yaml as below and I found the chart is there but there is no metrics data.
screens:
- entityType: HOST
detailsInjections:
- type: CHART_GROUP
key: cfcollector-cpu-usage-metrics-chart
width: FULL_SIZE
chartsCards:
- key: "cfcollector-cpu-usage-metrics-chart"
mode: NORMAL
displayName: "Cloud Foundry Application Cpu Usage"
numberOfVisibleCharts: 1
charts:
- displayName: "Cloud Foundry App Cpu Usage"
visualizationType: GRAPH_CHART
graphChartConfig:
stacked: false
metrics:
- metricSelector: btp.cf.cpu.entitlement.usage:splitBy():sort(value(auto,descending)):limit(20)
The metrics "btp.cf.cpu.entitlement.usage" is collected by an application running in our platform, this "cfcollector" application collects all the metrics data from many other applications. Those application doesn't bind any Dynatrace service instance. That means those applications will not display in the "HOST" page. "cfcollector" application binds the Dynatrace service instance so that it can be found in the "HOST" page.
I have below questions:
1. Could you please suggest how to fix the issue that metrics data not displayed in the "HOST" page? From the screenshot and the extension.yaml, it seems Dynatrace automatically adds the entityCondition with attaching the "filter(eq("dt.entity.host",HOST-6BEBD4C8D7))". Is there a way to remove this filter condition by updating the extension.yaml?
Jump to the Data Explorer, the filter condition is automatically added:
If the "filter" is removed the metrics data can be displayed.
2. Whether the "typology" block should be added in the extension.yaml in order to display the metrics data? If it is, please help to suggest how to do it.
3. Since the collected metrics data is for different applications, and those applications will not display in the "HOST" page. Do you think it is possible or not to display below chart directly split by "app_name" dimension in the "HOST" page chart panel?
My goal is to display my metrics in the HOST page, please help to guide.
Thanks in advance!
Regards,
Marco
18 Jun 2024 10:58 AM
Unified Analysis pages only show the data in context, so you'll either have to send in the metric line with the host entity id, or attach the metric to an entity, and then create a relationship between that entity and the host entity. You can do such relationships based on for example IP address.
18 Jun 2024 11:16 AM
Thanks Mike!
Can you share any documentation link for introducing how to attach the metric to an entity and also create the relationship?
I found an example "typology" as below, but I don't understand the rule&relationships definition.
topology:
types:
- name: custom:sap_btp_cf_cpu_entitlement_usage
displayName: sap_btp_cf_cpu_entitlement_usage Host
enabled: true
rules:
- idPattern: nc_alertmanager_{host}
sources:
- sourceType: Metrics
condition: $prefix(com.dynatrace.extension.prometheus-nc-alertmanager.alert_state)
attributes:
- pattern: "{host}"
key: nc_alertmanager_host
displayName: nc_alertmanager_host
- pattern: "{support_team}"
key: support_team
displayName: support_team
requiredDimensions: []
instanceNamePattern: "{host}"
relationships:
- sources:
- sourceType: Entities
mappingRules:
- sourceProperty: nc_alertmanager_host
sourceTransformation: To lower case
destinationProperty: displayName
destinationTransformation: To lower case
fromType: custom:dt_extension_prometheus_nc_alertmanager_host
typeOfRelation: SAME_AS
toType: host
Regards,
Marco
18 Jun 2024 04:29 PM
The best explanation of the topology in extensions can be found at 22:38 in this observability clinic: https://youtu.be/tIIVaC9iWPM?si=INJ5hWCxSjyHIE1e&t=1358
21 Jun 2024 07:29 AM
Hi Mike,
Thanks for that video. My further question is: The demo is based on two types of metrics. My case is that I only want to use one metrics, do I still need to define the relationship? If it is, how to implement that?
Regards,
Marco
21 Jun 2024 09:34 AM
If you want to display data on the host screen from a source which is not routed through the OneAgent CLI/REST (which automatically adds the dt.entity.host), then you need to create a relationship. This is a simple relationship between a generic entity and a host, based on IP mapping:
- fromType: custom:sap_btp_cf_cpu_entitlement_usage
typeOfRelation: SAME_AS
toType: host
sources:
- sourceType: Entities
mappingRules:
- sourceProperty: dt.ip_addresses
sourceTransformation: To lower case
destinationProperty: ipAddress
destinationTransformation: To lower case
25 Jun 2024 09:08 AM
I still met the error. I already had my entity type as "custom:sap_btp_cf_application_cpu_entitlement_usage". But when I uploaded my extension package it always mention that this entity type does not exist. Please suggest.
My extension yaml for the screen part is as below:
screens:
- entityType: HOST
detailsInjections:
- type: CHART_GROUP
key: sap-btp-cf-app-cpu-usage-chart
width: FULL_SIZE
conditions:
- relatedEntity|entitySelectorTemplate=type(custom:sap_btp_cf_application_cpu_entitlement_usage),fromRelationships.isSameAs($(entityConditions))
chartsCards:
- key: "sap-btp-cf-app-cpu-usage-chart"
displayName: "SAP BTP Cloud Foundry Application Cpu Usage"
numberOfVisibleCharts: 1
charts:
- displayName: "Cloud Foundry App Cpu Usage"
visualizationType: GRAPH_CHART
graphChartConfig:
stacked: false
metrics:
- metricSelector: "sap.btp.cf.cpu.entitlement.usage:filter(in(\"dt.entity.custom:sap_btp_cf_application_cpu_entitlement_usage\",entitySelector(\"type(custom:sap_btp_cf_application_cpu_entitlement_usage),fromRelationships.isSameAs($(entityConditions))\"))):splitBy(\"description\")"
Thanks,
Marco