SAP Commerce Cloud comes with some access restriction when we want to perform deep dive debugging at the node level. Indeed, unlike OnPrem installations, it is not possible to access the operation system directly where service is running.

This article shows you how to perform analysis on a specific node/pod through Hybris Administration Console (HAC) access.

Pod selection

SAP Commerce Cloud runs on Kubernetes (k8s) where pod (scheduling unit) is created dynamically at each new deployment and with up scaling/down scaling.

A pod is a Linux OS container where Commerce node is running. When we want to know what’s going on with a specific Commerce node, it is necessary to identify the pod id.

From SAP Cloud Portal

You can get POD list from SAP Cloud Portal by following this path: Environments > Env > Services > Service > Replicas.

See below an example for the BackOffice Service

 

From Dynatrace

It is also possible to get pod list from the Dynatrace monitoring tool by following this path: Infra Observability > Tech and Processes > Apache Tomcat > tomcat <service>-*

See in below an example for the BackOffice Service

 

Cookie routing

KBA related : https://me.sap.com/notes/3251529/E

When we find the right pod identification we want to inspect, we can influence the routing system by forcing pod id value.

At the first page loading, the SAP Commerce Cloud routing system sets up a cookie named ROUTE to assign the user session to a specific pod. We can see the cookie value by using browser developer tool.

See in below an example for the BackOffice Service

If we want to be routed on a different pod, we just need to replace this value the pod id wished.

Node Debugging

Once we’re logged into the right Commerce node, we can use HAC tooling to debug/inspect this node:

    • Node CPU / RAM usage : hac/

 

    • Node ThreadDump : hac/monitoring/threaddump

 

    • Node Cache: hac/monitoring/cache

 

    • Node Configuration : hac/platform/config

 

Pod Debugging

It is also possible to debug/inspect POD itself by using some Groovy script from HAC.

See in below some Groovy script examples that could help

List files into POD

def proc = "find .".execute()
def b = new StringBuffer()
proc.consumeProcessErrorStream(b)

println proc.text
println b.toString()

Read file deployed into the pod

def proc = "cat config/localextensions.xml".execute()
def b = new StringBuffer()
proc.consumeProcessErrorStream(b)

println proc.text
println b.toString()

Fire HTTP request from the pod

import java.net.http.*;
def TEST_URL = "https://www.google.fr" // PUT TEST URL HERE
 
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create(TEST_URL))
    .build();
 
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
println response.body();

Get TCP latency from the pod

package com.sap.groovyhac.net

def inetAddress = InetAddress.localHost
def ip = '....database.windows.net'
def port = 1443

3.times {
    try {
        def t0 = System.currentTimeMillis()
        def clientSocket = new java.net.Socket(ip, port)
        def t1 = System.currentTimeMillis()
        println "${inetAddress.hostAddress} -> ${ip}:${port} OK ${clientSocket} ${t1-t0} ms"
        clientSocket.close()
    } catch (any) {
        println "${inetAddress.hostAddress} -> ${ip}:${port} KO ${any}"
        println "${any.stackTrace.join('n')}"
    }
}

 

Conclusion

Now that we see how to debug a Commerce Cloud node/pod, this guideline should give you a greater autonomy in your SAP Commerce Cloud administration/maintenance instance. However, if you need more advanced assistance, you should not hesitate to request an SAP Expert Service consultant to help you.

Sara Sampaio

Sara Sampaio

Author Since: March 10, 2022

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x