# Analyzing MaxCtrl Create Report Output

The output of the `maxctrl create report` command produces a JSON payload that contains the current state of MaxScale. This includes the runtime configuration and the status all objects in MaxScale.

## Creating a MaxCtrl Report

The report can be created with:

```
maxctrl create report maxctrl-report.json
```

After the command completes, the data is in `maxctrl-report.json`.

The file in which the output is stored is the only argument to this command. Recent versions of maxctrl pipe the output to the standard output if no filename is given. This can be useful for environments where copying files may be difficult (e.g. docker).

## Using `jq`

The easiest way to inspect the JSON output is to use the jq program:

It is usually available as a package in most operating systems.

### List servers

```
jq '.servers.data[].id' < maxctrl-report.json
```

### List services

```
jq '.services.data[].id' <  maxctrl-report.json
```

### List monitors

```
jq '.monitors.data[].id' < maxctrl-report.json
```

### List listeners

```
jq '.listeners.data[].id' <  maxctrl-report.json
```

### List filters

```
jq '.filters.data[].id' <  maxctrl-report.json
```

### List keys of objects

```
jq 'keys' < maxctrl-report.json
```

This can be combined with the object field access to list the fields of sub-objects. The following lists the keys in the first server object.

```
jq '.servers.data[0]|keys' < maxctrl-report.json
```

### Get a specific service

Change the `RW-Split-Router` to the name of the service you're looking for.

```
jq '.services.data|map(select(.id == "RW-Split-Router"))' < maxctrl-report.json
```

### Get a specific monitor

Change the `MariaDB-Monitor` to the name of the monitor you're looking for.

```
jq '.monitors.data|map(select(.id == "MariaDB-Monitor"))' < maxctrl-report.json
```

### Get a specific server

Change the `DB-1` to the name of the server you're looking for.

```
jq '.servers.data|map(select(.id == "DB-1"))' < maxctrl-report.json
```

### Find the monitor for a server

Change `DB-1` to the name of the server you're looking for.

```
jq '.servers.data|map(select(.id == "DB-1"))|.[].relationships.monitors.data' < maxctrl-report.json
```

### Memory used by the query classifier cache

```
jq '[.threads.data[].attributes.stats.query_classifier_cache.size]|add' < maxctrl-report.json
```

<sub>*This page is licensed: CC BY-SA / Gnu FDL*</sub>

{% @marketo/form formId="4316" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mariadb.com/docs/maxscale/mariadb-maxscale-tutorials/analyzing-maxctrl-create-report-output.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
