Skip to content

RT clients observability

This page introduces the RT clients observability API, which provides information about publisher data merged by RT.

Use the /rt-clients-meta REST API to monitor publisher data and its state across the RT cluster.

You can call the REST API using one of the following methods:

Endpoint

The $ENDPOINT variable below is defined as the port-forwarded connection to port 6000 of any RT node.

bash-4.4$ curl http://$ENDPOINT/rt-clients-meta

Note

This query can be called directly on an RT node.

bash-4.4$ curl http://0:6000/rt-clients-meta

Endpoint

The $ENDPOINT variable below is defined as port 5001 or 5002 at the hostname of any RT node.

bash-4.4$ cd /opt/kx/app/rt/replicator/clib/
bash-4,4$ ./rest_proxy --endpoint $ENDPOINT --target rt-clients-meta

Response

The response includes a response header and a payload.

The API returns the result of a left-join between four state tables in the RT sequencer. This table shows details on how publisher data is being merged by RT.

  1. len_upds
  2. .fw.t
  3. dir_inf
  4. .mrg.state.input

The payload members are:

group member type description
id string Name of the publisher to RT.
sess long RT logs take the form, log.x.y. sess is the x part of the log. Details on the meaning of x and y in the RT log file name.
no long RT logs take the form, log.x.y. no is the y part of the log
node string The RT node in the cluster.
lu_tm string Timestamp taken from the len_upds table.
wd long Watch descriptor, the number of files the sequencer is watching.
gs node long The position from all RT nodes that it's sequencer is subscribed to in the RT input log.
len long The position on this node that the sequencer is subscribed to in the RT input log.
fw_tm string Timestamp taken from the .fw.t table.
pos long Positon taken from the dir_inf table.
msgs long Messages sequenced taken from the dir_inf table.
bytes long Bytes sequenced taken from the dir_inf table.
dir_ts string Timestamp taken from the dir_inf table.
last_msg_seqn long Taken from .mrg.state.input.
last_msg_ts string Time taken from .mrg.state.input.
ms_pos long Taken from .mrg.state.input.
ms_msgs long Taken from .mrg.state.input.
ms_bytes long Taken from .mrg.state.input.
ms_tm string Taken from .mrg.state.input.

If the values in the gs group aren't aligned across the RT nodes, you might need to restart a node to recover the correct state from the other nodes in the RT cluster.

Example

Endpoint

An example of the $ENDPOINT variable is 0:6000.

bash-4.4$ curl http://$ENDPOINT/rt-clients-meta | jq .
{
  "id": "pub1.data",
  "sess": 1,
  "no": 0,
  "node": "n0",
  "lu_tm": "2026-08-06T14:04:20.937885324",
  "wd": null,
  "gs": {
    "n0": 366,
    "n1": 366,
    "n2": 366
  },
  "len": 366,
  "fw_tm": "2026-08-06T14:04:20.938028827",
  "pos": null,
  "msgs": null,
  "bytes": null,
  "dir_ts": "",
  "last_msg_seqn": null,
  "last_msg_ts": "",
  "ms_pos": null,
  "ms_msgs": null,
  "ms_bytes": null,
  "ms_tm": ""
}

Note

First, you must exec onto a sequencer node.

bash-4.4$ curl http://0:6000/rt-clients-meta | jq .
{
  "id": "pub1.data",
  "sess": 1,
  "no": 0,
  "node": "n0",
  "lu_tm": "2026-08-06T14:04:20.937885324",
  "wd": null,
  "gs": {
    "n0": 366,
    "n1": 366,
    "n2": 366
  },
  "len": 366,
  "fw_tm": "2026-08-06T14:04:20.938028827",
  "pos": null,
  "msgs": null,
  "bytes": null,
  "dir_ts": "",
  "last_msg_seqn": null,
  "last_msg_ts": "",
  "ms_pos": null,
  "ms_msgs": null,
  "ms_bytes": null,
  "ms_tm": ""
}

Endpoint

An example of the $ENDPOINT variable is kxi-mystream-0:5002.

bash-4.4$ cd /opt/kx/app/rt/replicator/clib/
bash-4,4$ ./rest_proxy --endpoint $ENDPOINT --target rt-clients-meta | jq .
{
  "id": "pub1.data",
  "sess": 1,
  "no": 0,
  "node": "n0",
  "lu_tm": "2026-08-06T14:04:20.937885324",
  "wd": null,
  "gs": {
    "n0": 366,
    "n1": 366,
    "n2": 366
  },
  "len": 366,
  "fw_tm": "2026-08-06T14:04:20.938028827",
  "pos": null,
  "msgs": null,
  "bytes": null,
  "dir_ts": "",
  "last_msg_seqn": null,
  "last_msg_ts": "",
  "ms_pos": null,
  "ms_msgs": null,
  "ms_bytes": null,
  "ms_tm": ""
}
Back to top