Monday, August 21, 2023

#982 OIC3 Service Metrics

 Service Metrics provide us the following stats -

  • Received Messages
  • Successful Messages
  • Failed Messages
  • Inbound Request Processing Time
  • Outbound Request Invocation Time
  • Inbound Requests
  • Outbound Requests
  • Consumed Messages
  • Configured Messages
Now these might all seem very straightforward, but let's go through a couple of examples to ensure 100% clarity. It is also worthwhile reading the docs on this subject here -

I begin by running a test of the following - Invoke of syncIntegration1.
syncIntegration1 invokes asyncIntegration1 which writes a row to an ATP table, then invokes asyncIntegration2. This integration does essentially the same  - writes a row to an ATP table, then invokes asyncIntegration3. The 3rd async integration just writes to ATP.

I do a load test from SOAP UI, invoking the sync integration 7500 times. Let's see how this looks from a Service Metrics perspective -

Received Messages

This is the default view - 
Interval set to Auto - Statistic set to Sum

I need to drill down, in order to see how many requests were received for which integration - 

Ergo, from an OIC "engine" perspective, I have received 30k messages - which is correct.

Takeaway - Messages Received statistic includes more than the initial client request to OIC.

Successful Messages 

I view in metric explorer -

Table view - 

30k requests successfully processed.

Inbound Requests

30k Inbound Requests

Outbound Requests

Drill down in Metric Explorer - 

Note local Invokes and the ATP invokes are treated as Outbound Requests.

This gives us 45k requests -

  • syncIntegration1 - 7500
  • asyncIntegration1 - 15000

  • asyncIntegration2 - 15000
  • asyncIntegration3 - 7500
  • Outbound Request Invocation Time

    Here best to drill down and check based on collocatedics (local invokes) or atpdatabase -

    Inbound Request Processing Time

    The official description of this metric - 
    The time taken for processing inbound requests. In case of synchronous requests, it is the total time taken for processing a request and sending the response. In case of fire-and-forget inbound requests, it is the time taken to persist the request and send the acknowledgment.

    This metric captures the time elapsed (in milliseconds) by the trigger in processing the incoming request.

    So this gives us the actual execution time stats for synchronous integrations. For asynchronous - it covers just the time take to queue the request for future processing - 

    So the only stat of interest for us here is that relating to the sync integration - 

    Async integration execution times can be found in OIC Observability - 

    Consumed Messages

    The billing perspective - 

    Again drill down for the hourly table view - 

    7500 billable messages for syncIntegration1.

    Configured Messages

    5k messages per hour, i.e. 1 message pack assigned to this instance; on this throughput though, I should be considering upping this to 2 message packs.

    These Metrics can be used to populate OCI Dashboards, which can be accessed easily, when you login to your tenancy - 

    I have built one, based on the billing and configured message pack metrics - 

    However, dashboard widgets can be based on more than the Service Metrics, we have been discussing - 

    Service Metrics are under the Monitoring section.

    Logging data table allows us to view the actual OIC logs sent to OCI.

    Resource Explorer gives us a nice overview of the resources in our compartment -

    Summa Summarum

    Service Metrics/ OCI Logging / OCI Dashboards give us excellent insight into what's going on in OIC.

    Check them out!



    No comments: