Power monitoring is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process.

For more information about the support scope of Red Hat Technology Preview features, see Technology Preview Features Support Scope.

The Kepler resource is a Kubernetes custom resource definition (CRD) that enables you to configure the deployment and monitor the status of the Kepler resource.

The Kepler configuration

You can configure Kepler with the spec field of the Kepler resource.

Ensure that the name of your Kepler instance is kepler. All other instances are ignored by the Power monitoring Operator.

The following is the list of configuration options:

Table 1. Kepler configuration options
Name Spec Description Default



The port on the node where the Prometheus metrics are exposed.




The nodes on which Kepler exporter pods are scheduled.

kubernetes.io/os: linux



The tolerations for Kepler exporter that allow the pods to be scheduled on nodes with specific characteristics.

- operator: "Exists"

Example Kepler resource with default configuration
apiVersion: kepler.system.sustainable.computing.io/v1alpha1
kind: Kepler
  name: kepler
      port: 9103 (1)
        kubernetes.io/os: linux (2)
      Tolerations: (3)
      - key: ""
        operator: "Exists"
        value: ""
        effect: ""
1 The Prometheus metrics are exposed on port 9103.
2 Kepler pods are scheduled on Linux nodes.
3 The default tolerations allow Kepler to be scheduled on any node.

Monitoring the Kepler status

You can monitor the state of the Kepler exporter with the status field of the Kepler resource.

The status.exporter field includes information, such as the following:

  • The number of nodes currently running the Kepler pods

  • The number of nodes that should be running the Kepler pods

  • Conditions representing the health of the Kepler resource

This provides you with valuable insights into the changes made through the spec field.

Example state of the Kepler resource
apiVersion: kepler.system.sustainable.computing.io/v1alpha1
kind: Kepler
  name: kepler
   conditions: (1)
     - lastTransitionTime: '2024-01-11T11:07:39Z'
       message: Reconcile succeeded
       observedGeneration: 1
       reason: ReconcileSuccess
       status: 'True'
       type: Reconciled
     - lastTransitionTime: '2024-01-11T11:07:39Z'
       message: >-
         Kepler daemonset "kepler-operator/kepler" is deployed to all nodes and
         available; ready 2/2
       observedGeneration: 1
       reason: DaemonSetReady
       status: 'True'
       type: Available
   currentNumberScheduled: 2 (2)
   desiredNumberScheduled: 2 (3)
1 The health of the Kepler resource. In this example, Kepler is successfully reconciled and ready.
2 The number of nodes currently running the Kepler pods is 2.
3 The wanted number of nodes to run the Kepler pods is 2.