This project aims to create tools for MongoDB analysis and diagnosis. So far 3 modules are built:
- Health check module.
- Log analysis module.
getMongoDatavisualization module (Under construction).
| Replica Set | Sharded Cluster | Standalone |
|---|---|---|
| >=4.2 ✓ | >=4.2 ✓ | ✗ |
Older versions are not tested.
Log analysis requires JSON format logs, which is supported since 4.4.
| Replica Set | Sharded Cluster | Standalone |
|---|---|---|
| >=4.4 ✓ | >=4.4 ✓ | >=4.4 ✓ |
The easiest and recommended way to install x-ray is to use pip:
pip install mongo-x-raygit clone https://github.com/zhangyaoxing/x-ray
cd x-ray
pip install .Currently the prebuilt binaries are built on 3 platforms:
- Ubuntu Latest (AMD64)
- MacOS Latest (ARM64)
- Windows Latest (AMD64)
Download them from Releases.
x-ray is tested on Python 3.9.22. On MacOS or Linux distributions, you can use the make command to build the binary:
git clone https://github.com/zhangyaoxing/x-ray
cd x-ray
make deps # if it's the first time you build the project
make # equal to `make build` and `make build-lite`There are other make targets. Use make help to find out.
You can also build the tool with AI modules for log analysis. For more details refer to: Build with AI Support.
For Windows users, if make command is not available. You can use Python commands to build the binary:
python.exe -m venv .venv
.venv\Scripts\python.exe -m pip install --upgrade pip
.venv\Scripts\python.exe -m pip install -e ".[dev]"
.venv\Scripts\python.exe -m PyInstaller --onefile `
--name x-ray `
--add-data="templates;templates" `
--add-data="libs;libs" `
--icon="misc/x-ray.ico" `
--hidden-import=openai `
x-rayFor developers, use make deps to prepare venv and dependencies
make depsOr
python3 -m venv .venv
python3 -m pip install --upgrade pip
python3 -m pip install -e ".[dev]"x-ray [-h] [-q] [-c CONFIG] {healthcheck,hc,log}| Argument | Description | Default |
|---|---|---|
-q, --quiet |
Quiet mode. | false |
-h, --help |
Show the help message and exit. | n/a |
-c, --config |
Path to configuration file. | Built-in libs/config.json |
command |
Command to run. Include: - healthcheck or hc: Health check.- log: Log analysis. |
None |
Besides, you can use environment variables to control some behaviors:
ENV=developmentFor developing. It will change the following behaviors:- Formatted the output JSON for for easier reading.
- The output will not create a new folder for each run but overwrite the same files.
LOG_LEVEL: Can beDEBUG,ERRORorINFO(default).
./x-ray healthcheck localhost:27017 # Scan the cluster with default settings.
./x-ray hc localhost:27017 --output ./output/ # Specify output folder.
./x-ray hc localhost:27017 --config ./config.json # Use your own configuration.x-ray healthcheck [-h] [-s CHECKSET] [-o OUTPUT] [-f {markdown,html}] [uri]| Argument | Description | Default |
|---|---|---|
-s, --checkset |
Checkset to run. | default |
-o, --output |
Output folder path. | output/ |
-f, --format |
Output format. Can be markdown or html. |
html |
uri |
MongoDB database URI. | None |
For security reasons you may not want to include credentials in the command. There are 2 options:
- If the URI is not provided, user will be asked to input one.
- If URI is provided but not username/password, user will also be asked to input them.
Refer to the wiki for more details.
# Full analysis
./x-ray log mongodb.log
# For large logs, analyze a random 10% logs
./x-ray log -r 0.1 mongodb.logx-ray log [-h] [-s CHECKSET] [-o OUTPUT] [-f {markdown,html}] [log_file]| Argument | Description | Default |
|---|---|---|
-s, --checkset |
Checkset to run. | default |
-o, --output |
Output folder path. | output/ |
-f, --format |
Output format. Can be markdown or html. |
html |
-r, --rate |
Sample rate. Only analyze a subset of logs. | 1 |
--top |
When analyzing the slow queries, only list top N. | 10 |