Search for existing answers to your product and support questions.
Familiarize yourself with our support site and learn best practices in working with our team.
Manage Service Requests, View and update service requests submitted by you and others in your organization.
Submit a new issue to our technical support team.
Oracle B2C Service insights from our Technical Support team subject matter experts
Browse resources to assist you in launching your implementation and ensure a successful go-live.
Access your OCI account.
Find product documentation for supported versions of B2C and documentation libraries for related service solutions.
You will have the tools to improve your customers' experience when you learn about all the things our products can do.
Find links for API documentation, Custom Processes, Customer Portal, and Agent Browser UI Extensibility Framework.
Explore how accelerators are designed to demonstrate how an integration scenario could be built using the public integration and extension capabilities of the Oracle B2C Service.
Prepare for a successful transition by reviewing upcoming release changes and enhancements.
Explore webinars, events, and feature kits to learn about B2C Service features, functionality, and best practices from the technical experts.
Oracle MyLearn offers a portfolio of free and paid subscription-based learning resources to help you gain valuable skills, accelerate cloud adoption, increase productivity, and transform your business.
Empower your team with the skills to implement, configure, manage, and use your applications with Customer Experience Cloud Training.
Our goal is to facilitate a friendly, supportive environment where members can easily collaborate with each other on solutions and best practices.
Ask and answer questions specific to B2C.
This is an exciting resource intended to help with your Oracle Service Cloud Analytics.
Share product improvement ideas and enhancement requests with Oracle Development, while collaborating with other Oracle customers and partners.
Update your phone number, email notification preferences, and severity 1 and severity 2 contact preferences.
View the contact managers within your organization.
Find contact information of the Technical Account Manager (TAM) and Client Success Manager (CSM) for your organization.
Environment:
Oracle B2C Service
Resolution:
REST APIs are now available so your organization can monitor the overall health of the Oracle B2C Service application. The Service Health Metrics REST APIs fetch the current health status for various services and features available within the Oracle B2C Service application.
In addition to the REST APIs, we offer an operational dashboard that presents data which is useful for monitoring the B2C Service solution. For more information about the operational dashboard, please visit Answer ID 12997: Service Health Metrics: Operational Dashboard in Browser UIAnswer ID 12997: Service Health Metrics: Operational Dashboard in Browser UI.
You can use Oracle REST APIs to monitor the health of your Oracle B2C Service Site. This answer provides:
This document describes features available to users under Oracle B2C Service, Oracle Service Cloud, and Oracle RightNow Service Cloud licensing agreements.
Additionally, we have a helpful blog here: Monitoring Your Oracle B2C Service Health: Introducing Service Health Metrics
Review the basics. If you're new to REST APIs, make sure you understand the basics of REST and JSON, and scan our list of important terms.
Choose a REST client. REST APIs connect software programs over the HTTP protocol. You need a software client to send the HTTP requests. In our examples, we use Postman, however, Postman isn't the only tool you can use. To help you choose one, see Work with your REST Client.
Validate Access. The one-time setup/enablement of Service Health Metrics needs to be done via Configuration Assistant. Hence, this task needs to be performed by site administrators who have access to Configuration Assistant.
To make a REST HTTP request, you need to gather a few bits of information:
The first step is to enable the Service Health Metrics integration within Configuration Assistant. If this is your first time accessing the Configuration Assistant, more information can be found here in Answer ID 12490: Accessing Configuration Assistant
Generate a private key
openssl genpkey -out rsakey.pem -algorithm RSA -pkeyopt rsa_keygen_bits:2048
Extract the public key from the private key
openssl pkey -in rsakey.pem -pubout -out rsapubkey.pem
The actions above create the appropriate JWK for the site against which the JWT is validated.
To orchestrate a GET API on Service Health Metrics, you need a JSON Web Token (JWT) for authentication, and you must specify this JWT as a Bearer Authorization header in your request to GET API.
You can manually generate or programmatically generate the JWT:
To manually generate the JWT token, use the following template:
Make sure that if you are copying and pasting the above, you update the 'exp' timestamp (it is now in the past and will have expired)
With the above template, the required JWT token can be generated using RS256 algorithm:
base64UrlEncode(header)+ "." + base64UrlEncode(payload) + "." + RSASHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), privateCertificate)
There are both offline and online utilities available for the JWT token generation (e.g., https://jwt.io/).
You can also generate a JWT token programmatically. To accomplish this, generate a JWK for the private key and then use the JWK to generate the JWT.
Install rasha (npm install -g rasha)
Use the private key to generate the private JWK (rasha rsakey.pem | jq -r '. + {"kid":"my_monitored_site", "use":"sig"}')
Create a JWK file named TestKeys.jwk and paste the content as seen here:
{ "keys": [ { "kty": "RSA","n": "pX3yLP7UcXXqOvLBKHgeinFy_sdknt_BynrEJCYiyOh7ToT1aJsxykHFExj0QA0Ok_z2WfM1ULbemknBR7_aoRVksLceySTqHRfbH5LujWkMunEbVm-z1opHf-7tNI9fs9l4Kop82ttrd5rMcKrNs5hoOUyW2o91F_kSHZFaVD2LxMzIEXmt8vlmjEspfBNBGElkb4H3xRWMU7e5QFXyPVK1ZROgKtIuuTB_cDI0ByN8QmU0rEQjqN0wDRwOXTCT_KxYFqEYlnEuWgODMzRJb9r2hfiM664PzRBr5gMG2gWTRngprHv8gFe77XE73lMPvvOgdstKCmurI0aefwzO5Q", "e": "AQAB", "d":"O8Sp0zBRn4ybhKCpvCjttshUZMm0gGCFh9AgyIFxbKfx6KDCVP4_1DE-sLABfqR4kF_6xO--YKE68fQTNwuGNUkZrWzlVHXdi5ZTECsrtqyq6SbyXZxIEgKs4fpzdtkVEkpHSO3tO8mlHXQtw78cPXGcqp0LmnHXM0pEDaOyQNvIuUZi41w5DoDR8WdlVDROM3l1HD1yNF_LM_FH5pUqntIA9itHTnZbiD0i4TCIJMfGh_yHxnNHdqR0i-1rQSz4KO86ucOxZiHCvu3UbjktrLJQIFN-sTskAuMGlKvQvgBbi0slRzRyZoGl-ylao_DeavrWw12v1Nxz2gpie1Pv3Q", "p":"1YjV4yO25S4AjYpX4yI5F2mn-8rA3E0hG1zUM_VO_ZxYKkU-MuM1g1XtG4eYaiLoNYHDuxBuA8sbO71sIl6NIB4H8JVhRS67OJPLlftsqTyOeqvQdPJYN-5fY2-G3113vHBxHF7fZ6c3E8q9vmIKPDstj9-tWz07syVpjEv6zLc", "q": "xmc8xgqdx13HjhsEii5w_v6S89X4nsORgKk5z6SBfy4INMpdR4kHoJkQlkZAJ3pCRVaR7KgwAUeoBthxZ4QSLncseKBcqLeHqKZhmJ2oiswVWLnrMIHaxy5GKB_CY0dI9UPHeGXUznFnNsmj0fb8D_dRBMQxRPcgzBW4ggcLnUM", "dp":"aV1VvPiYfMmQOEc1SrxOU4EtBI9tTsc4ONo7U1AOJBILZwA3ysBWXXH-x4DG8kg7MHvRavKWdoS38WhsfSEOnfRzkoEDODHw69_xqxYe7fsViu5QtAQJB8A1jUkw0fK67F7HUWp27hySjs-RhOm3hzTkLIQAdG7okGM7i6DKJk0", "dq": "kZHruE7PxxiaszxFj3FVvPJiNf_3o91QI7uGTECiNwM6SCl2WWdELmRAFFJE_fIpL6C9_orEdhvyP9uNEWuIv4j3GyZl9fB625YAI68Bm5zzyJ7Y3kVYlS3xkb0Drj3-XN43O7JTeokgNsWpqgNym_BVBI9Cqxw7dyI0t0qeDes", "qi": "GNAz09Nlp6MNcbeOg4EPGuQpnXSJ3dgbuRyxRQYfKrUhgj4BD_G9lRiy1SnqbIyGqHssjeiG-fzBralh0k6H8EMuwQrrZb7ZWFWr-Yehh6BT_qqb1jCKPVIFF3Ic49vl5DkniFuMu0vweTq1xTdzSpCVwCXl02E64CV-ZjnXFLw", "kid": "my_monitored_site", "use": "sig" } ]}
Sample java code is provided to help you create a JWT token for the given TestKeys.jwk file:
package com.oracle.cx.health.utils;
import io.helidon.common.configurable.Resource;
import io.helidon.security.jwt.Jwt;
import io.helidon.security.jwt.SignedJwt;
import io.helidon.security.jwt.jwk.JwkKeys;
import java.io.InputStream;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
public class JwtUtils {
private static InputStream in = JwtUtils.class.getClassLoader().getResourceAsStream("TestKeys.jwk");
private static JwkKeys jwtKeys = JwkKeys.builder().resource(Resource.create("TestKeys", in)).build();
private static final String KEY_ID = "osvc-dev";
private static final String SUBJECT = "health-service";
private static final Instant EXP = Instant.now().plus(1, ChronoUnit.DAYS);
private static final String ISSUER = "customer1";
private static final String JWT_ID = "[B@33c7353a";
private static final String ALGO = "RS256";
public static final String SITE = "testSite";
private static final String AUD = "health-monitor";
public static String generateJwtTokenForGivenSite(String siteName) {
Jwt = Jwt.builder()
.keyId(siteName)
.addAudience(AUD)
.subject(SUBJECT)
.expirationTime(EXP)
.issueTime(Instant.now())
.issuer(ISSUER)
.jwtId(JWT_ID)
.algorithm(ALGO)
.addPayloadClaim("site",siteName)
.addPayloadClaim("name", "Customer1")
.build();
SignedJwt signedJwt = SignedJwt.sign(jwt, jwtKeys);
String token = "Bearer " + signedJwt.tokenContent();
return token;
}
public static void main(String[] args) {
System.out.println(generateJwtTokenForGivenSite(SITE));
In order to make a REST HTTP request, gather the following information:
Step 5.1: Fetch Your B2C Site Health Data - For Chat services
The REST API retrieves data for the Chat Service, including Chat sub-services and their subServicesL2 (up to the second level).
In order to make REST HTTP request, gather the following information:
REST Server URL. Service Health metrics for all sites are accessible at https://monitoring.custhelp.com/v1/sitemetrics/chat
JWT Token. A JWT bearer token is required to use these REST APIs. The publish key created within the Configuration Assistant and is described above in Step 2. A JWT is also required and the steps to create the JWT are provided above in Step 3.
A <resource-path> is the relative path or endpoint for Service Health Metrics. For e.g., /v1/sitemetrics/chat is to be used for Service Health Metrics.
Using the REST Server URL appended with resource path and specifying JWT token as Bearer Token in Authorization header you should be able to query the B2C site health data. Refer to the snapshot below:
Now that your site is configured and authorized for Service Health Metrics, you can begin to review the data provided by the REST APIs. Below is sample response and an explanation of the sub-components:
{ "serviceMetrics": [ {"widgetserver": { "totalRequests": 744, "averageLatency": 3, "totalPercentage": 2.12, "successRequests": { "totalRequests": 744, "averageLatency": 3, "totalPercentage": 100, "metricData": [ {"200": { "totalRequests": 724, "averageLatency": 3, "totalPercentage": 97.31 }}, {"404": { "totalRequests": 20, "averageLatency": 10, "totalPercentage": 2.69 }} ] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0, "metricData": [] }, "subServices": [ {"customer_portal": { "totalRequests": 724, "averageLatency": 3, "totalPercentage": 97.31, "successRequests": { "totalRequests": 724, "averageLatency": 3, "totalPercentage": 100, "metricData": [{"200": { "totalRequests": 724, "averageLatency": 3, "totalPercentage": 100 }}] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0, "metricData": [] } }}, {"other": { "totalRequests": 20, "averageLatency": 10, "totalPercentage": 2.69, "successRequests": { "totalRequests": 20, "averageLatency": 10, "totalPercentage": 100, "metricData": [{"404": { "totalRequests": 20, "averageLatency": 10, "totalPercentage": 100 }}] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0, "metricData": [] } }} ] }}, {"chat": { "totalRequests": 781, "averageLatency": 1335, "totalPercentage": 2.23, "successRequests": { "totalRequests": 781, "averageLatency": 1335, "totalPercentage": 100, "metricData": [{"200": { "totalRequests": 781, "averageLatency": 1335, "totalPercentage": 100 }}] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0, "metricData": [] }, "subServices": [ {"Chat_REST": { "totalRequests": 242, "averageLatency": 124, "totalPercentage": 30.99, "successRequests": { "totalRequests": 242, "averageLatency": 124, "totalPercentage": 100, "metricData": [{"200": { "totalRequests": 242, "averageLatency": 124, "totalPercentage": 100 }}] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0, "metricData": [] } }}, {"Chat_SOAP": { "totalRequests": 539, "averageLatency": 1879, "totalPercentage": 69.01, "successRequests": { "totalRequests": 539, "averageLatency": 1879, "totalPercentage": 100, "metricData": [{"200": { "totalRequests": 539, "averageLatency": 1879, "totalPercentage": 100 }}] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0, "metricData": [] } }} ] }}, {"Browser_UI": { "totalRequests": 24400, "averageLatency": 58, "totalPercentage": 69.63, "successRequests": { "totalRequests": 24400, "averageLatency": 58, "totalPercentage": 100, "metricData": [ {"200": { "totalRequests": 22080, "averageLatency": 51, "totalPercentage": 90.49 }}, {"204": { "totalRequests": 1338, "averageLatency": 47, "totalPercentage": 5.48 }}, {"302": { "totalRequests": 982, "averageLatency": 236, "totalPercentage": 4.02 }} ] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0, "metricData": [] }, "subServices": [{"other": { "totalRequests": 24400, "averageLatency": 58, "totalPercentage": 100, "successRequests": { "totalRequests": 24400, "averageLatency": 58, "totalPercentage": 100, "metricData": [ {"200": { "totalRequests": 22080, "averageLatency": 51, "totalPercentage": 90.49 }}, {"204": { "totalRequests": 1338, "averageLatency": 47, "totalPercentage": 5.48 }}, {"302": { "totalRequests": 982, "averageLatency": 236, "totalPercentage": 4.02 }} ] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0, "metricData": [] } }}] }}, {"webserver": { "totalRequests": 9116, "averageLatency": 98, "totalPercentage": 26.02, "successRequests": { "totalRequests": 9116, "averageLatency": 98, "totalPercentage": 100, "metricData": [ {"200": { "totalRequests": 8149, "averageLatency": 90, "totalPercentage": 89.39 }}, {"302": { "totalRequests": 242, "averageLatency": 297, "totalPercentage": 2.65 }}, {"404": { "totalRequests": 241, "averageLatency": 39, "totalPercentage": 2.64 }}, {"201": { "totalRequests": 240, "averageLatency": 275, "totalPercentage": 2.63 }}, {"401": { "totalRequests": 121, "averageLatency": 125, "totalPercentage": 1.33 }}, {"206": { "totalRequests": 121, "averageLatency": 5, "totalPercentage": 1.33 }}, {"304": { "totalRequests": 2, "averageLatency": 5, "totalPercentage": 0.02 }} ] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0, "metricData": [] }, "subServices": [ {"connectRest": { "totalRequests": 721, "averageLatency": 197, "totalPercentage": 7.91, "successRequests": { "totalRequests": 721, "averageLatency": 197, "totalPercentage": 100, "metricData": [ {"200": { "totalRequests": 361, "averageLatency": 170, "totalPercentage": 50.07 }}, {"201": { "totalRequests": 240, "averageLatency": 275, "totalPercentage": 33.29 }}, {"401": { "totalRequests": 120, "averageLatency": 125, "totalPercentage": 16.64 }} ] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0, "metricData": [] } }}, {"other": { "totalRequests": 7891, "averageLatency": 73, "totalPercentage": 86.56, "successRequests": { "totalRequests": 7891, "averageLatency": 73, "totalPercentage": 100, "metricData": [ {"200": { "totalRequests": 7285, "averageLatency": 68, "totalPercentage": 92.32 }}, {"302": { "totalRequests": 242, "averageLatency": 297, "totalPercentage": 3.07 }}, {"404": { "totalRequests": 241, "averageLatency": 39, "totalPercentage": 3.05 }}, {"206": { "totalRequests": 121, "averageLatency": 5, "totalPercentage": 1.53 }}, {"304": { "totalRequests": 2, "averageLatency": 5, "totalPercentage": 0.03 }} ] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0, "metricData": [] } }}, {"customer_portal": { "totalRequests": 483, "averageLatency": 346, "totalPercentage": 5.3, "successRequests": { "totalRequests": 483, "averageLatency": 346, "totalPercentage": 100, "metricData": [{"200": { "totalRequests": 483, "averageLatency": 346, "totalPercentage": 100 }}] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0, "metricData": [] } }}, {"agent_console": { "totalRequests": 21, "averageLatency": 244, "totalPercentage": 0.23, "successRequests": { "totalRequests": 21, "averageLatency": 244, "totalPercentage": 100, "metricData": [ {"200": { "totalRequests": 20, "averageLatency": 249, "totalPercentage": 95.24 }}, {"401": { "totalRequests": 1, "averageLatency": 150, "totalPercentage": 4.76 }} ] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0, "metricData": [] } }} ] }} ], "siteMetrics": { "totalRequests": 35041, "averageLatency": 96, "successPercentage": 100 }, "siteName": "1000eyes_ph", "updatedTime": "2025-06-03T04:47:00Z", "timeInterval": 120}
The above JSON response has various attributes defined. The next table describes the exposed attributes:
Sr. No.
Element
Description
1
siteName
The name of the site for which the metrics are retrieved.
2
updatedTime
The last update time for which the events are received
3
timeInterval
The duration for which the metrics are displayed. For more information, refer to the "timeInterval Details & Sample Use Cases" section below.
4
siteMetrics->totalRequests
Total number of requests received for this site
5
siteMetrics->successPercentage
Percentage of totalRequests which were success. Here success is any request which received a status not in 5xx bucket.
6
serviceMetrics
The array containing individual service metrics. We have two services currently Browser_UI and webserver.
7
serviceMetrics->Browser_UI
The metrics for Browser_UI component.
8
serviceMetrics->webserver
The metrics for webserver component
9
serviceMetrics->Browser_UI->totalRequests
Total requests received by Browser_UI component.
10
serviceMetrics->Browser_UI->totalPercentage
Percentage of requests received for Browser_UI from the totalRequests for the site.
11
serviceMetrics->Browser_UI->successRequests
Successful requests metrics from the total requests received by Browser_UI. Here successful requests are with HTTP status 2xx, 3xx and 4xx requests.
12
serviceMetrics->Browser_UI->successRequests->metricData
The metric data for successful requests. Here metricData includes the HTTP Status and the count of totalRequests and its percentage (totalPercentage) in the total successful requests.
13
serviceMetrics->Browser_UI->errorRequests
Error requests metrics from the total requests received for Browser_UI. Here error requests are with HTTP status 5xx
14
serviceMetrics->Browser_UI->subServices
SubServices metrics for subServices of Browser_UI. Currently we do not have any subservice for Browser_UI Service.
15
serviceMetrics->webserver->totalRequests
Total requests received by webserver component.
16
serviceMetrics->webserver-> totalPercentage
Percentage of requests received for webserver from the totalRequests for the site.
17
serviceMetrics->webserver->successRequests
Successful requests metrics from the total requests received by webserver. Here successful requests are with HTTP status 2xx, 3xx and 4xx requests.
18
serviceMetrics->webserver->successRequests->metricData
19
serviceMetrics->webserver->errorRequests
Error requests metrics from the total requests received for webserver. Here error requests are with HTTP status 5xx
20
serviceMetrics->webserver->subServices
Metrics for subServices of the webserver. Currently sub-services for the webserver are connectREST, connect_ws_soap, kf_soap, chat_soap, custom_php, customer_portal and agent_console. The sub-services further expose success and error metrics for the specific sub-service.
Step 6.1: Understanding the REST API response – For chat services Now that your site is configured and authorized for Service Health Metrics, you can begin to review the data provided by the REST APIs for chat. In the sample response below, the following is true:
{ "serviceMetrics": [ { "chat": { "totalRequests": 350, "averageLatency": 1500, "totalPercentage": 100.0, "successRequests": { "totalRequests": 200, "averageLatency": 1500, "totalPercentage": 57.14, "metricData": [ { "200": { "totalRequests": 200, "averageLatency": 1500, "totalPercentage": 57.14 } } ] }, "errorRequests": { "totalRequests": 150, "averageLatency": 1500, "totalPercentage": 42.86, "metricData": [ { "500": { "totalRequests": 120, "averageLatency": 1500, "totalPercentage": 34.29 } }, { "501": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 5.71 } }, { "503": { "totalRequests": 10, "averageLatency": 1500, "totalPercentage": 2.86 } } ] }, "subServices": [ { "Chat_REST": { "totalRequests": 220, "averageLatency": 1500, "totalPercentage": 62.86, "successRequests": { "totalRequests": 130, "averageLatency": 1500, "totalPercentage": 59.09, "metricData": [ { "200": { "totalRequests": 130, "averageLatency": 1500, "totalPercentage": 59.09 } } ] }, "errorRequests": { "totalRequests": 90, "averageLatency": 1500, "totalPercentage": 40.91, "metricData": [ { "500": { "totalRequests": 60, "averageLatency": 1500, "totalPercentage": 27.27 } }, { "501": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 9.09 } }, { "503": { "totalRequests": 10, "averageLatency": 1500, "totalPercentage": 4.55 } } ] }, "subServicesL2": [ { "agent": { "totalRequests": 30, "averageLatency": 50, "totalPercentage": 8.57, "successRequests": { "totalRequests": 30, "averageLatency": 1500, "totalPercentage": 100.0, "metricData": [ { "200": { "totalRequests": 30, "averageLatency": 1500, "totalPercentage": 100.0 } } ] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0.0, "metricData": [] } } }, { "agent_fetch_message": { "totalRequests": 40, "averageLatency": 38, "totalPercentage": 11.43, "successRequests": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 50.0, "metricData": [ { "200": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 50.0 } } ] }, "errorRequests": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 50.0, "metricData": [ { "500": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 50.0 } } ] } } }, { "consumer": { "totalRequests": 40, "averageLatency": 38, "totalPercentage": 11.43, "successRequests": { "totalRequests": 30, "averageLatency": 1500, "totalPercentage": 75.0, "metricData": [ { "200": { "totalRequests": 30, "averageLatency": 1500, "totalPercentage": 75.0 } } ] }, "errorRequests": { "totalRequests": 10, "averageLatency": 1500, "totalPercentage": 25.0, "metricData": [ { "500": { "totalRequests": 10, "averageLatency": 1500, "totalPercentage": 25.0 } } ] } } }, { "consumer_fetch_message": { "totalRequests": 20, "averageLatency": 75, "totalPercentage": 5.71, "successRequests": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 100.0, "metricData": [ { "200": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 100.0 } } ] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0.0, "metricData": [] } } }, { "third_party": { "totalRequests": 10, "averageLatency": 150, "totalPercentage": 2.86, "successRequests": { "totalRequests": 10, "averageLatency": 1500, "totalPercentage": 100.0, "metricData": [ { "200": { "totalRequests": 10, "averageLatency": 1500, "totalPercentage": 100.0 } } ] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0.0, "metricData": [] } } ] } } }, { "third_party_fetch_message": { "totalRequests": 20, "averageLatency": 75, "totalPercentage": 5.71, "successRequests": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 100.0, "metricData": [ { "200": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 100.0 } } ] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0.0, "metricData": [] } } }, { "universal_queue": { "totalRequests": 70, "averageLatency": 21, "totalPercentage": 20.0, "successRequests": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 28.57, "metricData": [ { "200": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 28.57 } } ] }, "errorRequests": { "totalRequests": 50, "averageLatency": 1500, "totalPercentage": 71.43, "metricData": [ { "500": { "totalRequests": 30, "averageLatency": 1500, "totalPercentage": 42.86 } }, { "501": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 28.57 } } ] } } }, { "universal_queue_fetch_message": { "totalRequests": 70, "averageLatency": 21, "totalPercentage": 20.0, "successRequests": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 28.57, "metricData": [ { "200": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 28.57 } } ] }, "errorRequests": { "totalRequests": 50, "averageLatency": 1500, "totalPercentage": 71.43, "metricData": [ { "500": { "totalRequests": 30, "averageLatency": 1500, "totalPercentage": 42.86 } }, { "501": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 28.57 } } ] } } } ] } }, { "Chat_SOAP": { "totalRequests": 130, "averageLatency": 1500, "totalPercentage": 37.14, "successRequests": { "totalRequests": 70, "averageLatency": 1500, "totalPercentage": 53.85, "metricData": [ { "200": { "totalRequests": 70, "averageLatency": 1500, "totalPercentage": 53.85 } } ] }, "errorRequests": { "totalRequests": 60, "averageLatency": 1500, "totalPercentage": 46.15, "metricData": [ { "500": { "totalRequests": 60, "averageLatency": 1500, "totalPercentage": 46.15 } } ] }, "subServicesL2": [ { "universal_queue": { "totalRequests": 60, "averageLatency": 25, "totalPercentage": 17.14, "successRequests": { "totalRequests": 30, "averageLatency": 1500, "totalPercentage": 50.0, "metricData": [ { "200": { "totalRequests": 30, "averageLatency": 1500, "totalPercentage": 50.0 } } ] }, "errorRequests": { "totalRequests": 30, "averageLatency": 1500, "totalPercentage": 50.0, "metricData": [ { "500": { "totalRequests": 30, "averageLatency": 1500, "totalPercentage": 50.0 } } ] } } }, { "consumer": { "totalRequests": 30, "averageLatency": 50, "totalPercentage": 8.57, "successRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0.0, "metricData": [] }, "errorRequests": { "totalRequests": 30, "averageLatency": 1500, "totalPercentage": 100.0, "metricData": [ { "500": { "totalRequests": 30, "averageLatency": 1500, "totalPercentage": 100.0 } } ] } } }, { "legacy": { "totalRequests": 40, "averageLatency": 38, "totalPercentage": 11.43, "successRequests": { "totalRequests": 40, "averageLatency": 1500, "totalPercentage": 100.0, "metricData": [ { "200": { "totalRequests": 40, "averageLatency": 1500, "totalPercentage": 100.0 } } ] }, "errorRequests": { "totalRequests": 0, "averageLatency": 0, "totalPercentage": 0.0, "metricData": [] } } } ] } } ] } } ], "siteMetrics": { "totalRequests": 350, "averageLatency": 1500, "successPercentage": 57.14 }, "siteName": "testSiteChat81", "updatedTime": "2024-10-21T08:01:00Z", "timeInterval": 120}
Step 8.0: Understanding the ERROR METRICS REST API response
Now that your site is configured and authorized for Service Health Metrics, you can also review the data provided by the ERROR METRICS REST APIs. Error metrics can be retrieved for the 4XX & 5XX status groups:
Below are sample responses and an explanation of the sub-components:
Sample Use Case 1: For https://monitoring.custhelp.com/v1/errormetrics/4XX
{ "errorMetrics": { "totalRequests": 37, "averageLatency": 1500, "topRequests": [ { "401": { "totalRequests": 17, "averageLatency": 1500, "totalPercentage": 45.95, "Urls": [ { "url": "/services/soap/connect/soap", "count": 6 }, { "url": "/AgentWeb/api/contextmanager/v.32404290001/externalObjectServiceContext/reportData", "count": 5 }, { "url": "/services/different/connect/soap", "count": 4 }, { "url": "/AgentWeb/api/different/v.32404290001/externalObjectServiceContext/reportData", "count": 2 } ] } }, { "404": { "totalRequests": 20, "averageLatency": 1500, "totalPercentage": 54.05, "Urls": [ { "url": "/AgentWeb/api/different/v.32404290001/externalObjectServiceContext/reportData", "count": 6 }, { "url": "/services/soap/connect/soap", "count": 5 }, { "url": "/AgentWeb/api/contextmanager/v.32404290001/externalObjectServiceContext/reportData", "count": 5 }, { "url": "/services/different/connect/soap", "count": 4 } ] } } ], "subComponents": [ { "Browser_UI": { "totalRequests": 18, "averageLatency": 1500, "totalPercentage": 48.65 } }, { "webserver": { "totalRequests": 19, "averageLatency": 1500, "totalPercentage": 51.35 } } ] }, "serviceName": "ALL", "siteName": "siteMetrics3", "updatedTime": "2024-09-12T03:47:00Z", "timeInterval": 120}
Sample Use Case 2: For https://monitoring.custhelp.com/v1/errormetrics/4XX/webserver
{"errorMetrics": { "totalRequests": 29, "averageLatency": 1500, "topRequests": [ { "401": { "totalRequests": 10, "averageLatency": 1500, "totalPercentage": 52.63, "Urls": [ { "url": "/services/soap/connect/soap", "count": 6 }, { "url": "/services/different/connect/soap", "count": 4 } ] } }, { "404": { "totalRequests": 9, "averageLatency": 1500, "totalPercentage": 47.37, "Urls": [ { "url": "/services/soap/connect/soap", "count": 5 }, { "url": "/services/different/connect/soap", "count": 4 }, { "url": "/RightNow.Installer.application", "count": 10 } ] } } ], "subComponents": [ { "other": { "totalRequests": 8, "averageLatency": 1500, "totalPercentage": 42.11 } }, { "connect_ws_soap": { "totalRequests": 11, "averageLatency": 1500, "totalPercentage": 57.89 } }, { "agent_console": { "totalRequests": 10, "averageLatency": 1500, "totalPercentage": 57.89 } } ]},"serviceName": "webserver","siteName": "siteMetrics3","updatedTime": "2024-09-12T03:47:00Z","timeInterval": 120}
The above JSON responses have various attributes defined. The next table describes the exposed attributes:
Additional information about the Service Health Metrics Endpoint