# Check the health of NGINX Instance Manager




## Overview

You can check the health of each F5 NGINX Instance Manager module individually, or run a script that checks all modules at once. This guide explains both methods.

**Note:** 
Health monitoring is available in NGINX Instance Manager 2.21.1 and later.

You can use the script as-is or customize it to fit your environment, security needs, and monitoring tools.

### Choosing a health check method

- Use the **health check endpoint** to get detailed status information for each module simultaneously.
- Use **individual endpoints** if you want detailed monitoring or alerting per module.
- Use the **aggregator script** for a quick overall status check.
- Combine both approaches for a complete view of system health.

### Before you begin

- Make sure you're running version 2.21.1 or later.
- You'll need access to the system where NGINX Instance Manager is installed.

---

## Option 1: Query the health check endpoint

Each NGINX Instance Manager module exposes a health endpoint that returns basic status information. The health check endpoint provides a summary of the overall health of the NGINX Instance Manager system. It provides the status of all the modules in a single response.

**Endpoint:** `/api/platform/v1/health`

### Example responses

Healthy system (Status 200):

```json
{
   "services": {
      "core": "healthy",
      "dpm": "healthy",
      "ingestion": "healthy",
      "integrations": "healthy",
      "secmon": "healthy"
   },
   "status": "healthy",
   "timestamp": "2026-01-29T10:49:07Z"
}
```

Unhealthy system (Status 502/503/400, and others):

```json
{
   "services": {
      "core": "healthy",
      "dpm": "unhealthy",
      "ingestion": "healthy",
      "integrations": "healthy",
      "secmon": "healthy"
   },
   "status": "unhealthy",
   "timestamp": "2026-01-29T10:49:07Z"
}
```

```json
{
"code": 502,
"message": "Upstream Unavailable"
}
```

## Option 2: Check individual module health

NGINX Instance Manager provides individual health check endpoints for each module. These are not part of the public NGINX Instance Manager REST API. Instead, they are internal liveness probes designed for use in automation, monitoring, and health check scripts.

No authentication is required to access these endpoints.

### Endpoints

| Module       | Endpoint                     | Purpose                                                   |
| ------------ | ---------------------------- | --------------------------------------------------------- |
| Core         | `/api/liveness/core`         | Reports health of the core management service             |
| DPM          | `/api/liveness/dpm`          | Checks status of the Data Plane Manager                   |
| Ingestion    | `/api/liveness/ingestion`    | Confirms the data ingestion and telemetry service is live |
| Integrations | `/api/liveness/integrations` | Verifies the integrations service is available            |
| Secmon       | `/api/liveness/secmon`       | Reports on the security monitoring module                 |

These endpoints return `200 OK` when healthy, or a `4xx` or `5xx` status code when there’s a problem.

### Example commands

Replace `your-nim-host` with the hostname or IP address for your NGINX Instance Manager system.

```shell
curl -k https://your-nim-host/api/liveness/core
curl -k https://your-nim-host/api/liveness/dpm
curl -k https://your-nim-host/api/liveness/integrations
curl -k https://your-nim-host/api/liveness/secmon
curl -k https://your-nim-host/api/liveness/ingestion
```

---

## Option 3: Use the health aggregator script

Use the built-in script to check the status of all modules at once. This script is helpful for basic monitoring.

### Location

The script is installed at:

```shell
/etc/nms/scripts/health-aggregator.sh
```

### Make sure the script is executable

Before you run the script, check that it has execute permissions. If needed, use the following command:

```shell
sudo chmod +x /etc/nms/scripts/health-aggregator.sh
```

You only need to do this once.

### Run the script

#### Use the default (localhost)

```shell
./health-aggregator.sh
```

#### Run the script with a custom host

To check a specific NGINX Instance Manager host, set the `API_BASE` variable. Replace `your-nim-host` with the hostname or IP address for your NGINX Instance Manager system.

```shell
API_BASE="https://your-nim-host" ./health-aggregator.sh
```

---

## Script output

#### Healthy system

```text
Status: healthy
```

#### Unhealthy system

```text
Status: unhealthy (Endpoint https://your-nim-host/api/liveness/ingestion returned HTTP 502)
```

If a module is unhealthy, the message shows which endpoint failed and its HTTP status code.

