Thursday, January 8, 2026

#1113 - Extracting Billing Costs per Integration from OIC

Introduction

Here is a simple example, from which you can extrapolate - the basis is the following Project and it's integrations - 

validateOrder is only invoked via local invoke by the integrations - processOrderSync and processOrderAsync.


ProcessLargeOrderListSync - processes a file of 80KB.

Hourly Orders Run is a scheduled job that does essentially nothing, except WAIT for 10 seconds.

Let's run these integrations - 

Now to OCI Dashboards - 

As you can see, I have 2 widgets - OIC Integration Technical Message Count by Integration and Billable Messages by Integration

The former shows the number of "technical" messages / requests OIC received, while the latter shows the resulting billable messages. Both widgets are grouped by integration.

So why are there differences between the two? Let's investigate - 

The scheduled integration - Hourly_Orders_Run executed twice. However, all this flow does is WAIT for 10 seconds. It does not contain any invokes that retrieve data. If it did, only data > 50KB is counted, from a billing perspective. Ergo, no billable messages for this integration.


The integration, ProcessLargeOrdersListSync, has run twice. However, the input file of both occasions was 82KB, this results in 2 billable messages per flow.


ProcessOrder ran 5 times and generated 5 billable messages. 

ProcessOrderAsync ran 3 times and generated 3 billable messages. 

The integration, ValidateOrder, ran 8 times, but all of these were via local invoke from ProcessOrder and ProcessOrderAsync. Ergo, these are not billed.

Behind each widget lies a query, based on OCI service metrics.

For the "Technical" messages widget - 

MessagesReceivedCount[1h]
{resourceId=$(params.oic-env)}.grouping(FlowCode).sum()

For the "Billable" messages widget - 

BilledMessageCount[1h]
{resourceId=$(params.oic-env)}.
grouping(IntegrationFlowIdentifier).sum()

This Dashboard was created in OCI Log Analytics and includes the following filters - 

So how did I add the filters? I simply duplicated one of the OOTB Integration dashboards, delivered with OCI Log Analytics -

The OOTB dashboards are those created by Oracle - 

Open the Health Overview dashboard - 

Click on the Actions dropdown and select Duplicate

Give it a name -

Open the Dashboard - 

Click Edit and delete all the existing widgets in the dashboard -


All gone! - 

Now create a new query based widget - Action - Edit

Copy and paste the "technical" query - 

Note the $(params.oic-env)} - this is the link to the OIC resource id in the filter. We need to add this parameter to this widget - 

The default Visualisation is Table, let's change this - 

Amend as follows - 

This results in -

Do the same for the "Billing" widget.

A very nice feature is the ability to export to CSV - 

Policies Required

add your OCI user to a group, e.g. OIC-OCI-LogAnalyticsGroup.

add the following policies to allow group access to OCI Log Analytics etc.

allow group OIC-OCI-LogAnalyticsGroup to read metrics in compartment yourCompartment
allow group OIC-OCI-LogAnalyticsGroup to manage log-content in compartment yourCompartment
allow group OIC-OCI-LogAnalyticsGroup to manage management-dashboard-family in compartment yourCompartment
allow group OIC-OCI-LogAnalyticsGroup to manage loganalytics-features-family in tenancy
allow group OIC-OCI-LogAnalyticsGroup to manage loganalytics-resources-family in compartment yourCompartment
allow group OIC-OCI-LogAnalyticsGroup to read compartments in compartment yourCompartment
allow group OIC-OCI-LogAnalyticsGroup to MANAGE alarms in compartment yourCompartment
allow group OIC-OCI-LogAnalyticsGroup to MANAGE ons-topic in compartment yourCompartment

















 





  
 









 

No comments: