Modeling Guide for SAP Data Hub

Diagnostic Information Archive Structure and Contents

The directory structure and contents of the diagnostic information archive.

Zip Archive Structure

vflow-diagnostic-<timestamp>.zip
├── version.json
├── graphs.json
├── errors.txt
├── api-pods
|   ├── pods.json
|   ├── goroutine.txt
|   ├── <podname>
|   |   └── goroutine.txt
|   |   └── logs-<podname>.txt
|   |   └── pod-<podname>.json
├── <graph-source>-<handle>
|   ├── graph.json
|   ├── execution.json
|   ├── <group-instance-id>
|   |   └── goroutine.txt
|   |   └── heap.txt
|   |   └── logs-<podname>.txt
|   |   └── pod-<podname>.json
...
|   └── <group-instance-id>
|   |   └── goroutine.txt
|   |   └── heap.txt
|   |   └── logs-<podname>.txt
|   |   └── pod-<podname>.json
├── <graph-source>-<handle>
...

version.json File

The version.json file contains version information.

For example:
{
    "version": "2.3.30-dev-0828",
    "buildTime": "2018-08-28T17:10:27",
    "gitCommit": "a1897fcf38788b55be1ce177e32bb2ebc733b28c",
    "platform": "linux"
}

graphs.json File

The graphs.json file contains brief information about executed graphs, including files that are completed and not deleted.

The file can be used, for example, to identify graphs with a status of dead, the last messages of a graph, and so on.
[
    {
        "src": "com.sap.demo.datagenerator",
        "name": "com.sap.demo.datagenerator",
        "executionType": "",
        "handle": "9a6eeb59abb242baabb110dba50ae178",
        "status": "running",
        "terminationRequested": false,
        "message": "Graph is currently running",
        "started": "2018-08-29T10:26:41Z",
        "updated": "2018-08-29T10:26:45Z",
        "stopped": "",
        "submitted": "2018-08-29T10:26:40Z"
    },
    ...
]

<graph-source>-<handle> Folders

The <graph-source>-<handle> folder contains detailed information about graph execution. For example: com.sap.demo.datagenerator-9a6eeb59abb242baabb110dba50ae178.

To identify the files that you want to open, see the graphs.json file.
[
    {
        "src": "com.sap.demo.datagenerator",
        ...
        "handle": "9a6eeb59abb242baabb110dba50ae178",
        ...
    },
...

graph.json File

The graph.json file contains the graph definition.

The content in the graph.json file is the same that you get when you export the graph from SAP Data Hub Modeler.

execution.json File

The execution.json file contains information about the execution for a graph, such as groups, pods, processes (operator instances in a graph), and so on.

You can use the execution.json file to identify which pod or pods failed.
{
    "src": "com.sap.demo.datagenerator",
    "name": "com.sap.demo.datagenerator",
    "executionType": "stream",
    "handle": "9a6eeb59abb242baabb110dba50ae178",
    "status": "running",
    "terminationRequested": false,
    "message": "Graph is currently running",
    "remoteExecution": {
        "parent": ""
    },
    "started": 1535538401,
    "updated": 1535538405,
    "stopped": 0,
    "submitted": 1535538400,
    "allocations": [
        {
            "groupName": "default",
            "groupDescription": "",
            "subgraph": "default",
            "container": "vflow-graph-9a6eeb59abb242baabb110dba50ae178-com-sap-demo-ngq4m",
            "containerIp": "172.17.0.8",
            "host": "minikube",
            "status": "running",
            "message": "Container is currently running",
            "restartCount": 0,
            "image": "a-docker-registry:5000/vora/vflow-node:2.3.30-dev-0829-com.sap.debian",
            "destination": "",
            "updated": "2018-08-29T10:26:40Z",
            "processes": [
                {
                    "id": "16d1",
                    "componentId": "com.sap.system.jsengine",
                    "status": "running",
                    "processName": "datagenerator (16d1)",
                    "engine": "main",
                    "timestampPublished": "2018-08-29T10:26:41Z",
                    "timestampReceived": "2018-08-29T10:26:41.031657526Z",
                    "published": 1535538401,
                    "received": 1535538401,
                    "message": "Process is running",
                    "metrics": null
                },
                {
                    "id": "1mnu",
                    "componentId": "com.sap.system.terminal",
                    "status": "running",
                    "processName": "terminal (1mnu)",
                    "engine": "main",
                    "timestampPublished": "2018-08-29T10:26:41Z",
                    "timestampReceived": "2018-08-29T10:26:41.033268298Z",
                    "published": 1535538401,
                    "received": 1535538401,
                    "message": "Process is running",
                    "metrics": null
                }
            ]
        }
    ]
}

events.json File

The events.json file contains information about graph events.

For example, when a group is initialized, a group execution is started, or a graph has received a shutdown command, and so on.

<group-instance-id> Folders

For each instance of a group, a folder is created.

To determine which <group-instance-id> to open, see the execution.json file.
{
    "allocations": [
        {
            "subgraph": "<group-instance-id",
            ...
         }

logs-<pod-name>.txt File

The logs-<pod-name>.txt file contains logs for a specific pod.

pod-<pod-name>.json File

The pod-<pod-name>.json file contains a pod description.

The file content is similar to the output of a kubectl describe pod.

goroutine.txt File

The goroutine.txt file contains pprof output for a goroutine profile.

<heap.txt> File

The <heap.txt> file contains pprof output for a heap profile.

api-pod Folder

The api-pod folder contains information about vflow API nodes.

The folder structure is similar to the <group-instance-id> folder, except that it does not contain a heap.txt file (a heap.txt file can become quite large for long-running vflow API nodes, and it is rarely used).