---
title: IBM i
description: Remotely monitor IBM i systems including jobs, job queues, ASPs, and more.
breadcrumbs: Docs > Integrations > IBM i
---

# IBM i
Supported OS Integration version4.5.0
## Overview{% #overview %}

This check monitors [IBM i](https://www.ibm.com/it-infrastructure/power/os/ibm-i) remotely through the Datadog Agent.

**Minimum Agent version:** 7.31.1

## Setup{% #setup %}

Follow the instructions below to install and configure this check for an Agent running on a host. For containerized environments, see the [Autodiscovery Integration Templates](https://docs.datadoghq.com/agent/kubernetes/integrations/) for guidance on applying these instructions.

**Note**: This check is not available on Windows as it uses the `fcntl()` system call, which is specific to Unix-like operating systems.

### Installation{% #installation %}

The IBM i check is included in the [Datadog Agent](https://app.datadoghq.com/account/settings/agent/latest) package. No additional installation is needed on your server.

#### ODBC driver{% #odbc-driver %}

The IBM i check uses the IBM i ODBC driver to connect remotely to the IBM i host.

Download the driver from the [IBM i Access - Client Solutions](https://www.ibm.com/support/pages/ibm-i-access-client-solutions) page. Click on `Downloads for IBM i Access Client Solutions` and login to gain access to the downloads page.

Choose the `ACS App Pkg` package for your platform, such as `ACS Linux App Pkg` for Linux hosts. Download the package and follow the installation instructions to install the driver.

### Configuration{% #configuration %}

The IBM i check queries an IBM i system remotely from a host running the Datadog Agent. To communicate with the IBM i system, you need to set up the IBM i ODBC driver on the host running the Datadog Agent.

#### ODBC driver{% #odbc-driver-1 %}

Once the ODBC driver is installed, find the ODBC configuration files: `odbc.ini` and `odbcinst.ini`. The location may vary depending on your system. On Linux they may be located in the `/etc` directory or in the `/etc/unixODBC` directory.

Copy these configuration files to the embedded Agent environment, such as `/opt/datadog-agent/embedded/etc/` on Linux hosts.

The `odbcinst.ini` file defines the available ODBC drivers for the Agent. Each section defines one driver. For instance, the following section defines a driver named `IBM i Access ODBC Driver 64-bit`:

```
[IBM i Access ODBC Driver 64-bit]
Description=IBM i Access for Linux 64-bit ODBC Driver
Driver=/opt/ibm/iaccess/lib64/libcwbodbc.so
Setup=/opt/ibm/iaccess/lib64/libcwbodbcs.so
Threading=0
DontDLClose=1
UsageCount=1
```

The name of the IBM i ODBC driver is needed to configure the IBM i check.

#### IBM i check{% #ibm-i-check %}

1. Edit the `ibm_i.d/conf.yaml` file, in the `conf.d/` folder at the root of your Agent's configuration directory to start collecting your IBM i performance data. See the [sample ibm_i.d/conf.yaml](https://github.com/DataDog/integrations-core/blob/master/ibm_i/datadog_checks/ibm_i/data/conf.yaml.example) for all available configuration options. Use the driver name from the `obdcinst.ini` file.

1. [Restart the Agent](https://docs.datadoghq.com/agent/guide/agent-commands/#start-stop-and-restart-the-agent).

### Validation{% #validation %}

[Run the Agent's status subcommand](https://docs.datadoghq.com/agent/guide/agent-commands/#agent-status-and-information) and look for `ibm_i` under the Checks section.

## Data Collected{% #data-collected %}

### Metrics{% #metrics %}

|  |
|  |
| **ibm\_i.asp.io\_requests\_per\_s**(gauge)      | The average number of I/O requests for read and write operations that occurred per second*Shown as unit*             |
| **ibm\_i.asp.percent\_busy**(gauge)             | The percentage of time the disk unit is in use*Shown as percent*                                                     |
| **ibm\_i.asp.percent\_used**(gauge)             | The percentage consumed from the disk unit*Shown as percent*                                                         |
| **ibm\_i.asp.unit\_space\_available**(gauge)    | The space on the unit available for use*Shown as byte*                                                               |
| **ibm\_i.asp.unit\_storage\_capacity**(gauge)   | The storage capacity of the unit*Shown as byte*                                                                      |
| **ibm\_i.job.active\_duration**(gauge)          | The amount of time a job has been active*Shown as second*                                                            |
| **ibm\_i.job.cpu\_usage**(gauge)                | The CPU usage by a job                                                                                               |
| **ibm\_i.job.cpu\_usage.pct**(gauge)            | The CPU usage by a job as a percentage*Shown as percent*                                                             |
| **ibm\_i.job.jobq\_duration**(gauge)            | The amount of time a job has been in the JOBQ status*Shown as second*                                                |
| **ibm\_i.job.status**(gauge)                    | Whether a job is currently active or not.                                                                            |
| **ibm\_i.job.temp\_storage**(gauge)             | The amount of temporary storage that is currently allocated to a job*Shown as mebibyte*                              |
| **ibm\_i.job\_queue.held\_size**(gauge)         | The number of jobs in *HELD status in a job queue*Shown as unit*                                                     |
| **ibm\_i.job\_queue.released\_size**(gauge)     | The number of jobs in *RELEASED status in a job queue*Shown as unit*                                                 |
| **ibm\_i.job\_queue.scheduled\_size**(gauge)    | The number of jobs in *SCHEDULED status in a job queue*Shown as unit*                                                |
| **ibm\_i.job\_queue.size**(gauge)               | The number of jobs in a job queue*Shown as unit*                                                                     |
| **ibm\_i.message\_queue.critical\_size**(gauge) | The number of critical messages in a system message queue*Shown as unit*                                             |
| **ibm\_i.message\_queue.size**(gauge)           | The number of messages in a system message queue*Shown as unit*                                                      |
| **ibm\_i.pool.defined\_size**(gauge)            | The size of a pool as defined in the shared pool, subsystem description, or system value QMCHPOOL*Shown as mebibyte* |
| **ibm\_i.pool.reserved\_size**(gauge)           | The amount of storage in a pool reserved for system use*Shown as mebibyte*                                           |
| **ibm\_i.pool.size**(gauge)                     | The amount of main storage in a pool*Shown as mebibyte*                                                              |
| **ibm\_i.subsystem.active**(gauge)              | Whether a subsystem is currently active                                                                              |
| **ibm\_i.subsystem.active\_jobs**(gauge)        | The number of jobs currently active in a subsystem*Shown as unit*                                                    |
| **ibm\_i.system.configured\_cpus**(gauge)       | The total number of configured CPUs for the partition.*Shown as unit*                                                |
| **ibm\_i.system.cpu\_usage**(gauge)             | The average CPU utilization for all the active processors.*Shown as percent*                                         |
| **ibm\_i.system.current\_cpu\_capacity**(gauge) | The processor units that are being used in the partition.                                                            |
| **ibm\_i.system.normalized\_cpu\_usage**(gauge) | The normalized percentage of CPU utilization for processing units in use.*Shown as percent*                          |
| **ibm\_i.system.shared\_cpu\_usage**(gauge)     | The percentage of the total shared processor pool capacity used by all partitions using the pool.*Shown as percent*  |

### Service Checks{% #service-checks %}

**ibm\_i.can\_connect**

Returns `CRITICAL` if the Agent is unable to connect and collect metrics from the monitored IBM i instance, otherwise returns `OK`.

*Statuses: ok, critical*

### Events{% #events %}

The IBM i check does not include any events.

## Troubleshooting{% #troubleshooting %}

Need help? Contact [Datadog support](https://docs.datadoghq.com/help/).
