IBM i
Description
Monitors IBM i partitions over JDBC, using the IBM Toolbox for Java
JTOpen driver (com.ibm.as400.access.AS400JDBCDriver) and the Db2 for i
QSYS2 SQL services. Covers partition CPU, address-space utilization,
ASPs, disk units, monitored subsystems, job status buckets, per-job metrics,
tracked MSGIDs, and configurable operator message queues (QSYS/QSYSOPR by
default).
This connector requires the Enterprise edition of MetricsHub.
Target
Typical platforms: IBM i, AS/400, iSeries, System i, OS/400
Operating system: ibmi
This connector is not available for the local host (it is applicable to remote hosts only).
Prerequisites
Leverages: IBM i Db2 for i SQL Services (QSYS2)
Technology and protocols: SQL/JDBC
Variables:
monitored_subsystems: Comma-separated, single-quoted list of subsystem names to watch (OS400_SUBSYS parity). (default:'QBATCH', 'QCTL', 'QINTER')monitored_msgids: Comma-separated, single-quoted list of IBM i message IDs to track for exact text extraction (OS400_MSGID parity - e.g. 'CPI1466'). (default:'CPF9898', 'CPI1466')monitored_queues: Comma-separated, single-quoted list of 'LIBRARY/QUEUE' pairs to watch for messages (e.g., 'QSYS/QSYSOPR', 'BMC/BMC'). (default:'QSYS/QSYSOPR')message_lookback_minutes: Time window in minutes to scan for new message events (message_events monitor) in monitored queues. Should ideally match or slightly exceed the scrape interval. (default:3)
Examples
CLI
metricshub HOSTNAME -t linux -c +IBMi --jdbc -u USER --jdbc-url "jdbc:as400://HOSTNAME;naming=sql;prompt=false;errors=full" --jdbc-driver-class com.ibm.as400.access.AS400JDBCDriver --jdbc-driver-jar PATH_TO_JTOPEN/jt400-21.0.6-java11.jar
metricshub.yaml
resourceGroups:
<RESOURCE_GROUP>:
resources:
<HOSTNAME-ID>:
attributes:
host.name: <HOSTNAME> # Change with actual host name
host.type: linux
connectors: [ +IBMi ] # Optional, to load only this connector
protocols:
jdbc:
url: jdbc:as400://<HOSTNAME>;naming=sql;prompt=false;errors=full # Change <HOSTNAME> with actual host name
username: <USERNAME> # Change with actual credentials
password: <PASSWORD> # Encrypted using metricshub-encrypt
driver:
className: com.ibm.as400.access.AS400JDBCDriver
jarPath: <PATH_TO_JTOPEN>/jt400-21.0.6-java11.jar # Path to the downloaded JTOpen (jt400) driver
additionalConnectors:
IBMi: # Unique ID. Use 'uses' if different from the original connector ID
uses: IBMi # Optional - Original ID if not in key
force: true # Optional (default: true); false for auto-detection only
variables:
monitored_subsystems: <VALUE> # Replace with desired value.
monitored_msgids: <VALUE> # Replace with desired value.
monitored_queues: <VALUE> # Replace with desired value.
message_lookback_minutes: <VALUE> # Replace with desired value.
Connector Activation Criteria
The IBM i connector will be automatically activated, and its status will be reported as OK if all the below criteria are met:
- The SQL query below succeeds:
- Query:
SELECT 1 FROM QSYS2.SYSTEM_STATUS_INFO FETCH FIRST 1 ROW ONLY - Result contains:
1(regex)
- Query:
Metrics
| Type | Collected Metrics | Specific Attributes |
|---|---|---|
| asp | ibmi.asp.limitibmi.asp.usage{ibmi.asp.state="free"}ibmi.asp.usage{ibmi.asp.state="used"}ibmi.asp.utilization{ibmi.asp.state="free"}ibmi.asp.utilization{ibmi.asp.state="used"} | ibmi.asp.numberidname |
| disk | ibmi.disk.arm.utilizationibmi.disk.utilization{ibmi.disk.state="free"}ibmi.disk.utilization{ibmi.disk.state="used"}system.disk.limitsystem.disk.operations{disk.io.direction="read"}system.disk.operations{disk.io.direction="write"} | ibmi.disk.aspibmi.disk.modelibmi.disk.protection.typeibmi.disk.resource_nameibmi.disk.serialibmi.disk.typeidnamesystem.device |
| job | ibmi.job.status{state="cmnw|cndw|deqw|dlyw|dspw|end|eoj|evtw|hld|jvaw|lckw|lspw|msgw|mtxw|other|psrw|run|selw|semw|sigw|thdw|timw"} | ibmi.job.nameibmi.job.numberibmi.job.typeibmi.job.user |
| jobs | ibmi.jobs.count | ibmi.job.statusidname |
| jobs_detail | ibmi.jobs.detail.count | ibmi.job.nameibmi.job.statusibmi.job.useridname |
| message_events | ibmi.message.event.count | ibmi.message.detailed_msgibmi.message.keyibmi.message.msgidibmi.message.textibmi.message.timestampibmi.message_queue.libraryibmi.message_queue.nameidname |
| message_queue | ibmi.message.count{ibmi.message.severity="critical"}ibmi.message.count{ibmi.message.severity="error"}ibmi.message.count{ibmi.message.severity="info"}ibmi.message.count{ibmi.message.severity="warning"}ibmi.message.inquiry.unansweredibmi.message.tracked.count | ibmi.message_queue.libraryibmi.message_queue.nameidname |
| subsystem | ibmi.subsystem.jobs.activeibmi.subsystem.jobs.limitibmi.subsystem.status{state="active|ending|inactive|restricted|starting"} | ibmi.subsystem.descriptionibmi.subsystem.libraryibmi.subsystem.nameidname |
| system | ibmi.address.utilization{ibmi.address.type="permanent"}ibmi.address.utilization{ibmi.address.type="temporary"}ibmi.cpu.configuredibmi.cpu.interactive.timeibmi.jobs.activesystem.cpu.time{system.cpu.state="user"}system.cpu.utilization{system.cpu.state="idle"}system.cpu.utilization{system.cpu.state="user"} | ibmi.system.partition_idibmi.system.serialidnamesystem.device |