Installing the Usage Metering Service

IBM Usage Metering Service gathers metrics on configuration and usage.

The metering service must be installed in the same namespace as Operational Decision Manager. It captures business value metrics to visualize metric usage in reporting tools, and sends the information to IBM Software Central. For more information, see Usage Metering Service External link opens a new window or tab.

Operational Decision Manager reports usage metrics to the metering service through a CronJob. If the service is not installed, the job fails when it runs.

By default, the feature is enabled and runs at two-hour intervals. You can change the run schedule by using the following code:
# Configure the report to run every hour instead of 2 hours
customization:
  usageMeteringService:
    enabled: true (default)
    schedule: "0 * * * *"  # Run every hour
For information about the parameters, see Production configuration parameters.

Installing the Usage Metering Service

You use the helm install to add the Usage Metering Service to your Kubernetes cluster. You can find the following metering helm charts at IBM Helm Chart repository. External link opens a new window or tab:
  • ibm-usage-metering
  • ibm-usage-metering-cluster-scoped

Follow these instructions to install the service:

  1. Add the repository:
    helm repo add ibm-helm https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm
    helm repo update
  2. Make sure that you have cluster-admin permission for Kubernetes to do the installation.
  3. Retrieve your IBM Entitlement Key:
    1. Log in to MyIBM Container Software Library External link opens a new window or tab with the IBM ID and password that are associated with the entitled software.
    2. In the Container Software and Entitlement Keys tile, verify your entitlement on the View library page, and then go to Entitlement keys to retrieve the Entitlement Key.
  4. Create a pull secret by running the kubectl create secret command:
    kubectl create secret docker-registry ibm-entitlement-key --docker-server=cp.icr.io \
        --docker-username=cp --docker-password="<ENTITLEMENT_KEY>" --docker-email=<USER_EMAIL>
    • <ENTITLEMENT_KEY> is the Entitlement Key from the previous step. Make sure you enclose the key in double quotation marks.
    • <USER_EMAIL> is the email address associated with your IBM ID.

    The cp.icr.io value for the docker-server parameter is the only registry domain name that contains the images. You must set the docker-username to cp to use an entitlement key as docker-password.

    The ibm-entitlement-key secret name is predefined to the global.imagePullSecret parameter when you run a helm install of ibm-helm/ibm-usage-metering.

  5. To install cluster-scoped resources that are needed for the metering service, run the following command:
    helm install my-ibm-usage-metering-cluster-scoped  ibm-helm/ibm-usage-metering-cluster-scoped
    This can be installed in any namespace.
  6. For the metering service, it is expected to be installed in a namespace called ibm-usage-metering by default. To install the metering service in the namespace where you install Operational Decision Manager, you must override the default values of these parameters:
    • global.operatorNamespace
    • global.instanceNamespace
    For example:
    helm install my-ibm-usage-metering ibm-helm/ibm-usage-metering --namespace <odm_namespace> --set global.operatorNamespace=<odm_namespace> --set global.instanceNamespace=<odm_namespace>
The operator and service pods should now be running. You can also find the IBMUsageMetering instance:
$ kubectl get pods
NAME                                           READY   STATUS    RESTARTS   AGE
ibm-usage-metering-instance-8495c7b965-fxxj9   1/1     Running   0          73m
ibm-usage-metering-operator-5c4b8c7d8d-nr9qn   1/1     Running   0          74m

$ kubectl get IBMUsageMetering
NAME                          AGE
ibm-usage-metering-instance   78m
Use this command to check the version of the metering service that is installed for all the namespaces:
helm list --all-namespaces -o json | jq '.[] | select(.name | contains("usage-metering")) | {name: .name, chart: .chart, app_version: .app_version, namespace: .namespace}'

{
  "name": "my-ibm-usage-metering1",
  "chart": "ibm-usage-metering-1.0.4+20260210.110820.0",
  "app_version": "1.0.4",
  "namespace": "odm"
}
{
  "name": "my-ibm-usage-metering2",
  "chart": "ibm-usage-metering-1.0.4+20260210.110820.0",
  "app_version": "1.0.4",
  "namespace": "odm2"
}
{
  "name": "my-ibm-usage-metering-cluster-scoped",
  "chart": "ibm-usage-metering-cluster-scoped-1.0.4+20260210.110820.0",
  "app_version": "1.0.4",
  "namespace": "odm"
}

Post installation

After installing Usage Metering Service, choose one of the following configuration modes based on your environment:
  1. Online (recommended): Automatic data transmission to IBM Software Central
  2. Offline (air-gapped environments): Uploading usage metrics to IBM Software Central