Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified docs/en/studio/images/monitoring-applications/tools-create.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
92 changes: 89 additions & 3 deletions docs/en/studio/monitoring-applications.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,13 +144,99 @@ The *Logs* tab allows you to view all logs for both CLI and C# applications. To

## Tools

The *Tools* tab allows you to easily access to the user interfaces of the tools you are using. A *tool* may be related with a docker container, or independent. If it is related with a container (ex: *grafana*), the tool is opened when the container is up. If the tool is independent, it will be always opened.
The *Tools* tab provides quick access to web-based management interfaces for infrastructure services like Grafana, RabbitMQ, pgAdmin, and Redis Commander. Each tool opens in a dedicated browser tab within ABP Studio, eliminating the need to switch between external browser windows.

![tools](./images/monitoring-applications/tools-overview.png)

The microservice template comes with pre-defined tools to display related container user interfaces. You can edit existing tools, add new tools or delete existing tools.
The microservice template includes pre-configured tools for common infrastructure services. You can customize these tools or add new ones based on your project requirements.

In the example below, a new tool named `My Application Status` will be added to the tools and it will display the URL in the input:
### Adding a New Tool

To add a new tool, click the *+* button in the *Tools* tab. This opens the *Create Tool* dialog where you can configure the tool properties.

![tools-create](./images/monitoring-applications/tools-create.png)

### Tool Properties

Each tool has the following configurable properties:

| Property | Required | Description |
|----------|----------|-------------|
| **Name** | Yes | A unique identifier displayed as the tab header. |
Copy link

Copilot AI Jan 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The description states "A unique identifier displayed as the tab header" but it doesn't clarify whether this name must be unique across all tools or just within the current profile. Consider clarifying this to avoid confusion.

Suggested change
| **Name** | Yes | A unique identifier displayed as the tab header. |
| **Name** | Yes | A unique identifier for the tool within the current profile, displayed as the tab header. |

Copilot uses AI. Check for mistakes.
| **URL** | Yes | The web interface URL (e.g., `http://localhost:3000`). |
| **Related Container** | No | Docker container name. When set, the tool activates only when this container is running. |
| **Related Kubernetes Service** | No | A regex pattern to match Kubernetes service names for automatic URL switching. |
| **Related Kubernetes Service Port** | No | The port to use when connecting via Kubernetes service. |

### Editing and Removing Tools

- **Edit**: Right-click on a tool tab and select *Edit* to modify its properties.
- **Remove**: Right-click on a tool tab and select *Close* to remove it from the profile.
- **Clear Cookies**: Right-click on a tool tab and select *Clear Cookies* to reset the browser session for that tool.

### Tool Activation States

Tools can be in different activation states depending on their configuration:

| State | Condition | Behavior |
|-------|-----------|----------|
| **Always Active** | No *Related Container* specified | Tool is always accessible regardless of container state. |
| **Container-Dependent** | *Related Container* specified | Tool activates only when the specified Docker container is running. |
| **Kubernetes-Aware** | *Related Kubernetes Service* specified | Tool URL switches between local and Kubernetes endpoints automatically. |
Copy link

Copilot AI Jan 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The table row for "Kubernetes-Aware" only mentions "Related Kubernetes Service specified" but doesn't indicate whether this is mutually exclusive with "Related Container" or if they work together. Based on the JSON example and documentation, both can be specified together. Consider clarifying in the Condition column that this applies "when Related Kubernetes Service is specified (optionally with Related Container)" to avoid ambiguity.

Suggested change
| **Kubernetes-Aware** | *Related Kubernetes Service* specified | Tool URL switches between local and Kubernetes endpoints automatically. |
| **Kubernetes-Aware** | *Related Kubernetes Service* specified (optionally with *Related Container*) | Tool URL switches between local and Kubernetes endpoints automatically. |

Copilot uses AI. Check for mistakes.

### Kubernetes Integration

When you specify a *Related Kubernetes Service*, the tool gains the ability to seamlessly switch between local and Kubernetes environments. This is particularly useful for microservice development where you run some services locally while others remain in a Kubernetes cluster.

**Automatic URL Switching:**

1. **Local Mode**: When the *Related Container* is running, the tool uses the configured *URL* (e.g., `http://localhost:3000`).
2. **Kubernetes Mode**: When the container stops and you're [connected to a Kubernetes cluster](./kubernetes.md#connecting-to-a-kubernetes-cluster), the tool automatically redirects to the matching Kubernetes service.
3. **Pattern Matching**: The *Related Kubernetes Service* accepts regex patterns. For example, `.*-grafana` matches any service name ending with `-grafana`.

> This automatic switching eliminates the need to manually update URLs when transitioning between local development and Kubernetes-based testing.

### Run Profile Configuration

Tools are persisted in the Run Profile file (`.abprun.json`). Below is an example configuration with common infrastructure tools:

```json
{
"tools": {
"grafana": {
"url": "http://localhost:3000",
"relatedContainer": "grafana",
"relatedKubernetesService": ".*-grafana",
"relatedKubernetesServicePort": 3000
},
"rabbitmq": {
"url": "http://localhost:15672",
"relatedContainer": "rabbitmq",
"relatedKubernetesService": ".*-rabbitmq",
"relatedKubernetesServicePort": 15672
},
"redis-commander": {
"url": "http://localhost:8081",
"relatedContainer": "redis-commander"
},
"pgadmin": {
"url": "http://localhost:5050",
"relatedContainer": "pgadmin"
},
"seq": {
"url": "http://localhost:5341"
}
}
}
```

### Default Credentials

Some tools display a notification bar with default credentials when opened for the first time:

| Tool | Username | Password |
|------|----------|----------|
| Grafana | `admin` | `admin` |
| RabbitMQ | `guest` | `guest` |

> You can dismiss this notification permanently by clicking the *Don't show again* option.
Loading