billing probe generates empty billing calculation reports

Document ID : KB000006146
Last Modified Date : 14/02/2018
Show Technical Document Details

Billing probe generates empty reports.

- During testing, running a billing calculation report produced only empty reports (no data) of about 5KB in size each time. In the past we could see that a few full reports were completed and contained data in the probe folder.






- Automatic scan did not generate any data. Just an html report with NO data in it.
- After configuring and running a manual scan using usage_metering, we collected lots of data



- Customer can also choose to deploy/re-deploy the usage_metering probe on any secondary/remote hubs to gather metering info
- Note that the usage_metering probe schedule must be ENABLED. Usage metering schedule was deactivated/disabled/greyed out in this case.
- "Run Scan now" in usage metering works but when the billing calculation report was run it was empty.



- Note that the Automatic 'schedule' can be temporarily set to 'hourly' so the customer can check to make sure they can generate a new billing report (aka calculation report) when its finished.


***As of billing v8.0 and higher it is no longer necessary to configure the Offline Subscription File section***




The latest subscription versions are now bundled with the billing probe. The subscription files are automatically imported and configured for the billing probe on startup, removing the need to configure separate offline subscription files.

billing.log only shows this particular error:

Jan 26 16:34:19:585 INFO [Thread-24, com.nimsoft.billing.calculation.device.DeviceUsageDataCalculator] Billing calculation report and persistence complete for: subscription UIM Billing Probe Import Subscription New Packs / offline', calculation_id '10', from '01/01/2017 00:00:00' to '01/31/2017 23:59:59'
Jan 26 16:34:19:586 DEBUG [Thread-24, com.nimsoft.billing.calculation.device.DeviceUsageDataCalculator] JVM Memory Status: maxMemory for vm: 3641 MB, totalMemory in vm (currentMemoryAmt): 1963 MB, freeMemory in vm: 1603 MB
Jan 26 16:34:19:757 WARN [Finalizer, com.nimsoft.nimbus.NimSessionBase] Attempting to close session during finalize(); this may leave sockets in TIME_WAIT. Please ensure that resources are closed properly. Stack when this session was created:
java.lang.Thread.getStackTrace(Unknown Source)

...then a bit more, then it says the report completed (but it was still empty)

Jan 26 16:34:19:792 INFO [Thread-24, com.nimsoft.billing.calculation.BillingCalculationDelegate] Billing calculation and persistence completed.



In this case and in other cases, you may see that the usage_metering probe has no particular exceptions/errors in it even after restarting it.

For troubleshooting purposes to be complete, you also need to examine the billing.log and _billing.log but note the steps below to test it.

1. In the billing probe, enter month and press Run.
2. The billing probe extracts data from the h2.db. It then writes an intermediate xml file.
3. billing probe GUI displays report available.
4. billing probe converts xml into html. This takes a while for LARGE environments.
5. While html is still being generated, do NOT try to export the latest calculation.

This can fail because the html is not ready. Simply waiting a few minutes longer, this may succeed. The billing GUI out of the box should not present a report for exporting that is not available yet, but it does so be aware of this fact.

- usage_metering v8.0- billing probe v8.20 (or 8.0)- UIM 8.4- Primary hub running on RHEL Linux

- Java memory needed to be increased, e.g., set both billing and usage_metering probes to min of 2048 and max of 4096 respectively.

- usage_metering probe schedule must be enabled. Usage metering schedule was deactivated/disabled/greyed out in this case.

- Ignore the "Configure offline subscription" section in the billing probe.


1. Redeployed usage_metering and billing probes
2. Increased java memory on the billing and usage_metering probes to 2048 and 4096 respectively, then cold started both(Deactivate-Activate)3. Enabled usage_metering 'schedule' (it had been previously disabled in the GUI)
Note that the usage_metering log will not show any evidence of the schedule being disabled.
4. Ran a scan manually to determine if data is being collected via usage_metering.
You can "Run Scan Now" in the usage_metering and the report should be full of information! If not then check the usage_metering log when the loglevel has been set to 5, and logsize is set to 30000.
5. If successful, then recheck all the settings but ignore the 'configure offline subscription' settings which are no longer necessary.
6. Then in the billing probe GUI configure and run a billing calculation and wait a few minutes till it refreshes then export and view it. You should see the data in the html report, small example shown below:



Additional Information:

*Note also that you have to deploy the webgtw probe to be able to send/distribute the report automatically but a customer may choose not to do so. As a result of not deploying and configuring the webgtw probe, you may see errors in the usage_metering log concerning the webgtw but if the customer has chosen not to use it to automatically send reports you can ignore them as they do not affect the billing report calculations:

Jan 26 17:28:03:771 WARN  [Thread-18, com.nimsoft.billing.calculation.device.DeviceUsageDataCalculator] (4) not found, Received status (4) on response (for sendRcv) for cmd = 'nametoip' name = '/ABC_UIM/ABC_HUB_PRIM/poxxxxxxxxxx/webgtw'

               at com.nimsoft.nimbus.NimSessionBase.sendRcv(

               at com.nimsoft.nimbus.NimSessionBase.getHostAndPortForName(

               at com.nimsoft.nimbus.NimNamedClientSession.<init>(

               at com.nimsoft.nimbus.NimObjectSender.connectNamed(

               at com.nimsoft.nimbus.NimRequest.sendImpersonate(

               at com.nimsoft.nimbus.NimRequest.send(

               at com.nimsoft.install.nimcommon.pds.PDSController.sendPDSWithAddr(

               at com.nimsoft.install.nimcommon.pds.PDSController.sendWithAddr(

               at com.nimsoft.webgtw.common.probe.impl.WebgtwProbeClientImpl.getInfo(