# Live cluster mode commands

This page describes the `asadm` commands that are available in live cluster mode. Live cluster mode is the default mode for `asadm`, used for viewing and managing a running Aerospike cluster.

## asinfo

The `asinfo` command provides raw access to the Aerospike info protocol for changing live configurations and viewing a wide array of technical data for the cluster. `asinfo` commands are only available in privileged mode. For more information, see [enable](#enable).

For a comprehensive list of commands, see the [Info Command Reference](https://aerospike.com/docs/database/reference/info). With `asinfo`, you can execute commands across the entire cluster.

When running `asinfo` commands with `asadm`:

-   Use the `with` modifier to select specific nodes.
-   Use the `like` modifier to filter results.

Example: Retrieve configuration from all nodes and filter results on 'batch'

```text
Admin> enable

Admin+> asinfo -v get-config like batch

172.16.245.231 (172.16.245.231) returned:

batch-max-requests=5000;query-batch-size=100

172.16.245.232 (172.16.245.232) returned:

batch-max-requests=5000;query-batch-size=100

172.16.245.233 (172.16.245.233) returned:

batch-max-requests=5000;query-batch-size=100

172.16.245.234 (172.16.245.234) returned:

batch-max-requests=5000;query-batch-size=100
```

## collectinfo

The `collectinfo` command gathers information about your cluster and saves that information in a directory and in a `.tgz` archive. You can share the archive with Aerospike Support for help in diagnosing issues with your support case.

-   By default, `collectinfo` collects:
    
    -   information about your cluster.
    -   the aerospike configuration file for the local node.
    -   system statistics from the local node if you don’t provide remote server credentials.
    -   A list of all the installed packages on Linux installations.
-   Use `--enable-ssh` and provide remote server credentials to collect system statistics from all nodes. For more information, see [Configuring SSH](https://aerospike.com/docs/database/tools/asadm/live-mode/#configure-ssh).
    
-   Use `-n` to collect more than one snapshot and `-s` to specify the sleep time between snapshots.
    
-   Run `help collectinfo` for more details.
    

::: caution
UDA was removed from the tools package as of 12.0.0, and UDA-related options like `--agent-host` and `--agent-port` were removed from `asadm` 4.0.0.
:::

## collectlogs

The `collectlogs` command gathers cluster logs from local clusters and remote logs of all nodes if remote server SSH credentials are configured. Aerospike support can use the results of `collectlogs` to help with your support case.

To collect remote host logs, you must configure SFTP on the remote host. Call `collectlogs` with the `--enable-ssh` option. For more information, see [Configuring SSH](https://aerospike.com/docs/database/tools/asadm/live-mode/#configure-ssh). Run `help collectlogs` to see all options.

### Access logs without root privileges

On an Aerospike system running with the default root privileges, a non-root user on the same system cannot access the logs generated by `collectlogs`, even if that non-root user has `sudo` privileges.

Use one of the following methods to access logs if Aerospike is not running with root privileges:

-   Run `collectlogs` as a user with root user privileges to access server logs.
-   Configure `asd`, the [Aerospike Daemon](https://aerospike.com/docs/database/manage/database/daemon), to [run as a non-root user](https://aerospike.com/docs/database/manage/database/non-root).
-   Change the Aerospike Service:
    -   Set the Aerospike configuration parameter [os-group-perms](https://aerospike.com/docs/database/reference/config#service__os-group-perms) to `true` and add the non-root Linux user to the `root` user group with the terminal command `usermod -aG root NON-ROOT USERNAME`.

## disable

The `disable` command exits privileged mode. We recommend that you only enter privileged mode when needed to avoid inadvertently executing commands that could alter the cluster in undesirable ways.

## enable

The `enable` command enters privileged mode, which is required for executing `manage` and `asinfo` commands. If you use the `--warn` flag, `asadm` displays a warning before executing your command, and you must enter the provided hexadecimal string to confirm that you want to proceed.

Example: Overwrite a UDF module with the '--warn' flag

```text
Admin>

Admin> enable --warn

Admin+> manage udf add  test.lua path path/to/test.lua

You are about to write over an existing UDF module.

Confirm that you want to proceed by typing 48b015, or anything else to cancel.

48b015

Successfully added UDF test.lua

Admin+> disable

Admin>
```

Example: Overwrite a UDF module without the '--warn' flag

```text
Admin> enable

Admin+>

Admin+> manage udf add  test.lua path path/to/test.lua

Successfully added UDF test.lua

Admin+> disable
```

## features

The `features` command displays features used in cluster. It supports `like` and `with` modifiers.

Example: features command output

```text
Admin> features

~~~~~~~~~~~Features (2020-12-18 02:09:28 UTC)~~~~~~~~~~~~

Node           |10.0.0.1:3000|10.0.0.2:3000|10.0.0.3:3000

AGGREGATION    |NO           |NO           |NO

BATCH          |NO           |NO           |NO

INDEX-ON-DEVICE|NO           |NO           |NO

INDEX-ON-PMEM  |NO           |NO           |NO

KVS            |YES          |YES          |YES

LDT            |NO           |NO           |NO

QUERY          |NO           |NO           |NO

RACK-AWARE     |NO           |NO           |NO

SC             |NO           |NO           |NO

SCAN           |NO           |NO           |NO

SECURITY       |NO           |NO           |NO

SINDEX         |NO           |NO           |NO

TLS (FABRIC)   |NO           |NO           |NO

TLS (HEARTBEAT)|NO           |NO           |NO

TLS (SERVICE)  |NO           |NO           |NO

UDF            |NO           |NO           |NO

XDR DESTINATION|NO           |NO           |NO

XDR SOURCE     |NO           |NO           |NO

Number of rows: 19
```

## info

`info` commands display diagnostic information in a concise, tabular format. When issued without additional arguments, `info` executes network, namespace, and xdr sub-commands. Output from `info` commands alert you to potential cluster issues by coloring suspicious text red.

::: note
The name of the Paxos Principal node is always displayed in green. This is the node with the highest node ID, to which all nodes send partition sync requests to perform rebalancing when the cluster forms. This designation as the principal node is only important when the cluster forms and during migrations.
:::

For `namespace` and `set` subcommands, extra rows are shown in blue and display the sum of statistics per namespace and set.

### namespace

The `info namespace` command displays a summary of important namespace statistics for each namespace defined on each node ordered by Namespace and Node. It displays an extra row, which is an aggregate of some of the statistics. When the primary index or secondary index is stored on device (not shmem), extra usage statistics are displayed, similar to the “Memory” columns in the following table.

The `info namespace` command displays information in two tables:

-   `Namespace Usage Information`: Namespace usage-related details.
-   `Namespace Object Information`: Namespace object-related details.

Example: info namespace command output

```text
Admin> info namespace

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Namespace Usage Information (2023-03-21 23:44:05 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Namespace|           Node|Evictions|  Stop|~Device~|~~~~~~~~~~~~Memory~~~~~~~~~~~|~Primary Index~~|~Secondary Index~

         |               |         |Writes|    HWM%|     Used| Used%| HWM%| Stop%| Type|      Used|  Type|      Used

bar      |172.17.0.3:3000|  0.000  |False |   0.0 %| 0.000 B | 0.0 %|0.0 %|90.0 %|shmem|  0.000 B |shmem |  0.000 B

bar      |172.17.0.4:3000|  0.000  |False |   0.0 %| 0.000 B | 0.0 %|0.0 %|90.0 %|shmem|  0.000 B |shmem |  0.000 B

bar      |172.17.0.5:3000|  0.000  |False |   0.0 %| 0.000 B | 0.0 %|0.0 %|90.0 %|shmem|  0.000 B |shmem |  0.000 B

bar      |               |  0.000  |      |        | 0.000 B | 0.0 %|     |      |     |  0.000 B |      |  0.000 B

test     |172.17.0.3:3000|  0.000  |False |   0.0 %|16.169 MB|0.39 %|0.0 %|90.0 %|shmem|103.125 KB|shmem | 16.000 MB

test     |172.17.0.4:3000|  0.000  |False |   0.0 %|16.164 MB|0.39 %|0.0 %|90.0 %|shmem| 99.625 KB|shmem | 16.000 MB

test     |172.17.0.5:3000|  0.000  |False |   0.0 %|16.179 MB|0.39 %|0.0 %|90.0 %|shmem|108.812 KB|shmem | 16.000 MB

test     |               |  0.000  |      |        |48.511 MB|0.39 %|     |      |     |311.562 KB|      | 48.000 MB

Number of rows: 6

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Namespace Object Information (2023-03-21 23:44:05 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Namespace|           Node|Rack|  Repl|Expirations|  Total|~~~~~~~~~~Objects~~~~~~~~~~|~~~~~~~~~Tombstones~~~~~~~~|~~~~Pending~~~~

         |               |  ID|Factor|           |Records| Master|  Prole|Non-Replica| Master|  Prole|Non-Replica|~~~~Migrates~~~

         |               |    |      |           |       |       |       |           |       |       |           |     Tx|     Rx

bar      |172.17.0.3:3000|   0|     2|    0.000  |0.000  |0.000  |0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

bar      |172.17.0.4:3000|   0|     2|    0.000  |0.000  |0.000  |0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

bar      |172.17.0.5:3000|   0|     2|    0.000  |0.000  |0.000  |0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

bar      |               |    |      |    0.000  |0.000  |0.000  |0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

test     |172.17.0.3:3000|   0|     1|    0.000  |1.650 K|1.650 K|0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

test     |172.17.0.4:3000|   0|     1|    0.000  |1.594 K|1.594 K|0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

test     |172.17.0.5:3000|   0|     1|    0.000  |1.741 K|1.741 K|0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

test     |               |    |      |    0.000  |4.985 K|4.985 K|0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

Number of rows: 6
```

Optionally, use the `info namespace usage` or `info namespace object` commands to display namespace usage-related or object-related details only.

### network

The `info network` command displays the name, ID, and IP of each node and provides statistics such as cluster size, cluster key, number of client connections, and uptime for each server.

Under the Node ID column, an asterisk indicates the node that is expected to be the Paxos Principal node.

Example: info network command output

```text
Admin> info network

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information (2020-12-16 21:45:32 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

         Node|         Node ID|             IP|    Build|Migrations|~~~~~~~~~~~~~~~~~~Cluster~~~~~~~~~~~~~~~~~~|Client|  Uptime

             |                |               |         |          |Size|         Key|Integrity|      Principal| Conns|

10.0.0.1:3000| BB9010016AE4202|  10.0.0.1:3000|C-5.3.0.1|   0.000  |   5|92DCF600367B|True     |BB9050016AE4202|     2|00:07:48

10.0.0.2:3000| BB9020016AE4202|  10.0.0.2:3000|C-5.3.0.1|   0.000  |   5|92DCF600367B|True     |BB9050016AE4202|     2|00:07:47

10.0.0.3:3000| BB9030016AE4202|  10.0.0.3:3000|C-5.3.0.1|   0.000  |   5|92DCF600367B|True     |BB9050016AE4202|     2|00:07:46

10.0.0.4:3000| BB9040016AE4202|  10.0.0.4:3000|C-5.3.0.1|   0.000  |   5|92DCF600367B|True     |BB9050016AE4202|     3|00:07:46

10.0.0.5:3000|*BB9050016AE4202|  10.0.0.5:3000|C-5.3.0.1|   0.000  |   5|92DCF600367B|True     |BB9050016AE4202|     3|00:07:45

Number of rows: 5
```

### release

The `info release` command displays a summary of release information for all cluster nodes, as shown in the following table.

Example: info release command output

```text
Admin> info release

~~~~~~~~~~~~~~~~~~~~~~Release Information~~~~~~~~~~~~~~~~~~~~~~

            Node|Architecture|                     Edition|Version|   OS|                                     SHA|                                  EE SHA|                                FIPS SHA

192.168.1.1:3000|x86_64      |Aerospike Enterprise Edition|8.1.1.0|linux|3a3bc233f3f78b47fec2388fccdd66d55eb12cad|7a55a2e5b57e9af6fa773c4188ff9527687058e0|acc52654577aa3165d03f8d5556b083626e616e8

192.168.1.2:3000|x86_64      |Aerospike Enterprise Edition|8.1.1.0|linux|3a3bc233f3f78b47fec2388fccdd66d55eb12cad|7a55a2e5b57e9af6fa773c4188ff9527687058e0|acc52654577aa3165d03f8d5556b083626e616e8
```

The `FIPS SHA` column only appears if you’re using the Aerospike Server Enterprise for United States Federal Edition.

::: note
The `info release` command requires Aerospike Database 8.1.1 and `asadm` 4.1.0, which is included in tools package 12.1.0.

The command fails if the installed version of either component does not meet the minimum requirement.
:::

### set

The `info set` command displays a summary of important set statistics for each set defined on each namespace on all nodes ordered by Set and Namespace. If configured, it displays details about your storage quotas. It includes an extra row that displays an aggregate of grouped rows.

Example: info set command output

```text
Admin+> info set

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Set Information (2023-03-21 23:18:54 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Namespace|    Set|           Node|    Memory|    Disk|~~~~~~Quota~~~~~~~|  Objects|  Stop| Disable|  Set

         |       |               |      Used|    Used|     Total|  Used%|         |Writes|Eviction|Index

         |       |               |          |        |          |       |         | Count|        |

test     |testset|172.17.0.3:3000| 37.534 KB|0.000 B | 48.828 KB|76.87 %|882.000  |     0|False   |No

test     |testset|172.17.0.4:3000| 37.326 KB|0.000 B | 48.828 KB|76.44 %|877.000  |     0|False   |No

test     |testset|172.17.0.5:3000| 38.353 KB|0.000 B | 48.828 KB|78.55 %|901.000  |     0|False   |No

test     |testset|               |113.213 KB|0.000 B |146.484 KB|77.29 %|  2.660 K|      |        |

test     |ufodata|172.17.0.3:3000| 32.640 KB|0.000 B |  0.000 B |     --|768.000  |     0|False   |No

test     |ufodata|172.17.0.4:3000| 30.479 KB|0.000 B |  0.000 B |     --|717.000  |     0|False   |No

test     |ufodata|172.17.0.5:3000| 35.700 KB|0.000 B |  0.000 B |     --|840.000  |     0|False   |No

test     |ufodata|               | 98.818 KB|0.000 B |  0.000 B |  0.0 %|  2.325 K|      |        |

Number of rows: 6
```

Run the `show statistics` command to display further statistics for specific sets.

```text
Admin> show statistics sets for NAMESPACE SET
```

### sindex

`info sindex` displays a summary of important secondary index (sindex) statistics for each sindex defined on each namespace, on all nodes, ordered by Sindex and Node.

Example: info sindex command output

```text
Admin> info sindex

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Secondary Index Information (2020-12-16 23:10:06 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 Index Name|Namespace|    Set|         Node|    Bins|   Bin|State|Keys|~~~~~~~~~~Entries~~~~~~~~~~|~~~~Storage~~~~~|~~~~Queries~~~~~|~~~~Updates~~~~~|                              Context

           |         |       |             |        |  Type|     |    |  Total|  Avg Per|  Avg Per| Type|      Used|Requests|Avg Num|  Writes|Deletes|

           |         |       |             |        |      |     |    |         |    Rec|  Bin Val|     |          |    Recs|       |        |       |

name-sindex|bar      |testset|10.0.0.1:3000|    name|STRING|RW   |   2| 1.000 K | 1.000 | 0.500 K |shmem| 16.000 MB| 0.000  |0.000  | 5.000  |0.000  |--

name-sindex|bar      |testset|10.0.0.3:3000|    name|STRING|RW   |   2| 1.000 K | 1.000 | 0.500 K |shmem| 16.000 MB| 0.000  |0.000  | 5.000  |0.000  |--

name-sindex|bar      |testset|10.0.0.4:3000|    name|STRING|RW   |   2| 1.000 K | 1.000 | 0.500 K |shmem| 16.000 MB| 0.000  |0.000  | 3.000  |0.000  |--

name-sindex|bar      |testset|10.0.0.5:3000|    name|STRING|RW   |   2| 1.000 K | 1.000 | 0.500 K |shmem| 16.000 MB| 0.000  |0.000  | 4.000  |0.000  |--

name-sindex|bar      |testset|10.0.0.6:3000|    name|STRING|RW   |   2| 1.000 K | 1.000 | 0.500 K |shmem| 16.000 MB| 0.000  |0.000  | 3.000  |0.000  |--

           |bar      |testset|             |        |      |     |    | 5.000 K |       | 2.500 K |shmem| 80.000 MB| 0.000  |0.000  |20.000  |0.000  |--

age-sindex |test     |testset|10.0.0.3:3000|     age|STRING|RW   |   0|   0.000 | 1.000 |   0.000 |shmem| 16.000 MB| 0.000  |0.000  | 0.000  |0.000  |[list_index(-1), map_key(<string#11>)]

age-sindex |test     |testset|10.0.0.1:3000|     age|STRING|RW   |   0|   0.000 | 1.000 |   0.000 |shmem| 16.000 MB| 0.000  |0.000  | 0.000  |0.000  |[list_index(-1), map_key(<string#11>)]

age-sindex |test     |testset|10.0.0.4:3000|     age|STRING|RW   |   0|   0.000 | 1.000 |   0.000 |shmem| 16.000 MB| 0.000  |0.000  | 0.000  |0.000  |[list_index(-1), map_key(<string#11>)]

age-sindex |test     |testset|10.0.0.5:3000|     age|STRING|RW   |   0|   0.000 | 1.000 |   0.000 |shmem| 16.000 MB| 0.000  |0.000  | 0.000  |0.000  |[list_index(-1), map_key(<string#11>)]

age-sindex |test     |testset|10.0.0.6:3000|     age|STRING|RW   |   0|   0.000 | 1.000 |   0.000 |shmem| 16.000 MB| 0.000  |0.000  | 0.000  |0.000  |[list_index(-1), map_key(<string#11>)]

           |test     |testset|             |        |      |     |    |   0.000 | 1.000 |   0.000 |shmem| 80.000 MB| 0.000  |0.000  | 0.000  |0.000  |[list_index(-1), map_key(<string#11>)]

Number of rows: 10
```

`show statistics` displays more statistics for a specific secondary index.

```text
Admin> show statistics sindex for NAMESPACE test_str_idx
```

### transactions

The `info transactions` command shows metrics for transaction monitors and provisionals. There are two sub-commands, `info transactions monitors` and `info transactions provisionals`, that filter the output to show only relevant metrics.

Only namespaces configured with [strong consistency](https://aerospike.com/docs/database/learn/strong-consistency) can show transaction information.

#### Monitors

A monitor is a small control record that represents one active transaction, stored in a hidden set `<ERO~MRT>` inside the namespace. While the client is running the transaction, the monitor tracks which digests (records) the client has written, the transaction timeout, and whether the client has started to commit. Completed transactions remove their monitors, leaving a tombstone.

| Metric | Description |
| --- | --- |
| Count | Total number of monitor records observed for the namespace on the node. |
| Active | Number of monitors whose transactions are neither fully committed nor rolled back. |
| Tombstones | Durable-delete markers left after monitor records are removed. |
| Storage | Bytes used on device by the monitor set `<ERO~MRT>`. |
| Monitor Roll Back / Forward | Work performed by the monitor when it takes over an expired or abandoned transaction. Roll Forward completes a commit that had already started. Roll Back discards changes when no commit was started. |

#### Provisionals

A provisional is the temporary version of an application record created when a transaction writes to that record. The original version remains unchanged and the provisional version holds the new data until the transaction commits or aborts.

| Metric | Description |
| --- | --- |
| Provisionals | Count of provisional records, one per application record written inside a transaction. |
| Transaction (Blocked) | Number of writes rejected with `AS_ERR_MRT_BLOCKED` because a target record is locked by a transaction. |
| Transaction (Mismatch) | Number of commits rejected with `AS_ERR_MRT_VERSION_MISMATCH` when a record read earlier in the transaction changed before commit. |
| Verify Read | Results of the client’s commit-time generation checks on records read during the transaction. |
| Roll Back / Forward | Work applied to provisional records during cleanup or commit. Roll Forward commits updates from provisionals to live records, while Roll Back discards the update. |

Example: info transactions command output

```text
Admin> info transactions

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~MRT Monitor Metrics (2025-07-17 05:32:16 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Namespace | Node                           | Count | Active | Tombstones | Storage  |~~~Monitor Roll Back~~~|~~~Monitor Roll Forward~~~

          |                                |       |        |            |          | Success | Error | Timeout | Success | Error | Timeout

db-1      | 1.0.0.127.in-addr.arpa:3000    | 0.000 | 0.000  | 59.000     | 3.988 MB | 2.478 K | 0.000 | 0.000   | 0.000   | 0.000 | 0.000

test      | 1.0.0.127.in-addr.arpa:3000    | 0.000 | 0.000  | 0.000      | --       | 0.000   | 0.000 | 0.000   | 0.000   | 0.000 | 0.000

Number of rows: 2

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~MRT Provisionals Metrics (2025-07-17 05:32:16 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Namespace | Node                           | Provisionals |~~~~Transaction~~~~| Version |~~~~~~Verify Read~~~~~~|~~~~~~~Roll Back~~~~~~~|~~~~~~Roll Forward~~~~~~

          |                                |              | Blocked | Mismatch |        | Success | Error | Timeout | Success | Error | Timeout | Success | Error | Timeout

db-1      | 1.0.0.127.in-addr.arpa:3000    | 0.000        | 0.000   | 0.000    | 0.000  | 0.000   | 0.000 | 0.000   | 2.478 K | 0.000 | 0.000   | 4.351 M | 0.000 | 0.000

test      | 1.0.0.127.in-addr.arpa:3000    | 0.000        | 0.000   | 0.000    | 0.000  | 0.000   | 0.000 | 0.000   | 0.000   | 0.000 | 0.000   | 0.000   | 0.000 | 0.000

Number of rows: 2
```

### xdr

The `info xdr` command shows the current performance characteristics of XDR on each node. The `info xdr` command supports filtering by datacenter using the `for` modifier.

Example: info xdr command output

```text
Admin> info xdr for DC1

~~~~~~~~~~~~~~~~~~~~XDR Information DC1 (2020-12-17 00:11:48 UTC)~~~~~~~~~~~~~~~~~~~~

         Node|Success|~~~~~~~~Retry~~~~~~~~~|Recoveries|       Lag|    Avg|Throughput

             |       |Connection|Destination|   Pending|(hh:mm:ss)|Latency|   (rec/s)

             |       |     Reset|           |          |          |   (ms)|

10.0.0.3:3000|    224|         0|          0|         0|  00:00:00|      0|      1078

10.0.0.5:3000|    206|         0|          0|         0|  00:00:00|      0|       970

             |       |          |           |         0|          |      0|

Number of rows: 2
```

## manage

The `manage` commands administer access control, add and remove user defined functions (UDFs), create and delete secondary indexes (sindex), and dynamically configure your cluster.

To access the `manage` commands, enter privileged mode by typing `enable [--warn]`. For more information, see [enable](#enable).

Unlike most other commands, `manage` commands require one or more arguments. Additionally, each `manage` command requires specific access rights.

See [Configuring access control](https://aerospike.com/docs/database/manage/security/rbac/#privileges) for more information.

### acl

The `manage acl` commands manage users and roles. The general syntax is `manage acl OPERATION user|role USERNAME|ROLE-NAME . . .`.

-   The command to create a user is `manage acl create user USERNAME`.
-   The command to create a role is `manage acl create role ROLE-NAME`.

Use the `show users` and `show roles` commands in conjunction with `manage acl` commands.

#### create user

Access control permissions: user-admin

##### Create a user with a password

Command format: create a user with a password and assign roles. (Assigning roles to a new user is not required.)

-   To keep a password out of command history, `asadm` prompts for a password when the `password` argument is not provided.
-   See [Set a new password](https://aerospike.com/docs/database/manage/security/rbac/#set-a-new-password) for the rules regarding valid passwords.

```plaintext
manage acl create user USERNAME [password PASSWORD] [roles ROLE1 ROLE2 ...]
```

The following example creates user _Mr-Rogers_ with role _Good-Neighbor_.

```text
Admin+> manage acl create user Mr-Rogers roles Good-Neighbor

Enter password for new user Mr-Rogers:

Successfully created user Mr-Rogers
```

##### Create a user with password authentication permanently disabled

-   The password `nopassword` tells the server to permanently disable password authentication for this user.
-   If password authentication is disabled, the user cannot create a password and an administrator cannot assign a password for the user.
    -   Any such attempt is recorded in the audit log and results in an error `FORBIDDEN_PASSWORD (64): PKI user password not changeable.`

Command format: Create a user with password authentication permanently disabled and optional roles:

```plaintext
manage acl create user USERNAME [password nopassword] [roles ROLE1 ROLE2 ...]
```

#### delete user

Access control permissions: user-admin

Use the command `manage acl delete user USERNAME` to remove a user.

```text
Admin+> manage acl delete user Thanos

Successfully deleted user Thanos
```

#### set password

Access control permissions: user-admin

-   With the `manage acl set-password user USERNAME [password PASSWORD]` command, a user-admin can change the password of any user without knowing that user’s current password.
    
-   Using the password `nopassword` tells the server to permanently disable password authentication for this user.
    
-   Any attempt to set a password for a user restricted to PKI authentication is logged in the audit log and returns a `FORBIDDEN_PASSWORD (64): PKI user password not changeable` error.
    
-   Passwords that contain whitespace must be quoted.
    
-   Double and single quotes must either be escaped or be different from the enclosing quote.
    
-   To keep a password out of command history, `asadm` prompts for a password when the `password` argument is not provided.
    

```text
Admin+> manage acl set-password user jesse

Enter new password for user jesse:

Successfully set password for user jesse
```

::: note
In `asadm` 2.8 and earlier, `asadm` limits the characters you can use in a password to alphanumeric characters and the symbols `.*-:/_{}@`. White space is not supported.
:::

#### change password

Access control permissions: None

The command `manage acl change-password user USERNAME [old OLD-PASSWORD] [new NEW-PASSWORD]` changes the password of any other user as long as the user’s current password is provided. To keep both the old and new password out of command history, `asadm` prompts for them when not provided.

-   Users with password authentication disabled can never have a password set or changed. Any such attempt returns an error `FORBIDDEN_PASSWORD (64): PKI user password not changeable.`

```text
Admin+> manage acl change-password user Kelly

Enter old password:

Enter new password:

Successfully changed password for user Kelly
```

#### grant user

Access control permissions: user-admin

The `manage acl grant user USERNAME roles ROLE1 [ROLE2 [...]]` command uses the `roles` keyword to add one or more roles to an existing user.

```text
Admin+> manage acl grant user Kelly roles data-admin

Successfully granted roles to user Kelly
```

#### revoke user

Access control permissions: user-admin

The `manage acl revoke user USERNAME roles ROLE1 [ROLE2 [...]]` command uses the `roles` keyword to remove one or more roles from an existing user.

```text
Admin+> manage acl revoke user Kelly roles data-admin

Successfully revoked roles from user Kelly
```

#### create role

Access control permissions: user-admin

The following command creates new roles and assigns them a privilege and allowlist.

```text
create role ROLE-NAME priv PRIVILEGE [ns NAMESPACE [set SET]] [allow ADDR1 [ADDR2 [...]]] [read READ-QUOTA] [write WRITE-QUOTA]
```

You must assign a privilege with the `priv` keyword followed by a privilege. Some privileges can also have namespace or set scopes, which you can define with the `ns` and `set`keywords. To assign an allowlist, use the `allow` keyword followed by one or more addresses. To assign a read quota and/or write quota use the `read` and `write` keywords.

For more information, see [Configuring access control in EE and FE](https://aerospike.com/docs/database/manage/security/rbac/#privileges).

Example: Create role with assigned privilege, namespace, scope, allowlist, and read and write quotas

```text
Admin+> manage acl create role devops priv read-write ns test set testset allow 10.0.0.1 read 3000 write 4000

Successfully created role devops
```

#### delete role

Access control permissions: user-admin

The `manage acl delete role ROLE-NAME` command allows for the removal of a role.

```text
Admin+> manage acl delete role devops

Successfully deleted role devops
```

#### grant role

Access control permissions: user-admin

The `manage acl grant role ROLE-NAME priv PRIVILEGE [ns NAMESPACE [set SET]]>` command adds one or more privileges to a existing role. Some privileges can also have namespace or set scopes which can be defined with the `ns` and `set` keywords. For more information, see [Configuring access control in EE and FE](https://aerospike.com/docs/database/manage/security/rbac).

```text
Admin+> manage acl grant role superwoman priv write ns bar set testset

Successfully granted privilege to role superwoman
```

#### revoke role

Access control permissions: user-admin

The `manage acl revoke role ROLE-NAME priv PRIVILEGE [ns NAMESPACE [set SET]]>` command removes a single privilege from a role.

If the privilege has a namespace scope, the `ns` argument is required. If the privilege has a set scope, the `ns` and `set` arguments are required.

```text
Admin+> manage acl revoke role superwoman priv data-admin ns test set testset

Successfully revoked privilege from role superwoman
```

#### acl allowlist role

Access control permissions: user-admin

The `allowlist` command can overwrite or clear the allowlist for a role.

To overwrite the allowlist, use `manage acl allowlist role ROLE-NAME allow addr1 [addr2 [...]]`.

```text
Admin+> manage acl allowlist role superwoman allow 10.0.0.1 10.1.2.3

Successfully updated allowlist for role superwoman
```

To clear an allowlist, use `manage acl allowlist role ROLE-NAME clear`.

```text
Admin+> manage acl allowlist role superwoman clear

Successfully cleared allowlist from role superwoman
```

#### acl quotas role

The `manage acl quotas role ROLE-NAME [read READ-QUOTA]|[write WRITE-QUOTA]` command changes the read and/or write quota for a role using the `read` and `write` keywords. Either the `read` or `write` keyword must be provided. If either the `read` or `write` keyword is not provided the respective quota will not be changed. To remove a quota from a role, set the value to `0`.

```text
Admin+> manage acl quotas role superwoman read 6000 write 9000

Successfully set quotas for role superwoman.
```

### config

Use the `manage config` commands to edit configuration, create XDR datacenters, add and remove XDR nodes, and add and remove XDR namespaces in the Aerospike cluster.

`manage config` commands match the structure of the `aerospike.conf` file. Make sure that you understand the context of a configuration parameter before running a `manage config` command.

By default, `manage config` commands affect all nodes in the Aerospike cluster.

-   To run a command against only a subset of nodes, use the `with` modifier.
-   To see which nodes a command affects, enter privileged mode with the `--warn` flag.
-   `manage config` commands support robust tab completion for contexts, sub-contexts, parameters, and values. For tab completion in the latest version of the Aerospike database, use the latest version of `asadm`.
-   Use the `show config` command in conjunction with `manage config` commands.

#### config CONTEXT

To change the value of a [configuration parameter](https://aerospike.com/docs/database/reference/config), use the `manage config CONTEXT [SUB-CONTEXT1 [NAME1] [SUB-CONTEXT2 [NAME2] [...]]] param PARAMETER to VALUE` command. If a context or sub-context in `aerospike.conf` is followed by a name, such as a namespace, set, dc, or something else, then the `CONTEXT` or `SUBCONTEXT` must also be followed by a name.

You can change the following configurations:

-   `logging`: Change the logging context’s dynamic runtime configuration.
-   `namespace`: Change a namespace context’s dynamic runtime configuration.
-   `network`: Change the network context’s dynamic runtime configuration.
-   `security` Change the security context’s dynamic runtime configuration.
-   `service`: Change the service context’s dynamic runtime configuration.
-   `xdr`: A collection of commands to add/remove xdr nodes, namespace, and change dynamic runtime configuration.

To change the service configuration:

`manage config service param PARAMETER to VALUE [with node1 [node2 [...]]]`

```text
Admin+> manage config service param proto-fd-max to 1500 with 10*

~Set Service Param proto-fd-max to 1500~

         Node|Response

10.0.0.1:3000|ok

10.0.0.2:3000|ok

10.0.0.3:3000|ok

10.0.0.4:3000|ok

10.0.0.5:3000|ok

Number of rows: 5
```

To change the logging configuration for `aerospike.log` file:

`manage config logging file LOG-FILE-NAME param PARAMETER to VALUE [with node1 [node2 [...]]]`

The `param` keyword specifies the [logging context](https://aerospike.com/docs/database/reference/info) to change, while the `to` keyword specifies the desired [severity level](https://aerospike.com/docs/database/reference/info).

```text
Admin+> manage config logging file /var/log/aerospike/aerospike.log param aggr to info with 10.0.0.1 10.0.0.2 10.0.0.3

~Set Logging Param aggr to info~

         Node|Response

10.0.0.1:3000|ok

10.0.0.2:3000|ok

10.0.0.3:3000|ok

Number of rows: 3
```

To change the network heartbeat configuration:

`manage config network SUBCONTEXT param PARAMETER to VALUE`

```text
Admin+> manage config network heartbeat param interval to 1500 with 10.0.0.1*

~Set Network Param interval to 1500~

         Node|Response

10.0.0.1:3000|ok

Number of rows: 1
```

To change the security configuration:

`manage config security [SUBCONTEXT] param PARAMETER to VALUE`

```text
Admin+> manage config security param privilege-refresh-period to 4500 with 10.0.0.1*

~Set Security Param privilege-refresh-period to 4500~

         Node|Response

10.0.0.1:3000|ok

10.0.0.1:3001|ok

10.0.0.1:3002|ok

10.0.0.1:3003|ok

10.0.0.1:3004|ok

Number of rows: 5
```

To change configuration for namespace test:

`manage config namespace NS param PARAMETER to VALUE`

```text
Admin+> manage config namespace test param allow-ttl-without-nsup to false

~Set Namespace Param allow-ttl-without-nsup to false~

         Node|Response

10.0.0.1:3000|ok

10.0.0.2:3000|ok

10.0.0.3:3000|ok

10.0.0.4:3000|ok

10.0.0.5:3000|ok

Number of rows: 5
```

To change configuration for namespace test and set testset:

`manage config namespace NS set SET param PARAMETER to VALUE`

```text
Admin+> manage config namespace test set testset param disable-eviction to true

~Set Namespace Param disable-eviction to true~

         Node|Response

10.0.0.1:3000|ok

10.0.0.2:3000|ok

10.0.0.3:3000|ok

10.0.0.4:3000|ok

10.0.0.5:3000|ok

Number of rows: 5
```

To change configuration for namespace test and subcontext storage-engine:

`manage config namespace NS SUBCONTEXT param PARAMETER to VALUE`

```text
Admin+> manage config namespace test storage-engine param min-avail-pct to 0 with 10.0.0.1:3000

~Set Namespace Param min-avail-pct to 0~

         Node|Response

10.0.0.1:3000|ok

Number of rows: 1
```

To change XDR configuration:

`manage config xdr param PARAMETER to VALUE`

```text
Admin+> manage config xdr param src-id to 1 with 10.0.0.5*

~Set XDR Param src-id to 1~

         Node|Response

10.0.0.5:3000|ok

Number of rows: 1
```

To change configuration for XDR datacenter DC1:

`manage config xdr dc DATACENTER param PARAMETER to VALUE`

```text
Admin+> manage config xdr dc DC1 param period-ms to 5 with 10.0.0.2 10.0.0.3

~Set XDR DC param period-ms to 5~

         Node|Response

10.0.0.2:3000|ok

10.0.0.3:3000|ok

Number of rows: 2
```

To change namespace test configuration for XDR datacenter DC1’s:

`manage config xdr dc DATACENTER namespace NS param PARAMETER to VALUE`

```text
Admin+> manage config xdr dc DC1 namespace test param ignore-bin to age

~Set XDR Namespace Param ignore-bin to age~

         Node|Response

10.0.0.1:3000|ok

10.0.0.2:3000|ok

10.0.0.3:3000|ok

10.0.0.4:3000|ok

10.0.0.5:3000|ok

Number of rows: 5
```

#### xdr create dc

The `manage config xdr create dc DC` command dynamically creates a new XDR datacenter.

```text
Admin+> manage config xdr create dc DC3

~~~Create XDR DC DC3~~

         Node|Response

10.0.0.4:3000|ok

Number of rows: 1
```

#### xdr delete dc

The `manage config xdr delete dc DC` command dynamically deletes an XDR datacenter.

```text
Admin+> manage config xdr delete dc DC3

~~~Delete XDR DC DC3~~

         Node|Response

10.0.0.4:3000|ok

Number of rows: 1
```

#### xdr dc add node

The `manage config xdr dc DC add node NODE:PORT` command adds a node dynamically to an XDR datacenter.

```text
Admin+> manage config xdr dc DC3 add node 1.1.1.1:3000

~Add XDR Node 1.1.1.1:3000 to DC DC3~

         Node|Response

10.0.0.4:3000|ok

Number of rows: 1
```

#### xdr dc remove node

The `manage config xdr dc DC remove node NODE:PORT` command removes a node dynamically from an XDR datacenter.

```text
Admin+> manage config xdr dc DC3 remove node 1.1.1.1:3000

~Remove XDR Node 1.1.1.1:3000 from DC DC3~

         Node|Response

10.0.0.4:3000|ok

Number of rows: 1
```

#### xdr dc add namespace

The `manage config xdr dc DC add namespace NODE:PORT` command adds a namespace dynamically to an XDR datacenter.

```text
Admin+> manage config xdr dc DC3 add namespace test

~Add XDR namespace test to DC DC3~

         Node|Response

10.0.0.4:3000|ok

Number of rows: 1
```

#### xdr dc remove namespace

The `manage config xdr dc DC remove namespace NS` command removes a namespace dynamically from an XDR datacenter.

```text
Admin+> manage config xdr dc DC3 remove namespace test

~Remove XDR Namespace test from DC DC3~

         Node|Response

10.0.0.4:3000|ok

Number of rows: 1
```

### jobs

Requires a _data-admin_ [privilege](https://aerospike.com/docs/database/manage/security/rbac/#privileges).

The `manage jobs kill` command aborts jobs running on the Aerospike cluster. Use `show jobs` commands in conjunction with `manage jobs` commands.

#### jobs kill trids

Access control permissions: data-admin

The `manage jobs kill trids TRID1 [TRID2 [...]]` command kills jobs matching the provided transaction IDs.

The command finds the appropriate node and module before sending the request.

Example: kill jobs command output

```text
Admin+> manage jobs kill trids 1343444200604843206 9156474088110606100

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Kill Jobs (2021-10-20 23:57:22 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

         Node|     Transaction ID|Namespace|Module| Type|                            Response

10.0.0.1:3000|9156474088110606100|      bar|scan  |basic|ok

10.0.0.2:3000|1343444200604843206|      bar|query |basic|Failed to kill job : job not active.

Number of rows: 1
```

The first is a scan on node 10.0.0.1 and the second is a query on node 10.0.0.2.

### jobs kill all

The `manage jobs kill all` command kills all jobs from the specified module.

#### jobs kill all queries

Access control permissions: data-admin

The `manage jobs kill all queries` command kills all query jobs.

::: note
Scans and queries are unified in Database 6.0.0 and later.
:::

```plaintext
Admin+> manage jobs kill all queries

~~~~~~~~~~~~~~~~~~Kill Jobs~~~~~~~~~~~~~~~~~~~

         Node|                        Response

10.0.0.1:3000|ok - number of queries killed: 4

10.0.0.2:3000|ok - number of queries killed: 4

10.0.0.3:3000|ok - number of queries killed: 3

Number of rows: 3
```

#### jobs kill all scans

Access control permissions: data-admin

The `manage jobs kill all scans` command kills all scan jobs.

::: note
Scans and queries were unified in server v. 6.0.0 and after.
:::

```plaintext
Admin+> manage jobs kill all scans

~~~~~~~~~~~~~~~~~Kill Jobs~~~~~~~~~~~~~~~~~~

         Node|                      Response

10.0.0.1:3000|ok - number of scans killed: 4

10.0.0.2:3000|ok - number of scans killed: 4

Number of rows: 2
```

### masking

Access control permissions: masking-admin

Manage data masking rules for protecting sensitive data. All Aerospike nodes must be at Database 8.1.1 or later.

#### add

**Add redact rule**

-   `position` (optional): Position in the string to start the redaction. A positive integer (0 or greater) is counted from the start of the string. A negative integer is counted from the end, with -1 being the last character in the string. Defaults to 0.
    
-   `length` (optional): Number of characters of the string to redact starting at `position`. By default goes to the end of the string.
    
-   `value` (optional): Character to use for redaction. Defaults to `*`. Acceptable values are the printable ASCII characters 33-126 excluding `=`,`;`, and `:`. If violated, some Aerospike features and tools may not function properly.
    
-   `type` (optional): Data type of the bin. Defaults to `string`.
    

Command format:

Add a redact rule

```bash
Admin+> manage masking add redact [position POSITION] [length LENGTH] [value REPLACEMENT] namespace NAMESPACE set SET bin BIN [type TYPE]
```

Example:

```plaintext
Admin+> manage masking add redact position 0 length 4 namespace test set demo bin secret1
```

**Add constant rule**

-   `value` (optional): The string to use for the mask. By default the string is masked as an empty string. Acceptable values are the printable ASCII characters 33-126 excluding `=`,`;`, and `:`. If violated, some Aerospike features and tools may not function properly.
-   `type` (optional): Data type of the bin. Defaults to string.

Command format:

Add a constant rule

```bash
Admin+> manage masking add constant [value VALUE] namespace NAMESPACE set SET bin BIN [type TYPE]
```

Example:

```plaintext
Admin+> manage masking add constant namespace test set demo bin secret3
```

#### drop

Remove a masking rule from a bin.

-   `type` (optional): Data type of the bin. Defaults to string.

Command format:

Drop rule

```bash
Admin+> manage masking drop namespace NAMESPACE set SET bin BIN [type TYPE]
```

Examples:

```plaintext
Admin+> manage masking drop namespace test set demo bin secret1

Admin+> manage masking drop namespace test set demo bin secret3 type string
```

#### show masking

Display masking rules. Optionally filter by namespace and set.

Command format:

Show masking rules

```bash
Admin+> show masking [namespace NAMESPACE [set SET]]
```

Example:

```plaintext
Admin> show masking namespace test

Namespace| Set | Bin |  Type|Function

test     |demo |bin1 |string|redact position 0 length 4

test     |demo |bin2 |string|redact position 4 length 3

test     |demo |bin3 |string|constant
```

### quiesce

Requires a _sys-admin_ [privilege](https://aerospike.com/docs/database/manage/security/rbac/#privileges).

The `manage quiesce` command quiesces a cluster node and reverts the effects of a quiesce.

#### quiesce with

Access control permissions: sys-admin

The `manage quiesce with node1 [node2 [...]]` command stops a node from participating as a replica after the next recluster event. For more information, see [quiesce](https://aerospike.com/docs/database/reference/info#quiesce).

```text
Admin+> manage quiesce with 192.168.173.203

~~~~~~~~Quiesce Nodes~~~~~~~~

                Node|Response

192.168.173.203:3000|ok

Number of rows: 1

Run "manage recluster" for your changes to take affect.
```

#### quiesce undo with

Access control permissions: sys-admin

The `manage quiesce undo with node1 [node2 [...]]` command reverts the effect of a quiesce on the next recluster event. For more information, see [quiesce-undo](https://aerospike.com/docs/database/reference/info#quiesce-undo).

```text
Admin+> manage quiesce undo with 192.168.173.203

~~~~Undo Quiesce for Nodes~~~

                Node|Response

192.168.173.203:3000|ok

Number of rows: 1

Run "manage recluster" for your changes to take affect.
```

### recluster

Requires a _sys-admin_ [privilege](https://aerospike.com/docs/database/manage/security/rbac/#privileges) privilege.

The `manage recluster` command forces the cluster to advance and rebalance. For more information, see [recluster](https://aerospike.com/docs/database/reference/info#recluster).

```text
Admin+> manage recluster

Successfully started recluster
```

### revive

Access control permissions: sys-admin

The `manage revive` command revives dead partitions in a namespace running in strong consistency mode.

```text
Admin+> manage revive ns test

~Revive Namespace Partitions~

          Node|Response

localhost:3000|ok

Number of rows: 1

Run "manage recluster" for your changes to take affect.
```

### roster

Requires a _sys-admin_ [privilege](https://aerospike.com/docs/database/manage/security/rbac/#privileges).

The `manage roster` commands are used to modify the pending roster. To commit the pending roster to the current roster, a recluster event must occur. To manually trigger a recluster event, use the `manage recluster` command. Commands that modify the roster are only sent to the principal node. Use the `show roster` command in conjunction with `manage roster` commands.

#### roster stage observed ns

Access control permissions: sys-admin

The `manage roster stage observed ns NAMESPACE` command assigns the observed nodes and configured rack-ids to the pending roster. This helps you quickly initialize a strong consistency cluster.

```plaintext
Admin+> manage roster stage observed ns test

You are about to set the pending-roster for namespace test to: BB9040016AE4202@1, BB9020016AE4202@2, BB9010016AE4202@3

Confirm that you want to proceed by typing x5e360, or cancel by typing anything else.

x5e360

Pending roster now contains observed nodes.

Run "manage recluster" for your changes to take affect.
```

#### roster stage nodes

Access control permissions: sys-admin

The `manage roster stage nodes NODE1[@RACK1] [NODE2[@RACK2] [...]] ns NAMESPACE` command overwrites the pending roster with any list of nodes.

The `--warn` flag is on by default because of the importance of this command. To disable the warning, use the `--no-warn` flag.

```plaintext
Admin+> manage roster stage nodes BB9040016AE4202@1, BB9020016AE4202@2, BB9010016AE4202@3 ns bar

WARNING: The following node(s) are not found in the observed list or have a

different configured rack-You are about to set the pending-roster for namespace bar to: BB9040016AE4202@1, BB9020016AE4202@2, BB9010016AE4202@3

Confirm that you want to proceed by typing 5de1f4, or cancel by typing anything else.

5de1f4

Pending roster successfully set.

Run "manage recluster" for your changes to take affect.
```

#### roster add nodes

Access control permissions: sys-admin

The `manage roster add nodes NODE1[@RACK1] [NODE2[@RACK2] [...]] ns NAMESPACE` command adds nodes to the pending roster.

The `--warn` flag is on by default because of the importance of this command. To disable the warning, use the `--no-warn` flag.

```plaintext
Admin+> manage roster add nodes BB9040016AE4202@1, BB9020016AE4202@2, BB9010016AE4202@3 ns bar --no-warn

Node(s) successfully added to pending-roster.

Run "manage recluster" for your changes to take affect.
```

#### roster remove nodes

Access control permissions: sys-admin

The `manage roster remove nodes NODE1[@RACK1] [NODE2[@RACK2] [...]] ns NAMESPACE` command removes nodes from the pending roster.

The `--warn` flag is on by default because of the importance of this command. To disable the warning, use the `--no-warn` flag.

```plaintext
Admin+> manage roster remove nodes BB9040016AE4202@1, BB9020016AE4202@2, BB9010016AE4202@3 ns bar --no-warn

Node(s) successfully removed from pending-roster.

Run "manage recluster" for your changes to take affect.
```

### sindex

The `manage sindex` commands are used to create and delete secondary indexes (sindex) from an Aerospike cluster. The `show sindex` command is used in conjunction with `manage sindex` commands.

#### sindex create

Access control permissions: user-admin

The `manage sindex create BIN-TYPE INDEX-NAME ns NAMESPACE [set SET] bin BIN-NAME [in INDEX-TYPE] [ctx CONTEXT]` command is used for creating secondary indexes (sindex). The `BIN-TYPE` is the bin type of the provided `BIN-NAME` and is one of the following values:

-   `numeric`
-   `string`
-   `geo2dsphere`
-   `blob`

The `NS` argument defines the namespace to create the sindex on. Optionally, `SET` defines the set to create the secondary index on.

::: note
In Database 6.1.0 and later, not providing a `SET` creates a sindex on all records in a namespace regardless of their set. Prior to Database 6.1.0 not providing a `SET` created a sindex on all records in a namespace without a set (in the null set).
:::

The `BIN-NAME` defines the bin to create the `secondary` index on.  
The `INDEX-TYPE` defines how a bin’s value is used to create a secondary index. Possible values are:

-   `list` to use the elements of a list as keys
-   `mapkeys` to use the keys of a map as keys
-   `mapvalues` to use the values of a map as keys.

The default specifies to use the contents of a bin as keys.

In Aerospike Database 6.1.0 and Tools 7.2.0 and later, you can create sindexes on CDTs. CDTs are referenced using a context. The `CONTEXT` is a space-separated list.  
Possible elements of the list are as follows:

-   `list_index(INDEX)`
-   `list_rank(RANK)`
-   `list_value(VALUE)`
-   `map_index(INDEX)`
-   `map_rank(RANK)`
-   `map_key(KEY)`
-   `map_value(VALUE)`

Where `INDEX` and `RANK` are integers, `KEY` is an integer, string, or base64 encoded byte string, and `VALUE` includes the values of `KEY` with the addition of booleans and floats. By default, if you provide a value for `KEY` or `VALUE`, they will be interpreted as a string unless the following specifiers are used: `int(INT)`, `bytes(BASE64)`, `bool(TRUE|FALSE)`, or `float(FLOAT)`.

For example: `int(1)`, `bytes(YWVyb3NwaWtlCg==)`, `bool(true)`, or `float(3.14159)`.

The `manage sindex` commands create, show, and delete secondary indexes. The `show sindex` command is used in conjunction with `manage sindex` commands.

#### Create a secondary index

```text
# To create a bin index

manage sindex create BIN-TYPE INDEX-NAME ns NAMESPACE [set SET] bin BIN-NAME [in INDEX-TYPE] [ctx CONTEXT | ctx_base64 B64CTX]

# To create an expression index

manage sindex create BIN-TYPE INDEX-NAME ns NAMESPACE [set SET] [in INDEX-TYPE] exp_base64 B64EXP
```

Parameters:

-   (required) `BIN-TYPE` (AKA ktype) is the expected data type of the data to be indexed. Records where the ktype is mismatched are ignored, such as an integer value when a string is expected. It can be one of the following:
    -   `numeric`
    -   `string`
    -   `geo2dsphere`
    -   `blob`
-   (required) `INDEX-NAME`
-   (required) `NS` specifies the namespace to create the secondary index on.
-   (optional) `SET` specifies the set to create the secondary index on.
-   (conditional) `BIN-NAME` specifies the bin to create the secondary index on. Required for bin indexes; avoid for expression indexes.
-   (optional) `INDEX-TYPE` (AKA itype) specifies if the secondary index should expect a single ktype (`BIN-TYPE`) value, or instructs it to collect multiple values (matching the ktype) from a list or map collection data type (CDT). The record isn’t indexed if the itype is mismatched, such as a single value when a list of values is expected. It can be one of the following:
    -   `list` expect a list and index its values matching the ktype.
    -   `mapkeys` expect a map and index its keys matching the ktype.
    -   `mapvalues` expect a map and index its values matching the ktype.
-   (conditional) `B64EXP` a base64-encoded expression that is used to compute the value to be indexed. Required for expression indexes; avoid for bin indexes. The given itype and ktype are enforced on this expression-computed value. The given itype and ktype are enforced while indexing this element.
-   (optional) `B64CTX` provides a base64-encoded context, the path to an embedded element of a list or map CDT bin. Optional for bin indexes; avoid for expression indexes. Mutually exclusive with `ctx CONTEXT` - one or the other is used.
-   (optional) `CONTEXT` describes a human-readable path to an embedded element of a list or map CDT bin. The given itype and ktype are enforced while indexing this element. Optional for bin indexes; avoid for expression indexes.
    -   Uses a space-separated list of the following contexts:
        -   `list_index(INDEX)`
        -   `list_rank(RANK)`
        -   `list_value(VALUE)`
        -   `map_index(INDEX)`
        -   `map_rank(RANK)`
        -   `map_key(KEY)`
        -   `map_value(VALUE)`
    -   Where:
        -   `INDEX` and `RANK` are integers
        -   `KEY` is an integer, string, or base64 encoded byte string
        -   `VALUE` includes the values of `KEY` with the addition of booleans and floats.
        -   By default, if you provide a value for `KEY` or `VALUE`, they will be interpreted as a string unless you use the following specifiers: `int(INT)`, `bytes(BASE64)`, `bool(TRUE|FALSE)`, or `float(FLOAT)`. For example: `int(1)`, `bytes(YWVyb3NwaWtlCg==)`, `bool(true)`, or `float(3.14159)`.

Example record in the set 'donor'

```text
{

  name: "Austin Albertson",

  age: 57,

  campaign1: 150,

  campaign2: 100,

  campaign3: 75,

  address: {

    state: "CA",

    city: "Los Altos",

    zip: 94023,

  }

}
```

##### Bin index on the age of a donor

```text
Admin+> manage sindex create numeric dnr-age-idx ns test set donor bin age

Use 'show sindex' to confirm 'dnr-age-idx' was created successfully.
```

##### Index the embedded zip code

The zip code is embedded inside the address map bin, and requires a context describing the path to this element.

```text
Admin+> manage sindex create numeric dnr-zip-idx ns test set donor bin address ctx map_key(zip)

Use 'show sindex' to confirm 'dnr-zip-idx' was created successfully.
```

Alternatively, the equivalent base64-encoded context can be used to create this index.

```text
Admin+> manage sindex create numeric dnr-zip-idx ns test set donor bin address ctx_base64 kiKkA3ppcA==

Use 'show sindex' to confirm 'dnr-zip-idx' was created successfully.
```

##### Add an expression index on the campaign bins

```java
Expression campaignTotal = Exp.build(

  Exp.add(Exp.intBin("campaign1"), Exp.intBin("campaign2"), Exp.intBin("campaign3"));

);

System.out.println(campaignTotal.getBase64());

// lBSTUQKpY2FtcGFpZ24xk1ECqWNhbXBhaWduMpNRAqljYW1wYWlnbjM=
```

The base64-encoded expression is used to create the expression index

```text
Admin+> manage sindex create numeric dnr-sum-idx ns test set donor exp_base64 lBSTUQKpY2FtcGFpZ24xk1ECqWNhbXBhaWduMpNRAqljYW1wYWlnbjM=

Use 'show sindex' to confirm 'dnr-sum-idx' was created successfully.
```

#### Drop a secondary index

Requires the _data-admin_ or _sys-admin_ [privilege](https://aerospike.com/docs/database/manage/security/rbac/#privileges).

The `manage sindex delete INDEX-NAME ns NAMESPACE [set SET]` command deletes secondary indexes (sindex). The `ns` argument is the namespace the sindex was created on. If the sindex was also created on a set, the `set` argument is required.

```text
Admin+> manage sindex delete dnr-age-idx ns test set donor

Successfully deleted sindex dnr-age-idx
```

### truncate

Requires a _data-admin_ [privilege](https://aerospike.com/docs/database/manage/security/rbac/#privileges).

The `manage truncate` command truncates or reverses truncations for a namespace or namespace set in the Aerospike cluster. The command only sends requests to the principal node.

#### truncate ns

Access control permissions: data-admin, write

The `manage truncate ns NAMESPACE [set SET] [before <iso-8601-or-unix-epoch> iso-8601|unix-epoch]` command deletes records in the given namespace or namespace set.

The deletes are durable and preserve record deletions in the Enterprise Edition only. For more information, see [truncate-namespace](https://aerospike.com/docs/database/reference/info#truncate-namespace) and [truncate](https://aerospike.com/docs/database/reference/info#truncate).

If the `before` modifier is provided, the command deletes every record in the given namespace or namespace set where the last update time (LUT) is older than the given time. If the `before` modifier is not provided, the current time is used. The `before` modifier accepts iso-8601 formatted or unix-epoch datetime followed by the literal `iso-8601` or `unix-epoch` respectively. A `unix-epoch` can be in seconds (`1622054620`), milliseconds (`1622054620.mmm`), microseconds (`1622054620.mmmuuu`), or nanoseconds (`1622054620.mmmuuunnn`).

The `--warn` flag is on by default because of the importance of this command. Use the `--no-warn` flag to disable the warning.

::: note
To disable the warning when writing a script that is run from outside `asadm`, pass the `--no-warn` flag to the `manage truncate` command instead of passing it to `asadm`.

Command format:

```plaintext
asadm --enable  -e "manage truncate ns NAMESPACE set SET --no-warn" -h "HOST"
```
:::

The following example truncates records in the namespace `test` with LUT earlier than May 5th 2021 at 6:43:40 PM UTC.

Example: Truncate records

```text
Admin> info namespace object

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Namespace Object Information (2021-05-26 20:25:52 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Namespace|       Node|Rack|  Repl|   Total|~~~~~~~~~~Objects~~~~~~~~~~~|~~~~~~~~~Tombstones~~~~~~~~|~~~~Pending~~~~

         |           |  ID|Factor| Records|  Master|  Prole|Non-Replica| Master|  Prole|Non-Replica|~~~~Migrates~~~

         |           |    |      |        |        |       |           |       |       |           |     Tx|     Rx

bar      |ubuntu:3000|   0|     1| 0.000  | 0.000  |0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

bar      |           |    |      | 0.000  | 0.000  |0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

test     |ubuntu:3000|   0|     1|98.297 K|98.297 K|0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

test     |           |    |      |98.297 K|98.297 K|0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

Number of rows: 2

Admin> enable --warn

Admin+> manage truncate ns test before 2021-05-26T13:24:40-07:00 iso-8601

You are about to truncate up to 98297 records from namespace test with LUT before 13:24:40.000000 UTC-07:00 on May 26, 2021

Confirm that you want to proceed by typing x927c0, or cancel by typing anything else.

x927c0

Successfully started truncation for namespace test

Admin+> info namespace object

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Namespace Object Information (2021-05-26 20:26:35 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Namespace|       Node|Rack|  Repl|  Total|~~~~~~~~~~Objects~~~~~~~~~~|~~~~~~~~~Tombstones~~~~~~~~|~~~~Pending~~~~

         |           |  ID|Factor|Records| Master|  Prole|Non-Replica| Master|  Prole|Non-Replica|~~~~Migrates~~~

         |           |    |      |       |       |       |           |       |       |           |     Tx|     Rx

bar      |ubuntu:3000|   0|     1|0.000  |0.000  |0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

bar      |           |    |      |0.000  |0.000  |0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

test     |ubuntu:3000|   0|     1|0.000  |0.000  |0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

test     |           |    |      |0.000  |0.000  |0.000  |    0.000  |0.000  |0.000  |    0.000  |0.000  |0.000

Number of rows: 2
```

#### truncate undo ns

Access control permissions: data-admin, write

The `manage truncate undo ns NAMESPACE [set SET]` command undoes a previous truncate event by removing the associated System Meta Data (SMD) file entry and allowing some previously truncated records to be resurrected on the next cold restart. This only works for records that have not had their persisted storage block overwritten. For more information, see [truncate-namespace-undo](https://aerospike.com/docs/database/reference/info#truncate-namespace-undo) and [truncate-undo](https://aerospike.com/docs/database/reference/info#truncate-undo).

```text
Admin+> manage truncate ns test undo

Successfully triggered undoing truncation for namespace test on next cold restart
```

### udfs

Requires a _udf-admin_ [privilege](https://aerospike.com/docs/database/manage/security/rbac/#privileges) privilege.

Use the `manage udfs` commands to add or remove UDF modules to or from an Aerospike cluster. Use [show udfs](#udfs-1) to see registered modules or list a module’s contents.

#### udfs add

Access control permissions: data-admin or sys-admin

The `manage udfs add MODULE-NAME path MODULE-PATH` command allows a user to register a UDF module. The `MODULE-NAME` must include a file extension. The `path` argument can be a relative or absolute path and are checked in that order. This command can also be used to update an existing module.

```text
Admin+> manage udfs add test.lua path path/to/test.lua

Successfully added UDF test.lua
```

#### udfs remove

Access control permissions: data-admin or sys-admin

The `manage udfs remove MODULE-NAME` command allows a user to un-register an existing UDF module.

```text
Admin+> manage udfs remove test.lua

Successfully removed UDF test.lua
```

## pager

The `pager` command enables scrollable output tables. This command gives an option to scroll each output table vertically or horizontally.

Use the following subcommands with `pager`:

-   `off`: Disable paging and prints output normally.
-   `on`: Enable output paging; similar to linux ‘less’.
-   `scroll`: Display output in scrolling mode.

## show

The `show` commands generally provide a very verbose output about the requested component. Most commands support the `like`modifier. All commands support the `with`modifier with the exceptions of `show users`, `show roles`, `show udfs`, and `show sindex` which only make requests to the principal node.

### best-practices

The `show best-practices` command displays violations of Aerospike’s [Best Practices](https://aerospike.com/docs/database/install/linux).

In the following example, node BB9010016AE4202 is violating two best practices, `swappiness` and `thp-enabled`. Node BB9030016AE4202 and BB9040016AE4202 are not violating any best practices and return `ok`.

Example: show best practices command output

```text
Admin> show best-practices

~Best Practices (2021-09-21 23:55:09 UTC)~

           Node|Response

BB9010016AE4202|swappiness, thp-enabled

BB9030016AE4202|ok

BB9040016AE4202|ok

Number of rows: 3

Following Aerospike's best-practices are required for optimal stability and performance.
```

### config

The `show config` command displays Aerospike configuration settings. By default the command lists all server configuration parameters for security (added in Aerospike Tools 7.0.0, otherwise joined with service), service, network, namespace, and XDR. You can add one of the following sub-commands to limit the output to just those contexts:

-   `namespace`
-   `network`
-   `security`
-   `service`
-   `xdr`

To generate an `aerospike.conf` file from a running cluster, see the `generate` command for [Aerospike Configuration (`asconfig`)](https://aerospike.com/docs/database/tools/asconfig#generate-command).

The following example requests all `network` configuration parameters containing the words _heartbeat_ or _mesh_:

Example: show config network

```text
Admin> show config network like heartbeat mesh

~~~~~~~~~~~~~~~~~~~~~~~~~Network Configuration (2020-12-17 01:07:36 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Node                        |10.0.0.1:3000|10.0.0.2:3000|10.0.0.4:3000|10.0.0.5:3000|10.0.0.6:3000

heartbeat.connect-timeout-ms|500          |500          |500          |500          |500

heartbeat.interval          |150          |150          |150          |150          |150

heartbeat.mode              |multicast    |multicast    |multicast    |multicast    |multicast

heartbeat.mtu               |1500         |1500         |1500         |1500         |1500

heartbeat.multicast-group   |239.1.99.200 |239.1.99.200 |239.1.99.200 |239.1.99.200 |239.1.99.200

heartbeat.port              |9918         |9918         |9918         |9918         |9918

heartbeat.protocol          |v3           |v3           |v3           |v3           |v3

heartbeat.timeout           |10           |10           |10           |10           |10

Number of rows: 9
```

We can use the `diff` modifier with `show config` commands to show differences between node configurations.

Example: show config command output

```text
Admin> show config diff

~~~~~~~~~~~~~~~~~~~~~~Service Configuration (2020-12-17 01:09:07 UTC)~~~~~~~~~~~~~~~~~~~~~~

Node   |              10.0.0.1:3000|              10.0.0.2:3000|              10.0.0.4:3000

pidfile|/var/run/aerospike/asd0.pid|/var/run/aerospike/asd1.pid|/var/run/aerospike/asd2.pid

Number of rows: 2

~~~~~~~~~Network Configuration (2020-12-17 01:09:07 UTC)~~~~~~~~~

Node             |  10.0.0.1:3000|  10.0.0.2:3000|  10.0.0.4:3000

heartbeat-address|192.168.120.110|192.168.120.112|192.168.120.113

Number of rows: 2

~~~~~~~~test Namespace Configuration (2020-12-17 01:09:07 UTC)~~~~~~~~~

Node                         |10.0.0.1:3000|10.0.0.2:3000|10.0.0.4:3000

migrate-rx-partitions-initial|4036         |3904         |3614

migrate-tx-partitions-initial|3362         |4096         |4096

Number of rows: 3

~bar Namespace Configuration (2020-12-17 01:09:07 UT~

Node|10.0.0.1:3000|10.0.0.2:3000|10.0.0.4:3000

Number of rows: 1
```

For large clusters, use the `-flip` option to flip output table for simplicity and ease of understanding.

Example: show config command output

```text
Admin> show config namespace like partition -flip

~test Namespace Configuration (2020-12-17 01:19:14 UTC)~~

         Node|partition-tree-sprigs|sindex.num-partitions

10.0.0.1:3000|                  256|                   32

10.0.0.2:3000|                  256|                   32

10.0.0.4:3000|                  256|                   32

10.0.0.5:3000|                  256|                   32

10.0.0.6:3000|                  256|                   32

Number of rows: 5

~~bar Namespace Configuration (2020-12-17 01:19:14 UTC)~~

         Node|partition-tree-sprigs|sindex.num-partitions

10.0.0.1:3000|                  256|                   32

10.0.0.2:3000|                  256|                   32

10.0.0.4:3000|                  256|                   32

10.0.0.5:3000|                  256|                   32

10.0.0.6:3000|                  256|                   32

Number of rows: 5
```

#### config xdr

The `show config xdr` command displays all the available configuration information related to XDR. By default, this command displays XDR configuration, XDR datacenter configuration, and XDR namespace configuration. You may also provide one of the sub-commands: `dc`, `namespace`, and `filter`, to limit the output to a specific context. For example, to see configuration parameters for only `namespace`, use `show config xdr namespace`. All of the commands support the use of the `for`, `like`, and `diff` modifier.

The `show config xdr dc` command displays a new table for each configured datacenter. The command also supports the `for` modifier to filter by datacenter.

Example: XDR datacenter configuration with modifier

```text
Admin> show config xdr dc for dc2 like max

~~~~~~~~~XDR dc2 DC Configuration (2023-02-16 22:37:00 UTC)~~~~~~~~~

Node                      |10.0.0.4:3000|10.0.0.5:3000|10.0.0.6:3000

max-recoveries-interleaved|0            |0            |0

max-used-service-threads  |0            |0            |0

Number of rows: 3
```

The `show config xdr namespace` command displays a new table for each configured XDR namespace. The command also supports the `for` modifier to filter first by namespace and then by datacenter.

Example: show config xdr namespace command output

```text
Admin> show config xdr namespace for test dc2 like sets

~~~~XDR test Namespace Configuration (2023-02-16 22:41:12 UTC)~~~~

Datacenter              |dc2          |dc2          |dc2

Node                    |10.0.0.4:3000|10.0.0.5:3000|10.0.0.6:3000

ignored-sets            |testset      |testset      |testset

ship-only-specified-sets|false        |false        |false

shipped-sets            |             |             |

Number of rows: 5
```

The `show config xdr filter` command displays the XDR filters that are set for a given namespace and datacenter. The command also supports the `for` modifier to filter first by datacenter and then by namespace.

Example: show config xdr filter command for namespace and datacenter

```text
Admin> show config xdr filter

~~~~~~~~~~~~~~~~~~~~~~~XDR Filters (2023-02-16 22:55:02 UTC)~~~~~~~~~~~~~~~~~~~~~~~

Namespace|Datacenter|  Base64 Expression|                                Expression

bar      |dc2       |null               |null

test     |dc2       |kxGRSJMEk1ECo2FnZRU|or(is_tombstone(), ge(bin_int("age"), 21))

Number of rows: 2
```

### distribution

The `show distribution` command displays [histograms](https://aerospike.com/docs/database/reference/info#histogram). It supports `object_size` and `time_to_live` histograms.

For object\_size, use `-b` to get bytewise distribution. For Aerospike Database 4.1.0.1 and earlier, the `-k` option helps to set the maximum number of buckets to show.

In the following example, 10 percent of our objects in _test_ and _bar_ are set to expire in 427100 and 425500 seconds, respectively.

Example: show distribution command with time\_to\_live histogram

```text
Admin> show distribution time_to_live

~~~~~~~~~~~~test - TTL Distribution in Seconds (2020-12-18 02:14:24 UTC)~~~~~~~~~~~

   Percentage of records having ttl less than or equal to value measured in Seconds

         Node|   10%|   20%|   30%|   40%|   50%|   60%|   70%|   80%|   90%|  100%

10.0.0.1:3000|427100|427100|427100|427100|427100|427100|427100|427100|427100|427100

10.0.0.2:3000|427100|427100|427100|427100|427100|427100|427100|427100|427100|427100

10.0.0.3:3000|427100|427100|427100|427100|427100|427100|427100|427100|427100|427100

10.0.0.4:3000|427100|427100|427100|427100|427100|427100|427100|427100|427100|427100

10.0.0.6:3000|427100|427100|427100|427100|427100|427100|427100|427100|427100|427100

Number of rows: 5

~~~~~~~~~~~~bar - TTL Distribution in Seconds (2020-12-18 02:14:24 UTC)~~~~~~~~~~~~

   Percentage of records having ttl less than or equal to value measured in Seconds

         Node|   10%|   20%|   30%|   40%|   50%|   60%|   70%|   80%|   90%|  100%

10.0.0.1:3000|425500|425500|425500|425500|425500|425500|425500|425500|425500|425500

10.0.0.2:3000|425500|425500|425500|425500|425500|425500|425500|425500|425500|425500

10.0.0.3:3000|425500|425500|425500|425500|425500|425500|425500|425500|425500|425500

10.0.0.4:3000|425500|425500|425500|425500|425500|425500|425500|425500|425500|425500

10.0.0.6:3000|425500|425500|425500|425500|425500|425500|425500|425500|425500|425500

Number of rows: 5
```

### jobs

Access control permissions: `data-admin`

The `show jobs [scan|query|sindex-builder]` command displays current and past jobs running on the aerospike cluster and are used in conjunction with the `manage jobs` controller. To make viewing easier, run the `pager on` command first.

By default it returns all job modules. Each module table is organized in a number of ways for easier viewing. It groups the jobs by their `Namespace` and `Type`. Groups are separated by horizontal dashes. Jobs are further organized left to right by their `Progress %` and `Time Since Done`.

Scan jobs are displayed until evicted by another scan job. You can configure the maximum number of scan jobs stored per node with [query-max-done](https://aerospike.com/docs/database/reference/config#service__query-max-done). In contrast, query jobs are only displayed while they are running.

::: note
Sindex-builder jobs were removed in Database 5.7.0.
:::

```plaintext
Admin+> show jobs

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Scan Jobs (2021-10-20 23:08:14 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Node              |10.0.0.3:3000       |10.0.0.2:3000                   |10.0.0.1:3000

Namespace         |bar                 |bar                             |bar

Module            |scan                |scan                            |scan

Type              |basic               |basic                           |basic

Progress %        |100.0               |100.0                           |100.0

Transaction ID    |1583278212325152813 |1554763604191518487             |1554763604191518487

Time Since Done   |00:33:26            |00:34:42                        |00:34:43

active-threads    |0                   |0                               |0

from              |10.0.22.1+52252     |10.0.22.1+34048                 |10.0.22.1+40340

n-pids-requested  |1.366 K             |1.365 K                         |1.365 K

net-io-bytes      |37.940 MB           |8.505 MB                        |8.048 MB

priority          |0                   |0                               |0

recs-failed       |0.000               |0.000                           |0.000

recs-filtered-bins|0.000               |0.000                           |0.000

recs-filtered-meta|0.000               |0.000                           |0.000

recs-succeeded    |333.874 K           |75.826 K                        |71.779 K

recs-throttled    |333.874 K           |75.826 K                        |71.779 K

rps               |0.000               |0.000                           |0.000

run-time          |00:00:05            |00:00:01                        |00:00:01

socket-timeout    |00:00:30            |00:00:30                        |00:00:30

status            |done(ok)            |done(abandoned-response-timeout)|done(abandoned-response-timeout)

-------------------------------------------------------------------------------------------------------------------

Node              |10.0.0.3:3000       |10.0.0.2:3000                   |10.0.0.1:3000

Namespace         |test                |test                            |test

Module            |scan                |scan                            |scan

Type              |basic               |basic                           |basic

Progress %        |100.0               |100.0                           |100.0

Transaction ID    |17709699727074092152|17709699727074092152            |17709699727074092152

Time Since Done   |00:47:59            |00:47:59                        |00:47:59

active-threads    |0                   |0                               |0

from              |10.0.22.1+51868     |10.0.22.1+33716                 |174.22.22.1+40008

n-pids-requested  |1.366 K             |1.365 K                         |1.365 K

net-io-bytes      |438.377 KB          |443.145 KB                      |442.441 KB

priority          |0                   |0                               |0

recs-failed       |0.000               |0.000                           |0.000

recs-filtered-bins|0.000               |0.000                           |0.000

recs-filtered-meta|0.000               |0.000                           |0.000

recs-succeeded    |3.308 K             |3.349 K                         |3.343 K

recs-throttled    |3.308 K             |3.349 K                         |3.343 K

rps               |0.000               |0.000                           |0.000

run-time          |00:00:00            |00:00:00                        |00:00:00

socket-timeout    |00:00:30            |00:00:30                        |00:00:30

status            |done(ok)            |done(ok)                        |done(ok)

Number of rows: 42

~~~~~~~~~~~~~~~~~~~~~Query Jobs (2021-10-20 23:08:14 UTC)~~~~~~~~~~~~~~~~~~~~~

Node              |10.0.0.1:3000      |10.0.0.3:3000      |10.0.0.2:3000

Namespace         |bar                |bar                |bar

Module            |query              |query              |query

Progress %        |0.0                |0.0                |0.0

Transaction ID    |2143237531128163351|2143237531128163351|2143237531128163351

Time Since Done   |00:00:00           |00:00:00           |00:00:00

active-threads    |0                  |0                  |0

net-io-bytes      |2.400 MB           |2.087 MB           |2.681 MB

priority          |10                 |10                 |10

recs-failed       |0.000              |0.000              |0.000

recs-filtered-bins|0.000              |0.000              |0.000

recs-filtered-meta|0.000              |0.000              |0.000

recs-succeeded    |32.558 K           |29.274 K           |36.467 K

recs-throttled    |0.000              |0.000              |0.000

rps               |0.000              |0.000              |0.000

run-time          |00:00:07           |00:00:07           |00:00:07

set               |testset            |testset            |testset

sindex-name       |a-bar-index        |a-bar-index        |a-bar-index

socket-timeout    |00:00:00           |00:00:00           |00:00:00

status            |active             |active             |active

Number of rows: 20
```

### latencies

The `show latencies` command displays [latency](https://aerospike.com/docs/database/reference/info#latencies) characteristics of reads, writes, queries, replication, and UDFs.

Change the number of latency buckets shown using the `-b` flag. Use the `-e` flag to set the exponential increment used to calculate the value assigned to each latency bucket. If [configuration-enabled-benchmarks](https://aerospike.com/docs/database/observe/latency#configuration-enabled-benchmarks) are enabled, you can view them with the `-v` flag.

Example: Verbose read latency with eight buckets and with latency increment of 2

```text
Admin> show latencies -v -b 8 -e 2 like read

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Latency  (2020-12-17 19:18:25 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Namespace|Histogram|         Node|ops/sec|>1ms|>4ms|>16ms|>64ms|>256ms|>1024ms|>4096ms|>16384ms

bar      |read     |10.0.0.1:3000|455.4  |1.36|0.07|0.02 |0.0  |0.0   |0.0    |0.0    |0.0

bar      |read     |10.0.0.2:3000|1047.1 |3.5 |0.16|0.02 |0.0  |0.0   |0.0    |0.0    |0.0

bar      |read     |10.0.0.4:3000|1203.3 |1.51|0.13|0.02 |0.0  |0.0   |0.0    |0.0    |0.0

bar      |read     |10.0.0.5:3000|1241.3 |3.25|0.15|0.0  |0.0  |0.0   |0.0    |0.0    |0.0

bar      |read     |10.0.0.6:3000|946.2  |0.42|0.0 |0.0  |0.0  |0.0   |0.0    |0.0    |0.0

         |         |             |1241.3 |3.5 |0.16|0.02 |0.0  |0.0   |0.0    |0.0    |0.0

test     |read     |10.0.0.1:3000|1280.8 |1.52|0.11|0.01 |0.0  |0.0   |0.0    |0.0    |0.0

test     |read     |10.0.0.2:3000|841.6  |3.94|0.15|0.0  |0.0  |0.0   |0.0    |0.0    |0.0

test     |read     |10.0.0.4:3000|517.1  |0.19|0.0 |0.0  |0.0  |0.0   |0.0    |0.0    |0.0

test     |read     |10.0.0.5:3000|523.7  |0.31|0.0 |0.0  |0.0  |0.0   |0.0    |0.0    |0.0

test     |read     |10.0.0.6:3000|733.1  |0.45|0.05|0.0  |0.0  |0.0   |0.0    |0.0    |0.0

         |         |             |1280.8 |3.94|0.15|0.01 |0.0  |0.0   |0.0    |0.0    |0.0

Number of rows: 10
```

The following example looks at the latency of `writes-master` with the -v option if they have been enabled. For more information, see [Write transaction analysis](https://aerospike.com/docs/database/observe/latency#write-transaction-analysis):

Example: latency command with -v option

```text
Admin> show latencies -v like write-master

~~~~~~~~~~~~~~Latency  (2020-12-17 02:07:41 UTC)~~~~~~~~~~~~

Namespace|   Histogram|         Node|ops/sec|>1ms|>8ms|>64ms

test     |write-master|10.0.0.1:3000|0.0    |0.0 |0.0 |0.0

test     |write-master|10.0.0.2:3000|0.0    |0.0 |0.0 |0.0

test     |write-master|10.0.0.4:3000|0.0    |0.0 |0.0 |0.0

test     |write-master|10.0.0.5:3000|0.0    |0.0 |0.0 |0.0

test     |write-master|10.0.0.6:3000|0.0    |0.0 |0.0 |0.0

         |            |             |0.0    |0.0 |0.0 |0.0

Number of rows: 5
```

The `show latencies` command supports `for` modifier to display namespace wise latency. It also shows aggregate latency for input namespaces filtered by `for`.

Example: show latencies command with filter

```text
Admin> show latencies for te b like write

~~~~~~~~~~~~Latency  (2020-12-17 02:43:52 UTC)~~~~~~~~~~~~

Namespace|Histogram|         Node|ops/sec| >1ms|>8ms|>64ms

bar      |write    |10.0.0.1:3000|2314.0 |4.78 |0.06|0.0

bar      |write    |10.0.0.2:3000|2203.2 |26.16|0.31|0.0

bar      |write    |10.0.0.4:3000|1767.5 |4.43 |0.04|0.0

bar      |write    |10.0.0.5:3000|1525.3 |11.84|0.09|0.0

bar      |write    |10.0.0.6:3000|1484.8 |4.26 |0.05|0.0

         |         |             |2314.0 |26.18|0.31|0.0

test     |write    |10.0.0.1:3000|0.0    |0.0  |0.0 |0.0

test     |write    |10.0.0.2:3000|0.0    |0.0  |0.0 |0.0

test     |write    |10.0.0.4:3000|126.7  |6.55 |0.32|0.0

test     |write    |10.0.0.5:3000|363.1  |13.99|0.11|0.0

test     |write    |10.0.0.6:3000|319.4  |9.89 |0.19|0.0

         |         |             |363.1  |13.99|0.32|0.0

Number of rows: 10
```

The rows without namespace name or histogram show aggregate latency. Though not visible here, these rows are displayed with blue font.

### latency

Removed from `asadm` 0.7.0.

The `show latency` command displays [latency](https://aerospike.com/docs/database/reference/info#latency) characteristics of reads, writes, and proxies.

We can get latency for specific time range in intervals by using parameters `-f`, `-d` and `-t`. You can also set `-m` to display latency output machine wise. Default display is histogram name wise.

Example: Latency of writes\_master

```text
Admin> show latency like writes_master

~~~~~~~~~~~~~~~writes_master Latency (2018-03-02 08:28:09 UTC)~~~~~~~~~~~~~~~~

                    Node                  Time   Ops/Sec  %>1Ms  %>8Ms  %>64Ms

                       .                  Span         .      .      .       .

u10.aerospike.local:3000    08:27:58->08:28:08    2044.7   1.09    0.0     0.0

u12.aerospike.local:3000    08:27:58->08:28:08    2012.6   0.77    0.0     0.0

u13.aerospike.local:3000    08:27:58->08:28:08    1968.9   1.03    0.0     0.0

Number of rows: 3
```

The `show latency` command supports the `for` modifier to display namespace-wise latency. It also shows aggregate latency for input namespaces (filtered by `for`).

Example: show latency with modifier

```text
Admin> show latency for te b like query

~~~~~~~~~~~~~~~~~~~~~~~~~~query Latency (2018-03-02 08:28:09 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~

                       Node   Namespace                 Time   Ops/Sec  %>1Ms  %>8Ms  %>64Ms

                          .           .                 Span         .      .      .       .

1.0.0.127.in-addr.arpa:3000   bar         08:27:58->08:28:08     295.2    2.0    0.0     0.0

1.0.0.127.in-addr.arpa:3000   test        08:27:58->08:28:08     100.0    2.7    0.0     0.0

1.0.0.127.in-addr.arpa:3000               08:27:58->08:28:08     395.2   2.18    0.0     0.0

Number of rows: 3
```

The third row without namespace name is aggregate latency for test and bar namespace.

### mapping

The `show mapping` command displays mapping from IP to Node-ID and Node-ID to IPs. By default it displays both maps, but sub-commands ip, and node will confine the output to a single map. You can also use `like` modifier to input substring of expected IP or Node-ID.

Example: IP to Node-ID mapping

```text
Admin> show mapping ip like 231 233

~IP to NODE-ID Mappings (2020-12-18 00:49:14 UTC)~

                 IP|        Node ID

172.16.245.231:3000|BB9010016AE4202

172.16.245.233:3000|BB9020016AE4202

Number of rows: 2
```

Example: Node-ID to IP mapping

```text
Admin> show mapping node like BB

~NODE-ID to IPs Mappings (2020-12-18 00:50:43 UTC)~

        Node ID|             IP

BB9010016AE4202|  10.0.0.1:3000

Number of rows: 1
```

The output displays all available endpoints for Node.

### pmap

The `show pmap` command displays partition map analysis of the Aerospike cluster.

Example: show pmap command output

```text
Admin> show pmap

~~~~~~~~~~~~Partition Map Analysis (2020-12-18 01:12:36 UTC)~~~~~~~~~~~

Namespace|         Node| Cluster Key|~~~~~~~~~~~~Partitions~~~~~~~~~~~~

         |             |            |Primary|Secondary|Unavailable|Dead

bar      |10.0.0.1:3000|33718FC58CD6|    791|      799|          0|   0

bar      |10.0.0.2:3000|33718FC58CD6|    868|      822|          0|   0

bar      |10.0.0.3:3000|33718FC58CD6|    839|      862|          0|   0

bar      |10.0.0.4:3000|33718FC58CD6|    800|      780|          0|   0

bar      |10.0.0.6:3000|33718FC58CD6|    798|      833|          0|   0

bar      |             |            |   4096|     4096|          0|   0

test     |10.0.0.1:3000|33718FC58CD6|    791|      799|          0|   0

test     |10.0.0.2:3000|33718FC58CD6|    868|      822|          0|   0

test     |10.0.0.3:3000|33718FC58CD6|    839|      862|          0|   0

test     |10.0.0.4:3000|33718FC58CD6|    800|      780|          0|   0

test     |10.0.0.6:3000|33718FC58CD6|    798|      833|          0|   0

test     |             |            |   4096|     4096|          0|   0

Number of rows: 10
```

-   Primary Partitions: Total number of primary partitions for a specific namespace on that node.
-   Secondary Partitions: Total number of secondary partitions for a specific namespace on that node.
-   Unavailable Partitions: The number of partitions that are unavailable when roster nodes are missing.
-   Dead Partitions: The number of partitions that are unavailable when all roster nodes are present.

### racks

The `show racks` command displays a namespaces’ rack-ids and the nodes assigned to each. This is particularly useful in rack-aware configurations.

```plaintext
Admin> show racks

~~~~~~~~~~~~~~~~Racks (2021-10-21 20:33:28 UTC)~~~~~~~~~~~~~~~~~

Namespace|Rack|                                            Nodes

         |  ID|

bar      |4   |BB9040016AE4202, BB9020016AE4202, BB9010016AE4202

test     |2   |BB9040016AE4202, BB9010016AE4202

Number of rows: 2
```

### roles

Access control permissions: `user-admin`

The `show roles` command displays roles along with associated privileges, allowlists, and quotas as returned by the principal node. `show roles` can be used in conjunction with `manage acl roles` to perform role administration.

```text
Admin+> show roles

~~~~~~~~~~~~~~~~~~~~~~~~~~~Roles (2021-04-21 22:28:01 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~

          Role|                                       Privileges|Allowlist|~~~Quotas~~

              |                                                 |         | Read|Write

read          |                                             read|       --|--   |--

read-write    |                                       read-write|       --|--   |--

read-write-udf|                                   read-write-udf|       --|--   |--

reader        |                                             read|  1.1.1.1|10000|1

root          |    user-admin, sys-admin, data-admin, read-write|       --|--   |--

superuser     |user-admin, sys-admin, data-admin, read-write-udf|       --|--   |--

sys-admin     |                                        sys-admin|       --|--   |--

user-admin    |                                       user-admin|       --|--   |--

write         |                                            write|       --|--   |--

writer        |                                       read-write|  2.2.2.2|1    |10000

Number of rows: 10
```

### roster

The `show roster` command displays the current and pending roster as well as the observed nodes. To make viewing easier, run the `pager on` command first. `show roster` can be used in conjunction with `manage roster` to modify the pending roster. To filter output based on namespace use the `for` modifier. To filter output based on node use the `with` modifier. To display any differences between values in any given column use the `diff` modifier.

```plaintext
Admin> show roster

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Roster (2021-10-21 20:12:29 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

         Node|         Node ID|Namespace|                                         Current Roster|                                         Pending Roster|                                         Observed Nodes

10.0.0.1:3000|BB9010016AE4202 |bar      |BB9040016AE4202@4, BB9020016AE4202@4, BB9010016AE4202@4|BB9040016AE4202@4, BB9020016AE4202@4, BB9010016AE4202@4|BB9040016AE4202@4, BB9020016AE4202@4, BB9010016AE4202@4

10.0.0.2:3000|BB9020016AE4202 |bar      |BB9040016AE4202@4, BB9020016AE4202@4, BB9010016AE4202@4|BB9040016AE4202@4, BB9020016AE4202@4, BB9010016AE4202@4|BB9040016AE4202@4, BB9020016AE4202@4, BB9010016AE4202@4

10.0.0.4:3000|*BB9040016AE4202|bar      |BB9040016AE4202@4, BB9020016AE4202@4, BB9010016AE4202@4|BB9040016AE4202@4, BB9020016AE4202@4, BB9010016AE4202@4|BB9040016AE4202@4, BB9020016AE4202@4, BB9010016AE4202@4

10.0.0.1:3000|BB9010016AE4202 |test     |BB9040016AE4202@2, BB9020016AE4202@2, BB9010016AE4202@2|BB9040016AE4202@2, BB9020016AE4202@2, BB9010016AE4202@2|BB9040016AE4202@2, BB9020016AE4202@2, BB9010016AE4202@2

10.0.0.2:3000|BB9020016AE4202 |test     |BB9040016AE4202@2, BB9020016AE4202@2, BB9010016AE4202@2|BB9040016AE4202@2, BB9020016AE4202@2, BB9010016AE4202@2|BB9040016AE4202@2, BB9020016AE4202@2, BB9010016AE4202@2

10.0.0.4:3000|*BB9040016AE4202|test     |BB9040016AE4202@2, BB9020016AE4202@2, BB9010016AE4202@2|BB9040016AE4202@2, BB9020016AE4202@2, BB9010016AE4202@2|BB9040016AE4202@2, BB9020016AE4202@2, BB9010016AE4202@2

Number of rows: 6
```

### show sindex

The `show sindex` command displays secondary indexes and associated static metadata as returned by the principal node. `show sindex` can be used in conjunction with `manage sindex` to perform sindex management.

```text
Admin+> show sindex

~~~~~~Secondary Indexes (2025-06-11 07:11:35 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 Index Name|Namespace|  Set|    Bin|    Bin|    Index|State|             Context|                                                           Expression

           |         |     |       |   Type|     Type|     |                    |

name-idx   |test     |donor|   name|STRING |NONE     |RW   |--                  |

dnr-age-idx|test     |donor|    age|NUMERIC|NONE     |RW   |--                  |

dnr-zip-idx|test     |donor|address|NUMERIC|NONE     |RW   |[map_key(<string#3)]|

dnr-sum-idx|test     |donor|   null|NUMERIC|NONE     |RW   |--                  |add(bin_int("campaign1"), bin_int("campaign2"), bin_int("campaign3"))

Number of rows: 4
```

### statistics

The `show statistics` command displays all server statistics from several server components. By default it returns statistics for the following:

-   bins
-   namespace
-   service
-   sets
-   sindex
-   xdr

Use the `bins`, `namespace`, `service`, `sets`, `sindex`, and `xdr` sub-commands to limit the output to a single context.

See details and additional subcommands for `show statistics xdr`. You can also set `-t` parameter to get an extra aggregate column for total across columns. Total column displays sum of statistics with numeric values.

Example: Service level statistics, filter for metric containing the token batch, display a total column

```text
Admin> show statistics service like batch -t

~~~~~~~~~~~~~~~~~~Service Statistics (2020-12-18 01:33:36 UTC)~~~~~~~~~~~~~~~~~~~~~

Node                                 |10.0.0.1:3000|10.0.0.2:3000|10.0.0.3:3000|

batch_index_complete                 |0            |0            |0            |0

batch_index_created_buffers          |0            |0            |0            |0

batch_index_delay                    |0            |0            |0            |0

batch_index_destroyed_buffers        |0            |0            |0            |0

batch_index_error                    |0            |0            |0            |0

batch_index_huge_buffers             |0            |0            |0            |0

batch_index_initiate                 |0            |0            |0            |0

batch_index_proto_compression_ratio  |1.0          |1.0          |1.0          |

batch_index_proto_uncompressed_pct   |0.0          |0.0          |0.0          |0.0

batch_index_queue                    |0:0,0:0      |0:0,0:0      |0:0,0:0      |

batch_index_timeout                  |0            |0            |0            |0

batch_index_unused_buffers           |0            |0            |0            |0

early_tsvc_batch_sub_error           |0            |0            |0            |0

early_tsvc_from_proxy_batch_sub_error|0            |0            |0            |0

Number of rows: 15
```

For large clusters, use the `-flip` option to flip the output for readability.

Example: Output for show statistics command with -flip option

```text
Admin> show statistics namespace for test like partition-tree -flip

~test Namespace Statistics (2020-12-18 01:58:32 UTC)~

         Node|partition-tree-sprigs

10.0.0.1:3000|                  256

10.0.0.2:3000|                  256

10.0.0.3:3000|                  256

10.0.0.4:3000|                  256

10.0.0.6:3000|                  256

Number of rows: 5
```

#### statistics xdr

The `show statistics xdr` command displays all the available statistics information related to XDR. By default, this command displays XDR datacenter statistics and XDR namespace statistics. You may also provide one of the sub-commands: `dc` and `namespace` to limit the output to a specific context.

The `show statistics xdr dc` command displays a new table for each configured datacenter. The command also supports the `for` modifier to filter by datacenter.

```text
Admin> show statistics xdr dc for dc2 like retry

~~~~~~~~~XDR dc2 DC Statistics (2023-02-16 23:56:28 UTC)~~~~~~~~~~

Node            |172.17.0.4:3000|172.17.0.5:3000|172.17.0.6:3000

retry_conn_reset|0              |0              |0

retry_dest      |0              |0              |0

retry_no_node   |0              |0              |0

Number of rows: 4
```

The `show statistics xdr namespace` command displays a new table for each configured xdr namespace. The command also supports the `for` modifier to filter first by namespace and then by datacenter.

```text
Admin> show statistics xdr namespace like retry

~~~~~~~~~~~~~~~~~~~~~~XDR test Namespace Statistics (2023-02-16 23:57:32 UTC)~~~~~~~~~~~~~~~~~~~~~~~

Datacenter      |dc1          |dc1          |dc1          |dc2          |dc2          |dc2

Node            |10.0.0.4:3000|10.0.0.5:3000|10.0.0.6:3000|10.0.0.4:3000|10.0.0.5:3000|10.0.0.6:3000

retry_conn_reset|0            |0            |0            |0            |0            |0

retry_dest      |0            |0            |0            |0            |0            |0

retry_no_node   |0            |0            |0            |0            |0            |0

Number of rows: 5

~~~~~~~~~~~~~~~~~~~~~~XDR bar Namespace Statistics (2023-02-16 23:57:32 UTC)~~~~~~~~~~~~~~~~~~~~~~~

Datacenter      |dc1          |dc1          |dc1          |dc2          |dc2          |dc2

Node            |10.0.0.4:3000|10.0.0.5:3000|10.0.0.6:3000|10.0.0.4:3000|10.0.0.5:3000|10.0.0.6:3000

retry_conn_reset|0            |0            |0            |0            |0            |0

retry_dest      |0            |0            |0            |0            |0            |0

retry_no_node   |0            |0            |0            |0            |0            |0

Number of rows: 5
```

To instead display a new table for each configured datacenter use the `--by-dc` flag.

```text
Admin> show statistics xdr namespace like retry --by-dc

~~~~~~~~~~~~~~~~~~~~~~XDR dc1 Namespace Statistics (2023-02-16 23:57:32 UTC)~~~~~~~~~~~~~~~~~~~~~~~

Namespace       |test         |test         |test         |bar          |bar          |bar

Node            |10.0.0.4:3000|10.0.0.5:3000|10.0.0.6:3000|10.0.0.4:3000|10.0.0.5:3000|10.0.0.6:3000

retry_conn_reset|0            |0            |0            |0            |0            |0

retry_dest      |0            |0            |0            |0            |0            |0

retry_no_node   |0            |0            |0            |0            |0            |0

Number of rows: 5

~~~~~~~~~~~~~~~~~~~~~~XDR dc2 Namespace Statistics (2023-02-16 23:57:32 UTC)~~~~~~~~~~~~~~~~~~~~~~~

Namespace       |test         |test         |test         |bar          |bar          |bar

Node            |10.0.0.4:3000|10.0.0.5:3000|10.0.0.6:3000|10.0.0.4:3000|10.0.0.5:3000|10.0.0.6:3000

retry_conn_reset|0            |0            |0            |0            |0            |0

retry_dest      |0            |0            |0            |0            |0            |0

retry_no_node   |0            |0            |0            |0            |0            |0

Number of rows: 5
```

### stop-writes

The `show stop-writes` command in the `asadm` tool returns comprehensive information about stop-writes configuration parameters, metrics, and their associated `namespace` and `test` contexts. This command helps determine the proximity to reaching the stop-writes threshold at different levels: service context (global), namespace context, or set context. It also helps identify the reasons for being in the stop-writes state.

`show stop-writes` displays the following table which is ordered based on the proximity to breaching the configured stop-writes threshold. For instance, the `stop-writes-count` configuration for the namespace test and set testset is closest to reaching the limit of 10,000 records and is positioned at the bottom of the table. This arrangement helps in effectively addressing the issue by providing the relevant configuration details and the metric that might potentially exceed the threshold. Additionally, the table presents the current proximity to the configured threshold, actual usage, and the threshold itself, offering a clear understanding of the current status. A `--` threshold means none is configured.

Example: show stop-writes command output

```text
Admin> show stop-writes

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Stop Writes (2023-05-23 23:01:01 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                          Show all stop writes - add 'for NAMESPACE [SET]' for a shorter list.

                    Config|Namespace|    Set|           Node|Stop-Writes|               Metric| Usage%|     Usage|Threshold

stop-writes-size          |test     |testset|172.17.0.5:3000|False      |memory_data_bytes    |     --|123.005 KB|       --

stop-writes-size          |test     |testset|172.17.0.4:3000|False      |memory_data_bytes    |     --|123.373 KB|       --

stop-writes-size          |test     |testset|172.17.0.3:3000|False      |memory_data_bytes    |     --|123.246 KB|       --

--                        |test     |--     |172.17.0.5:3000|False      |cluster_clock_skew_ms|     --|  00:00:00|       --

--                        |bar      |--     |172.17.0.5:3000|False      |cluster_clock_skew_ms|     --|  00:00:00|       --

--                        |test     |--     |172.17.0.4:3000|False      |cluster_clock_skew_ms|     --|  00:00:00|       --

--                        |bar      |--     |172.17.0.4:3000|False      |cluster_clock_skew_ms|     --|  00:00:00|       --

--                        |test     |--     |172.17.0.3:3000|False      |cluster_clock_skew_ms|     --|  00:00:00|       --

--                        |bar      |--     |172.17.0.3:3000|False      |cluster_clock_skew_ms|     --|  00:00:00|       --

stop-writes-pct           |bar      |--     |172.17.0.3:3000|False      |memory_used_bytes    |  0.0 %|  0.000 B | 3.600 GB

stop-writes-pct           |bar      |--     |172.17.0.4:3000|False      |memory_used_bytes    |  0.0 %|  0.000 B | 3.600 GB

stop-writes-pct           |bar      |--     |172.17.0.5:3000|False      |memory_used_bytes    |  0.0 %|  0.000 B | 3.600 GB

stop-writes-pct           |test     |--     |172.17.0.5:3000|False      |memory_used_bytes    | 1.74 %|728.567 KB|40.960 MB

stop-writes-pct           |test     |--     |172.17.0.3:3000|False      |memory_used_bytes    | 1.74 %|729.996 KB|40.960 MB

stop-writes-pct           |test     |--     |172.17.0.4:3000|False      |memory_used_bytes    | 1.74 %|730.748 KB|40.960 MB

stop-writes-sys-memory-pct|bar      |--     |172.17.0.3:3000|False      |system_free_mem_pct  |28.89 %|    26.0 %|   90.0 %

stop-writes-sys-memory-pct|test     |--     |172.17.0.3:3000|False      |system_free_mem_pct  |28.89 %|    26.0 %|   90.0 %

stop-writes-sys-memory-pct|bar      |--     |172.17.0.4:3000|False      |system_free_mem_pct  |28.89 %|    26.0 %|   90.0 %

stop-writes-sys-memory-pct|test     |--     |172.17.0.4:3000|False      |system_free_mem_pct  |28.89 %|    26.0 %|   90.0 %

stop-writes-sys-memory-pct|bar      |--     |172.17.0.5:3000|False      |system_free_mem_pct  |28.89 %|    26.0 %|   90.0 %

stop-writes-sys-memory-pct|test     |--     |172.17.0.5:3000|False      |system_free_mem_pct  |28.89 %|    26.0 %|   90.0 %

stop-writes-count         |test     |testset|172.17.0.5:3000|False      |objects              |96.89 %|   9.689 K| 10.000 K

stop-writes-count         |test     |testset|172.17.0.3:3000|False      |objects              |97.08 %|   9.708 K| 10.000 K

stop-writes-count         |test     |testset|172.17.0.4:3000|False      |objects              |97.18 %|   9.718 K| 10.000 K

Number of rows: 24
```

### udfs

The `show udfs` command displays user-defined function (UDF) modules as returned by the principal node. To learn about adding or removing UDF modules, see [manage udfs](#udfs).

Example: show udfs command output

```text
Admin> show udfs

~~~~~~~~UDF Modules (2021-01-22 23:12:29 UTC)~~~~~~~~~

Filename|                                    Hash|Type

abc.123 |dceaf7f1acddf1d6e12a1752d499d80cfadfc24b|LUA

bar.lua |591d2536acb21a329040beabfd9bfaf110d35c18|LUA

foo.lua |f6eaf2b22d8b29b3597ef1ad9113d0907425ecd0|LUA
```

To view the contents of a UDF module, use the `show udfs FILENAME` command.

Example: show udf content output

```text
Admin> show udfs foo.lua

UDF Content: foo.lua (2025-10-15 04:20:24 UTC)

Filename:

  foo.lua

Type:

  LUA

Content:

function slice(rec, bin, a, b)

  local s = rec[bin]

  if type(s) == 'string' then

    return s:sub(a, b)

  end

  return nil

end
```

### user-agents

The `show user-agents` command returns a list of all user agents currently connected, as well as an entry for “unknown” connections. In that list, each entry has an associated count. Supports the `with` modifier to limit information to a subset of nodes.

Example: show all distinct user-agents

```text
Admin> show user-agents

~User Agent Information (2025-08-01 22:40:26 UTC)~

          Node|        Client Version|            App ID|Count

10.1.1.1:3000 | java-8.1.1           | not-set          |   103

10.1.1.1:3000 | python-16.0.1-alpha1 | analytics-engine |     1

10.1.1.1:3000 | unknown              | unknown          |  1234

10.1.1.2:3000 | java-8.1.1           | payment-service  |    20

10.1.1.2:3000 | python-16.0.1-alpha1 | analytics-engine |     3

10.1.1.2:3000 | unknown              | unknown          |  4321

Number of rows: 6
```

Example: narrow user-agent information by node pattern

```text
Admin> show user-agents with 10.1.1.1

~User Agent Information (2025-08-01 22:40:26 UTC)~

          Node|        Client Version|            App ID|Count

10.1.1.1:3000 | java-8.1.1           | not-set          |   103

10.1.1.1:3000 | python-16.0.1-alpha1 | analytics-engine |     1

10.1.1.1:3000 | unknown              | unknown          |  1234

Number of rows: 3
```

### users

Access control permissions: user-admin

The `show users [user]` command displays users along with their associated roles as returned by the principal node. Optionally, you can display a single user by providing a username as the first argument. `show users` can be used in conjunction with `manage acl users` to perform user administration.

::: note
-   User runtime statistics were moved to the `show users statistics` command in `asadm` 2.15.0 / [Aerospike Tools 8.4.0](https://aerospike.com/docs/database/tools/release-notes#tools-840).
-   From `asadm` 2.2.0 to `asadm` 2.14.0, runtime statistics were located in the `show users` table if quotas were enabled, but they provided data only for the principal node.
:::

```text
Admin+> show users

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Users (2025-08-19 17:26:09 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                      To see individual users metrics run 'show users statistics USERNAME'

          User|                                                                 Roles|~Read~|~Write~|   Auth Mode

              |                                                                      | Quota|  Quota|

admin         |data-admin,read-write,read-write-udf,sindex-admin,sys-admin,user-admin|0     |0      |password,PKI

auditor_01    |                                                      readonly_auditor|100   |1      |password,PKI

backup_svc    |                                                       backup_operator|500   |500    |password,PKI

data_scientist|                                       analytics_user,readonly_auditor|0     |0      |password,PKI

devops_lead   |                                        app_developer,monitoring_agent|0     |0      |password,PKI

hft_bot       |                                                 high_frequency_trader|50000 |25000  |password,PKI

john_dev      |                                                         app_developer|5000  |2000   |password,PKI

prometheus    |                                                      monitoring_agent|1000  |1      |password,PKI

sarah_analyst |                                                        analytics_user|10000 |1      |password,PKI

Number of rows: 9
```

#### users statistics

Access control permissions: user-admin

The `show users statistics [user]` command displays users, number of user connections, and quota related metrics across all nodes in the cluster.

You can use this to see the live activity of your users and find out which users might be close to or exceeding their assigned quotas. In addition to viewing users per node, there is also an additional aggregate line to display usage for the entire cluster. Optionally, you can retrieve a single user by providing a username as the first argument. `show users statistics` can be used in conjunction with `show users` and `manage acl users` to perform user administration.

```text
Admin+> show users stat

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Users Statistics (2025-08-19 21:49:04 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

     User|           Node|Connections|~~~~~~~~~~~~~~~~~~~~Read~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~Write~~~~~~~~~~~~~~~~~~~

         |               |           |   Quota|Usage%|   Single|  PI/SI|    PI/SI|   Quota|Usage%|   Single|  PI/SI|    PI/SI

         |               |           |        |      |   Record|  Query|    Query|        |      |   Record|  Query|    Query

         |               |           |        |      |      TPS|Limited|Limitless|        |      |      TPS|Limited|Limitless

         |               |           |        |      |         |    RPS|         |        |      |         |    RPS|

admin    |172.17.0.3:3000|    2.000  | 0.000  |    --|  0.000  |0.000  |  0.000  | 0.000  |    --|  0.000  |0.000  |  0.000

admin    |172.17.0.4:3000|    2.000  | 0.000  |    --|  0.000  |0.000  |  0.000  | 0.000  |    --|  0.000  |0.000  |  0.000

admin    |172.17.0.5:3000|    2.000  | 0.000  |    --|  0.000  |0.000  |  0.000  | 0.000  |    --|  0.000  |0.000  |  0.000

admin    |               |    6.000  | 0.000  | 0.0 %|  0.000  |0.000  |  0.000  | 0.000  | 0.0 %|  0.000  |0.000  |  0.000

reader   |172.17.0.3:3000|   13.000  |10.000 K|5.93 %|593.000  |0.000  |  0.000  | 1.000  | 0.0 %|  0.000  |0.000  |  0.000

reader   |172.17.0.4:3000|   13.000  |10.000 K|5.15 %|515.000  |0.000  |  0.000  | 1.000  | 0.0 %|  0.000  |0.000  |  0.000

reader   |172.17.0.5:3000|   13.000  |10.000 K| 4.7.0 %|470.000  |0.000  |  0.000  | 1.000  | 0.0 %|  0.000  |0.000  |  0.000

reader   |               |   39.000  |30.000 K|5.26 %|  1.578 K|0.000  |  0.000  | 3.000  | 0.0 %|  0.000  |0.000  |  0.000

root     |172.17.0.3:3000|         --| 0.000  |    --|  0.000  |0.000  |  0.000  | 0.000  |    --|  0.000  |0.000  |  0.000

root     |172.17.0.4:3000|         --| 0.000  |    --|  0.000  |0.000  |  0.000  | 0.000  |    --|  0.000  |0.000  |  0.000

root     |172.17.0.5:3000|         --| 0.000  |    --|  0.000  |0.000  |  0.000  | 0.000  |    --|  0.000  |0.000  |  0.000

root     |               |         --| 0.000  | 0.0 %|  0.000  |0.000  |  0.000  | 0.000  | 0.0 %|  0.000  |0.000  |  0.000

superuser|172.17.0.3:3000|   14.000  | 0.000  |    --|263.000  |0.000  |  0.000  | 0.000  |    --|271.000  |0.000  |  0.000

superuser|172.17.0.4:3000|   12.000  | 0.000  |    --|225.000  |0.000  |  0.000  | 0.000  |    --|257.000  |0.000  |  0.000

superuser|172.17.0.5:3000|   14.000  | 0.000  |    --|227.000  |0.000  |  0.000  | 0.000  |    --|226.000  |0.000  |  0.000

superuser|               |   40.000  | 0.000  | 0.0 %|715.000  |0.000  |  0.000  | 0.000  | 0.0 %|754.000  |0.000  |  0.000

writer   |172.17.0.3:3000|   14.000  | 1.000  | 0.0 %|  0.000  |0.000  |  0.000  |10.000 K|5.29 %|529.000  |0.000  |  0.000

writer   |172.17.0.4:3000|   12.000  | 1.000  | 0.0 %|  0.000  |0.000  |  0.000  |10.000 K|4.56 %|456.000  |0.000  |  0.000

writer   |172.17.0.5:3000|   14.000  | 1.000  | 0.0 %|  0.000  |0.000  |  0.000  |10.000 K|4.45 %|445.000  |0.000  |  0.000

writer   |               |   40.000  | 3.000  | 0.0 %|  0.000  |0.000  |  0.000  |30.000 K|4.77 %|  1.430 K|0.000  |  0.000

Number of rows: 15
```

## summary

The `summary` command displays a summary of the cluster. This command accepts remote server credentials to collect and summarize system statistics. By default, it collects Aerospike data from all nodes, but collects system statistics only from the localhost, assuming the localhost is a node of a connected cluster.

To enable remote system statistics collection, use the `--enable-ssh` option. This command accepts more SSH credentials through the following options: `--ssh-user`, `--ssh-pwd`, `--ssh-port`, and `--ssh-key`.

You can also provide all credentials through a file by using the option `--ssh-cf`. For more information, see `help summary`.

::: caution
UDA was removed from the tools package as of 12.0.0, and UDA-related options like `--agent-host` and `--agent-port` were removed from `asadm` 4.0.0.
:::

Example: summary command output

```text
Admin> summary

~~~~~~~~~~~~~~~~~~~~~~Cluster Summary~~~~~~~~~~~~~~~~~~~~~~~

Migrations                |False

Cluster Name              |mydc

Server Version            |E-8.1.0.1

OS Version                |--

Cluster Size              |3

Devices Total             |3

Devices Per-Node          |1

Devices Equal Across Nodes|True

Shmem Index Used          |122.119 MB

Device Total              |12.000 GB

Device Used               |122.123 MB

Device Used%              |0.99 %

Device Avail              |11.760 GB

Device Avail%             |98.0 %

License Usage Latest      |(61.062 MB) ?

Namespaces Active         |1

Namespaces Total          |1

Active Features           |KVS,PIndex Query,Index-on-shmem

Number of rows: 18

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Namespace Summary~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Namespace|~~~~Drives~~~~|~~~~~~~~~Device~~~~~~~~|Replication|Cache| Master|Compression|~License~

         |Total|Per-Node|    Total| Used%|Avail%|    Factors|Read%|Objects|      Ratio|~~Usage~~

         |     |        |         |      |      |           |     |       |           |   Latest

test     |    3|       1|12.000 GB|0.99 %|98.0 %|          2|0.0 %|1.000 M|        1.0|(61.062 MB) ?

Number of rows: 1

The license usage calculation is inaccurate due to compression.
```

::: note
Starting in `asadm` 4.1.0 and tools package 12.1.0, if `asdb-compression` is `true` in the Aerospike feature key file, the `summary` command includes a warning to indicate that the license usage calculation is inaccurate.
:::

## watch

Place the `watch` command before another `asadm` command, and you can add two optional fixed-position arguments. The first position is the number of seconds to wait between iterations and the second position is the number of iterations to execute.

The following example runs `info network` three times with a five-second sleep between iterations.

Example: info network command output

```text
Admin> watch 5 3 info network

[ 2020-12-17 18:11:41 'info network' sleep: 5.0s iteration: 1  of 3 ]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information (2020-12-18 02:11:41 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

         Node|         Node ID|             IP|    Build|Migrations|~~~~~~~~~~~~~~~~~~Cluster~~~~~~~~~~~~~~~~~~|Client|  Uptime

             |                |               |         |          |Size|         Key|Integrity|      Principal| Conns|

10.0.0.1:3000| BB9010016AE4202|  10.0.0.1:3000|C-5.3.0.1|   0.000  |   5|33718FC58CD6|True     |BB9060016AE4202|     4|02:20:24

10.0.0.2:3000| BB9020016AE4202|  10.0.0.2:3000|C-5.3.0.1|   0.000  |   5|33718FC58CD6|True     |BB9060016AE4202|     4|02:20:23

Number of rows: 2

[ 2020-12-17 18:11:46 'info network' sleep: 5.0s iteration: 2  of 3 ]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information (2020-12-18 02:11:46 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

         Node|         Node ID|             IP|    Build|Migrations|~~~~~~~~~~~~~~~~~~Cluster~~~~~~~~~~~~~~~~~~|Client|  Uptime

             |                |               |         |          |Size|         Key|Integrity|      Principal| Conns|

10.0.0.1:3000| BB9010016AE4202|  10.0.0.1:3000|C-5.3.0.1|   0.000  |   5|33718FC58CD6|True     |BB9060016AE4202|     3|02:20:29

10.0.0.2:3000| BB9020016AE4202|  10.0.0.2:3000|C-5.3.0.1|   0.000  |   5|33718FC58CD6|True     |BB9060016AE4202|     3|02:20:28

Number of rows: 2

[ 2020-12-17 18:11:51 'info network' sleep: 5.0s iteration: 3  of 3 ]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information (2020-12-18 02:11:51 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

         Node|         Node ID|             IP|    Build|Migrations|~~~~~~~~~~~~~~~~~~Cluster~~~~~~~~~~~~~~~~~~|Client|  Uptime

             |                |               |         |          |Size|         Key|Integrity|      Principal| Conns|

10.0.0.1:3000| BB9010016AE4202|  10.0.0.1:3000|C-5.3.0.1|   0.000  |   5|33718FC58CD6|True     |BB9060016AE4202|     3|02:20:34

10.0.0.2:3000| BB9020016AE4202|  10.0.0.2:3000|C-5.3.0.1|   0.000  |   5|33718FC58CD6|True     |BB9060016AE4202|     3|02:20:33

Number of rows: 2
```

## Configure SSH

::: note
[Aerospike Tools 10.2.1](https://aerospike.com/docs/database/tools/release-notes#tools-1021) or later is required for `asadm` to connect to remote hosts using SSH.
:::

The `asadm collect*` commands use SSH and SFTP protocols to run commands and download files from remote Aerospike hosts. These commands produce vital information for Aerospike support to troubleshoot problems.

Requirements:

-   SSH and SFTP installed and configured on the remote host.
-   SSH between the host and remote is configured using user/password or public/private key authentication.
-   If using user/password authentication all remote hosts must use the same credentials.

::: note
`asadm` has its own implementation of the SSH protocol and thus does not require `ssh` to be installed on the local host.
:::

You can configure `asadm` to use SSH in a few ways:

### Use common SSH configuration files

Using pre-existing SSH configuration files is the easiest way to configure `asadm` because most likely you configured your SSH configuration file when setting up SSH between the local and remote hosts. By using the configuration files, you can access many additional features supported by the SSH protocol, and avoid typing in flags every time you run an `asadm` command.

To automatically connect to your remote hosts using SSH, add one or more sections to your `~/.ssh/config` or `/etc/ssh/ssh_config` files to tell `asadm` and SSH how to connect to the remote.

Following is a basic example of a section that you can add to your SSH configuration file:

```plaintext
Host AEROSPIKE-HOST0 AEROSPIKE-HOST1

      User REMOTE-USER0

      IdentityFile PATH-TO-PRIVATE-KEY0

Host AEROSPIKE-HOST2

    User REMOTE-USER1

    IdentityFile PATH-TO-PRIVATE-KEY1
```

If you need to use different username, keys, or other information, add another host section for each. An easy way to confirm if your SSH is properly configured is to run `ssh REMOTE-DESTINATION` and check for successful authentication.

After adding the correct options to your SSH configuration file, you can configure the command by enabling SSH with `--enable-ssh`.

```plaintext
Admin> collectlogs --enable-ssh
```

Full list of supported OpenSSH client options

```plaintext
- AddressFamily:

- BindAddress

- CASignatureAlgorithms

- CertificateFile

- ChallengeResponseAuthentication

- Ciphers

- Compression

- ConnectTimeout

- EnableSSHKeySign

- ForwardAgent

- ForwardX11Trusted

- GlobalKnownHostsFile

- GSSAPIAuthentication

- GSSAPIDelegateCredentials

- GSSAPIKeyExchange

- HostbasedAuthentication

- HostKeyAlgorithms

- HostKeyAlias

- Hostname

- IdentityAgent

- IdentityFile

- KbdInteractiveAuthentication

- KexAlgorithms

- MACs

- Match

- PasswordAuthentication

- PreferredAuthentications

- Port

- ProxyCommand

- ProxyJump

- PubkeyAuthentication

- RekeyLimit

- RemoteCommand

- RequestTTY

- SendEnv

- ServerAliveCountMax

- ServerAliveInterval

- SetEnv

- TCPKeepAlive

- User

- UserKnownHostsFile
```

For more information on the configuration file format, run `man ssh_config`.

### Use command line flags

This requires all remote hosts to use the same user/password or user/key pair to log in. If remote hosts use different user/key credentials for authentication, you can use SSH configuration files.

To log in to a remote host using a username and password, use `--enable-ssh`, `--ssh-user`, and `--ssh-pwd`.

```plaintext
Admin> collectinfo --enable-ssh --ssh-user root --ssh-pwd root
```

To log in to a remote host using your ssh key, use `--enable-ssh`, `--ssh-user`, and `--ssh-key`.

```plaintext
Admin> collectinfo --enable-ssh --ssh-user root --ssh-key
```

::: note
If `--ssh-user` is not provided, the current username is used.
:::