<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article How to ingest additional Kubernetes Custom Resources (CRs) from a monitored cluster as a metric to be able to configure alerting based on that metric in Troubleshooting</title>
    <link>https://community.dynatrace.com/t5/Troubleshooting/How-to-ingest-additional-Kubernetes-Custom-Resources-CRs-from-a/ta-p/300022</link>
    <description>&lt;P&gt;&lt;STRONG&gt;Table of Contents&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://community.dynatrace.com/t5/Troubleshooting/How-to-ingest-additional-Kubernetes-Custom-Resources-CR-from-a/ta-p/300018#toc-hId-1869723845" target="_blank" rel="nofollow noopener noreferrer"&gt;Summary&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.dynatrace.com/t5/Troubleshooting/How-to-ingest-additional-Kubernetes-Custom-Resources-CR-from-a/ta-p/300018#toc-hId-1060377219" target="_blank" rel="nofollow noopener noreferrer"&gt;Problem&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.dynatrace.com/t5/Troubleshooting/How-to-ingest-additional-Kubernetes-Custom-Resources-CR-from-a/ta-p/300018#toc-hId-251030593" target="_blank" rel="nofollow noopener noreferrer"&gt;Workaround&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://community.dynatrace.com/t5/Troubleshooting/How-to-ingest-additional-Kubernetes-Custom-Resources-CR-from-a/ta-p/300018#toc-hId-1184494302" target="_blank" rel="nofollow noopener noreferrer"&gt;What's next&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;DIV class="lia-message-template-content-zone"&gt;
&lt;DIV class="lia-message-template-content-zone"&gt;
&lt;H1 id="toc-hId-1869723845"&gt;Summary&lt;/H1&gt;
&lt;P&gt;&lt;I&gt;Kubernetes Platform Monitoring is ingesting a set of Kubernetes resources from the Kube-APIserver on the monitored Kubernetes cluster and present those resources as metrics in Dynatrace, e.g(workload metrics (CPU, Memory), namespace resource quotas,......,etc)&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;In some scenarios, those&amp;nbsp;&lt;I&gt;Kubernetes resources are not enough and customers might need to ingest additional Kubernetes resources from a monitored cluster, and setup an alert based on the ingested resources metric value.&lt;/I&gt;&lt;/P&gt;
&lt;H4 id="toc-hId--1271973631"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H1 id="toc-hId-1060377219"&gt;Problem&lt;/H1&gt;
&lt;P&gt;&lt;I&gt;Ingesting additional Kubernetes Custom Resources (CRs) from a monitored Kubernetes cluster that is not ingested into Dynatrace out of the box and present this Custom Resources as a metric in Dynatrace to be able to setup an alerting if the value of this metric breached a configured threshold value.&lt;/I&gt;&lt;/P&gt;
&lt;H4 id="toc-hId--2081320257"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H1 id="toc-hId-251030593"&gt;Workaround&lt;/H1&gt;
&lt;P&gt;&lt;SPAN&gt;Ingesting additional Custom Resources from Kubernetes cluster as Smartscape nodes:&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 id="prerequisites" class="_5ei34w0-3-2-1 _5ei34w2-3-2-1 _19eqqo2 _19eqqo0 _19eqqo7" data-dt-component="Heading" data-testid="heading"&gt;Prerequisites&lt;/H3&gt;
&lt;DIV class="_1jhjaj90"&gt;
&lt;UL class="_rup8ap0-3-2-1 _16276mt0-3-2-1 list" data-dt-component="List"&gt;
&lt;LI class="_16276mt1-3-2-1"&gt;&lt;SPAN class="_rup8ap0-3-2-1" data-dt-component="Text"&gt;Dynatrace SaaS environment powered by Grail and AppEngine&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class="_16276mt1-3-2-1"&gt;&lt;A class="_1iksxp40-3-2-1 _z0fq9b4-3-2-1 _z0fq9bd-3-2-1 _z0fq9b5-3-2-1 _z0fq9b8-3-2-1 _1dg53j00" title="About Dynatrace Platform Subscription (DPS), the licensing model for all Dynatrace capabilities." href="https://docs.dynatrace.com/docs/license" target="_blank" rel="noopener noreferrer" data-dt-component="Link"&gt;DPS license&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;that includes the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A class="_1iksxp40-3-2-1 _z0fq9b4-3-2-1 _z0fq9bd-3-2-1 _z0fq9b5-3-2-1 _z0fq9b8-3-2-1 _1dg53j00" title="Learn how your consumption of the Dynatrace Kubernetes Platform Monitoring DPS capability is billed and charged." href="https://docs.dynatrace.com/docs/license/capabilities/container-monitoring/kubernetes-platform-monitoring" target="_blank" rel="noopener noreferrer" data-dt-component="Link"&gt;&lt;STRONG class="_wxp4dd0-3-2-1 _1q7lrma0" data-dt-component="Strong"&gt;Kubernetes Platform Monitoring&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;capability&lt;/A&gt;&lt;/LI&gt;
&lt;LI class="_16276mt1-3-2-1"&gt;&lt;A class="_1iksxp40-3-2-1 _z0fq9b4-3-2-1 _z0fq9bd-3-2-1 _z0fq9b5-3-2-1 _z0fq9b8-3-2-1 _1dg53j00" title="Overview of user and tailoring permissions." href="https://docs.dynatrace.com/docs/observe/infrastructure-observability/kubernetes-app/reference/permissions" target="_blank" rel="noopener noreferrer" data-dt-component="Link"&gt;Sufficient permissions&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;to use the New&amp;nbsp;&lt;STRONG class="_wxp4dd0-3-2-1 _1q7lrma0" data-dt-component="Strong"&gt;Kubernetes&lt;/STRONG&gt;&amp;nbsp;app within your Dynatrace environment&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class="_16276mt1-3-2-1"&gt;&lt;SPAN&gt;ActiveGate version 1.335+&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class="_16276mt1-3-2-1"&gt;&lt;STRONG&gt;Enabling this feature&amp;nbsp;will increase the ActiveGate's resource consumption, so make sure to watch for this and adapt resource's requests/limits accordingly.&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN&gt;For the below steps, we will&amp;nbsp;Ingest additional Custom Resource (&lt;STRONG&gt;ClusterResourceQuota&lt;/STRONG&gt;) from a monitored&amp;nbsp;&lt;STRONG&gt;OpenShift&lt;/STRONG&gt;&amp;nbsp;Cluster as an example:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Step 1&lt;/STRONG&gt;: Add the new permissions to the ClusterRole:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Please refer to &lt;A href="https://docs.dynatrace.com/docs/shortlink/enable-k8s-clusters#add-permissions-clusterroles" target="_blank" rel="noopener"&gt;this link&lt;/A&gt; to&lt;SPAN&gt;&amp;nbsp;extend the permissions for Kubernetes Platform monitoring, by creating a ClusterRole with the required permissions and bind it to the&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="_1v51izp0-3-2-1" data-dt-component="Code"&gt;dynatrace-activegate&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;service account using a ClusterRoleBinding, below are the needed permissions to ingest&amp;nbsp;&lt;STRONG&gt;ClusterResourceQuota &lt;/STRONG&gt;CR&amp;nbsp;from a monitored&amp;nbsp;&lt;STRONG&gt;OpenShift&lt;/STRONG&gt;&amp;nbsp;Cluster:&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE&gt;- verbs:
  - list
  - watch
  - get
  apiGroups:
  - &lt;A href="https://quota.openshift.io/" target="_blank" rel="noopener nofollow noreferrer"&gt;quota.openshift.io&lt;/A&gt;
  resources:
  - clusterresourcequotas&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 2&lt;/STRONG&gt;&lt;SPAN&gt;:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Modify the ActiveGate's customProperties to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;include&amp;nbsp;&lt;EM&gt;kubernetes_smartscape_monitored_custom_resources&lt;/EM&gt;&amp;nbsp;parameter for Kubernetes monitoring in the DynaKube YAML file:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Please refer to &lt;A style="font-family: inherit; background-color: #ffffff;" href="https://docs.dynatrace.com/docs/observe/infrastructure-observability/kubernetes-app/enable-k8s-experience#add-permissions-clusterroles:~:text=Extend%20monitoring%20of%20custom%20resources%20(CRs)" target="_self"&gt;this link&lt;/A&gt;&amp;nbsp;to extend monitoring of custom resources (CRs) using&amp;nbsp;&lt;EM&gt;kubernetes_smartscape_monitored_custom_resources&lt;/EM&gt;&amp;nbsp;parameter on&amp;nbsp;the ActiveGate's customProperties,&amp;nbsp;below are the parameter's values needed to ingest&amp;nbsp;&lt;STRONG&gt;ClusterResourceQuota &lt;/STRONG&gt;CR&amp;nbsp;from a monitored&amp;nbsp;&lt;STRONG&gt;OpenShift&lt;/STRONG&gt;&amp;nbsp;Cluster:&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE&gt;spec:
  activeGate:
    capabilities:
    - kubernetes-monitoring
    customProperties:
      value: |
        [kubernetes_monitoring]
        kubernetes_smartscape_monitored_custom_resources = [{ "resource": "clusterresourcequotas"\, "kind": "ClusterResourceQuota"\, "apiGroup": "&lt;A href="https://quota.openshift.io/" target="_blank" rel="noopener nofollow noreferrer"&gt;quota.openshift.io&lt;/A&gt;"\, "version": "v1"\, "namespaced": false\, "usePreferredApiVersion": false }]&lt;/PRE&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&amp;nbsp;The&amp;nbsp;&lt;CODE class="_1v51izp0-3-2-1" data-dt-component="Code"&gt;resource&lt;/CODE&gt;&amp;nbsp;value must be the lowercase plural name of the resource, and&amp;nbsp;&lt;CODE class="_1v51izp0-3-2-1" data-dt-component="Code"&gt;kind&lt;/CODE&gt;&amp;nbsp;must match the Kubernetes kind exactly (PascalCase). Optionally, set&amp;nbsp;&lt;CODE class="_1v51izp0-3-2-1" data-dt-component="Code"&gt;usePreferredApiVersion&lt;/CODE&gt;&amp;nbsp;for ActiveGate to use the preferred API version (if the preferred version can’t be determined, the version specified in&amp;nbsp;&lt;CODE class="_1v51izp0-3-2-1" data-dt-component="Code"&gt;version&lt;/CODE&gt;&amp;nbsp;is used as a fallback).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Once the new permissions has been added to the ClusterRole and the ActiveGate's customProperties modified to include the kubernetes_smartscape_monitored_custom_resources parameter successfully, you can query the data via the below DQL query:&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE&gt;smartscapeNodes K8S_CLUSTERRESOURCEQUOTA&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 3&lt;/STRONG&gt;:&amp;nbsp; After successfully querying the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;K8S_CLUSTERRESOURCEQUOTA via the provided DQL query, you can create a workflow to read the smartscapeNode 'K8S_CLUSTERRESOURCEQUOTA' every 1 minute or so, extract the data and ingest it as custom metric:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Please refer to &lt;A href="https://docs.dynatrace.com/docs/analyze-explore-automate/workflows/default-workflow-actions" target="_blank" rel="noopener"&gt;this link&lt;/A&gt; to create a Workflow with DQL query and HTTP request actions, a&lt;/SPAN&gt;&lt;SPAN&gt;ttached to the article an example Workflow JSON file 'clusterresourcequota-pods-used-metric.workflow.json'&amp;nbsp;that can be uploaded to a Dynatrace environment on the Workflow app to perform the below:&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;DIV&gt;1) The Workflow gets triggered every 1 minute.&lt;BR /&gt;2) Reads ClusterResourceQuota Smartscape nodes and calculates used pods in percent.&lt;BR /&gt;3) Ingest the result as metric via REST API.&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Notes:&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Please replace the below placeholders with the actual values on the Workflow:&lt;/SPAN&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;FONT color="#000000"&gt;&lt;STRONG&gt;&lt;CODE&gt;&amp;lt;DT-SaaS-FQDN&amp;gt;&lt;/CODE&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp;with the FQDN of your SaaS environment.&amp;nbsp;&lt;STRONG&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;CODE&gt;&amp;lt;OCP-CLUSTER-NAME&amp;gt;&lt;/CODE&gt;&lt;/STRONG&gt;&amp;nbsp;with the name of the OpenShift cluster where you modified the ActiveGate's customProperties for Kubernetes monitoring in the DynaKube YAML to include&amp;nbsp;kubernetes_smartscape_monitored_custom_resources parameter and added the new permissions to the ClusterRole,&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;CODE&gt;&amp;lt;token-value&amp;gt;&lt;/CODE&gt;&lt;/STRONG&gt;&amp;nbsp;with an access token with metrics.ingest scope&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;This Workflow is just a starting point and must be adapted based on your desired outcome.&lt;/LI&gt;
&lt;LI&gt;The Workflow can only handle one ClusterResourceQuota object.&lt;/LI&gt;
&lt;LI&gt;You might need to adjust the max result limits, and other parameters on the Workflow.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;H4 id="toc-hId--1147856548"&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H1 id="toc-hId-1184494302"&gt;What's next&lt;/H1&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Up to 5 extra Custom Resources types can be ingested as Smartscape nodes.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;We are working on a more easier way to extend monitoring of custom resources (CRs) that can be done via the Dynatrace UI, However, there is still no ETA yet on when this feature will be available.&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;References:&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;A href="https://docs.dynatrace.com/docs/shortlink/operator-security-rbac#activegate" target="_blank" rel="noopener noreferrer"&gt;https://docs.dynatrace.com/docs/shortlink/operator-security-rbac#activegate&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;A href="https://docs.dynatrace.com/docs/shortlink/custom-properties-file" target="_blank" rel="noopener noreferrer"&gt;https://docs.dynatrace.com/docs/shortlink/custom-properties-file&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;A href="https://docs.dynatrace.com/docs/shortlink/semantic-dictionary-smartscape-kubernetes" target="_blank" rel="noopener noreferrer"&gt;https://docs.dynatrace.com/docs/shortlink/semantic-dictionary-smartscape-kubernetes&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;A href="https://docs.dynatrace.com/docs/shortlink/workflows" target="_blank" rel="noopener noreferrer"&gt;https://docs.dynatrace.com/docs/shortlink/workflows&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;A href="https://docs.dynatrace.com/docs/manage/identity-access-management/access-tokens-and-oauth-clients/access-tokens#scopes" target="_blank" rel="noopener"&gt;https://docs.dynatrace.com/docs/manage/identity-access-management/access-tokens-and-oauth-clients/access-tokens#scopes&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;A style="font-family: inherit; background-color: #ffffff;" href="https://docs.dynatrace.com/docs/observe/infrastructure-observability/kubernetes-app/enable-k8s-experience#add-permissions-clusterroles:~:text=Extend%20monitoring%20of%20custom%20resources%20(CRs)" target="_blank" rel="noopener"&gt;https://docs.dynatrace.com/docs/observe/infrastructure-observability/kubernetes-app/enable-k8s-experience#add-permissions-clusterroles:~:text=Extend%20monitoring%20of%20custom%20resources%20(CRs)&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
    <pubDate>Thu, 04 Jun 2026 17:53:28 GMT</pubDate>
    <dc:creator>sheriflashin</dc:creator>
    <dc:date>2026-06-04T17:53:28Z</dc:date>
    <item>
      <title>How to ingest additional Kubernetes Custom Resources (CRs) from a monitored cluster as a metric to be able to configure alerting based on that metric</title>
      <link>https://community.dynatrace.com/t5/Troubleshooting/How-to-ingest-additional-Kubernetes-Custom-Resources-CRs-from-a/ta-p/300022</link>
      <description>&lt;P&gt;&lt;I&gt;Ingesting additional Kubernetes Custom Resources (CR) from a monitored Kubernetes cluster that is not ingested into Dynatrace out of the box and present this Custom Resources as a metric in Dynatrace to be able to setup an alerting if the value of this metric breached a configured threshold value.&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;LI-TOC indent="15" liststyle="disc" maxheadinglevel="2"&gt;&lt;/LI-TOC&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 17:53:28 GMT</pubDate>
      <guid>https://community.dynatrace.com/t5/Troubleshooting/How-to-ingest-additional-Kubernetes-Custom-Resources-CRs-from-a/ta-p/300022</guid>
      <dc:creator>sheriflashin</dc:creator>
      <dc:date>2026-06-04T17:53:28Z</dc:date>
    </item>
  </channel>
</rss>

