IBM i
Overview Copied
The IBM i Collection Agent plugin collects metrics from IBM i (AS/400) systems using JTOpen APIs. The plugin publishes metrics into Geneos as Dynamic Entity data and does not require any additional software to be installed on the monitored IBM i host.
The plugin enhances Geneos enterprise monitoring by providing native visibility into IBM i system health, subsystem activity, memory pools, message queues, jobs, physical file members, and IFS log files. Use it for consistent monitoring alongside on-premises, cloud, and hybrid environments.
The IBM i Collection Agent plugin allows you to:
- Monitor IBM i systems using a standard Geneos Collection Agent deployment.
- Combine IBM i metrics with metrics from other platforms in a single Geneos view.
- Use Dynamic Entity mappings to reduce Gateway configuration effort.
- Detect performance and capacity issues using Geneos rules and alerts.
Monitored services Copied
You can use the IBM i plugin to monitor different IBM i services by configuring the following service namespaces within the Collection Agent configuration:
| Service | Namespace | Configuration required | Description |
|---|---|---|---|
| System | IBMi/System |
No | CPU, disk-unit, and hardware metrics |
| Subsystem | IBMi/Subsystem |
Optional | Subsystem status and active job details |
| Pool | IBMi/Pool |
No | Storage pool, fault, page, and system ASP metrics |
| Queue | IBMi/Queue |
Optional | Message queue discovery and per-queue message counts |
| Message | IBMi/Message |
Yes | Message queue monitoring and message log events |
| Job | IBMi/Job |
Optional | Job headline metrics and per-job log events |
| Member Record | IBMi/MemberRecord |
Yes | Physical file member record usage metrics |
| File Member | IBMi/FileMember |
Yes | Physical file member count and capacity metrics |
| Log Reader | IBMi/LogReader |
Yes | IFS log file tailing and streaming |
IBMi/System Copied
The IBMi/System service collects system-level metrics, including:
- CPU utilization, processing capacity, interactive performance, DB capability, shared processor pool usage, uncapped CPU capacity, number of processors, and processor sharing attributes.
- Per-disk total space, free space, percent used, percent busy, unit number, disk name, and disk type.
- Hardware attributes such as system identifier, OS version, country/language, processor feature, model, serial number, timezone, main storage size, permanent and temporary address usage, and uptime.
Disk metrics are collected through IBM i program-call list APIs, including QYASPOL, QGYGTLE, and QGYCLST.
IBMi/Subsystem Copied
The IBMi/Subsystem service collects subsystem-level metrics, including:
- Number of subsystem rows matching the configured filters.
- Subsystem status (
ACTIVE,ENDING,INACTIVE,RESTRICTED,STARTING, or runtime fallbackUNKNOWN). - Active job counts and maximum active jobs.
- Number of assigned memory pools.
- Subsystem attributes such as name and library.
Results can be filtered by library, name, and status.
IBMi/Pool Copied
The IBMi/Pool service collects memory pool metrics, including:
- Pool size and reserved size.
- Activity level and max active threads.
- Database and non-database faults/pages.
- Transition rates (active-to-wait, wait-to-ineligible, active-to-ineligible).
- Pool attributes such as name, shared flag, and paging option.
- System totals such as pool count, inactive pools skipped, total auxiliary storage, system ASP size and usage, and partition ID.
IBMi/Queue Copied
The IBMi/Queue service discovers message queues and collects per-queue message counts, including:
- Number of message queues matching configured filters.
- Per-queue message count.
Queue discovery can be filtered by library and queue name using wildcards.
IBMi/Message Copied
The IBMi/Message service monitors message queues and emits log events for individual messages, including:
- Messages emitted as log events in the current collection run.
- Messages matching filters in the current collection run.
- Per-message log events containing key, ID, severity, type, text, and sender metadata.
Use IBMi/Queue when you need queue-depth metrics. IBMi/Message focuses on filtered message event streaming and cycle counts.
Messages can be filtered by:
- Minimum severity.
- Sender job name regex.
- Sender job user regex.
The optional readFromBeginning setting determines where reading starts and how backlog is handled. The collector tracks its position in memory per queue across collection cycles.
IBMi/Job Copied
The IBMi/Job service collects job-level headline metrics and per-job log events, including:
- Total jobs, total active jobs, max jobs, total batch jobs.
- Number of jobs matching configured filters.
- Per-job log events with job number, user, type, status, subsystem, priority, timestamps, end reason, elapsed time, and optional CPU statistics.
Jobs can be filtered by status, type, user, subsystem, and name. Job name filtering supports Java regex mode or pipe-separated IBM i wildcard segments.
IBMi/MemberRecord Copied
The IBMi/MemberRecord service monitors physical file member record usage, including:
- Current record count
- Record capacity
- Percent usage
Monitored files are specified as QSYS paths, such as:
/QSYS.LIB/<LIB>.LIB/<FILE>.FILE/QSYS.LIB/<LIB>.LIB/<FILE>.FILE/<MEMBER>/QSYS.LIB/<LIB>.LIB/<FILE>.FILE/<MEMBER>.MBR
Member paths without .MBR are normalized automatically.
IBMi/FileMember Copied
The IBMi/FileMember service monitors physical file member counts and capacity, including:
- Current member count
- Member capacity
- Percent usage
Monitored files are specified as QSYS file paths: /QSYS.LIB/<LIB>.LIB/<FILE>.FILE.
IBMi/LogReader Copied
The IBMi/LogReader service tails IFS log files and streams lines as log events, including:
- Number of active monitored log file streams.
- Per-file status (
OK,FILE_NOT_FOUND,READ_ACCESS_DENIED,FILE_IO_ERROR,INITIALISING). - Cumulative messages received per file since service start.
- Per-line log events with raw log text.
File names support * and ? wildcards. The rewind option forces reads from the start of the file. File position tracking can be enabled to persist read offsets across restarts.
Prerequisites Copied
Geneos environment Copied
The IBM i Collection Agent plugin requires the following Geneos components:
- Gateway and Netprobe 7.1.x or higher for Dynamic Entity publication.
- Collection Agent 6.0.0 or higher.
Java must be available in the Collection Agent runtime environment.
IBM i environment Copied
The IBM i plugin requires:
- A valid IBM i user profile.
- Authority to query system, subsystem, memory pool, job, message queue, physical file member, and IFS file information.
*ALLOBJ special authority is recommended to ensure full metric coverage. Alternatively, a custom authority profile with equivalent access to the required APIs can be used.
Network connectivity Copied
The Collection Agent must be able to connect to the IBM i host servers on the following JTOpen host service ports:
| Protocol | Port | Description |
|---|---|---|
| TCP | 8470–8476 | IBM i host servers (Plain text) |
| TCP | 9470–9476 | IBM i host servers (TLS) |
| TCP | 23 or 992 | Telnet. This is optional for this plugin, which uses host server ports 847x or 947x. |
Security and TLS Copied
TLS is enabled when at least one field in tlsConfig is provided in the collection-agent.yml file. The IBM i connection uses SecureAS400 with the supplied certificates. The connection uses plain text if tlsConfig is omitted.
Note
For a plain text connection, omit the wholetlsConfigkey. Blank TLS file path values are invalid and prevent collector startup.
This is an example of the tlsConfig using environment variables:
tlsConfig:
trustChainFile: ${env:TRUST_CHAIN_FILE}
certFile: ${env:CERT_FILE}
keyFile: ${env:KEY_FILE}
| Field | Description | Requirement |
|---|---|---|
trustChainFile |
PEM file containing the CA certificates used to verify the IBM i server certificate. | Optional |
certFile |
PEM file containing the client certificate for mutual TLS. Must be paired with keyFile. |
Optional |
keyFile |
PKCS#8 PEM private key for mutual TLS. Must be paired with certFile. |
Optional |
Note
SpecifycertFileandkeyFiletogether to enable mutual TLS when required by the server. ThetrustChainFileis optional but when provided, it must point to a valid and readable PEM trust chain file.
Converting a private key to PKCS#8 format Copied
The keyFile must be in PKCS#8 format (BEGIN PRIVATE KEY). Traditional RSA or EC key formats are not supported. Run the following command to convert an existing key:
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in key.pem -out key-pkcs8.pem
Configure Geneos to deploy the IBM i plugin Copied
The IBM i plugin supports Collection Agent publication into Geneos using Dynamic Managed Entities. Setting up this plugin in Geneos involves the following steps:
- Set up your Collection Agent plugin.
- Configure your mappings.
- Configure other Dynamic Entities in the Gateway. For a more detailed procedure, see Create Dynamic Entities in Collection Agent setup.
Set up your Collection Agent plugin Copied
Use one of the following options to configure the plugin:
- Set up your collector in the Gateway Setup Editor by adding the following configuration in Dynamic Entities > Collectors. For more information, see Collectors in Dynamic Entities.
- Add the following configuration to the
collection-agent.ymlfile on your local machine.
Minimum configuration Copied
This is the minimum configuration to begin collecting IBM i system metrics:
collectors:
- name: ibmiCollector
type: plugin
className: IbmiCollector
systemName: ibmi.example.com
username: ibmiuser
password: ${env:IBMI_PASSWORD}
services:
- name: IBMi/System
Full configuration Copied
This is a full configuration template:
collectors:
- name: ibmiCollector
type: plugin
className: IbmiCollector
# Interval between collections in milliseconds (optional, default: 60000)
collectionInterval: 60000
# IBM i connection details (required)
systemName: ibmi.example.com
username: cecuser
password: ${env:IBMI_PASSWORD}
# Connection timeout in seconds (optional, default: 20)
connectionTimeout: 20
# TLS configuration (optional; secure mode when any field is set)
tlsConfig:
trustChainFile: ${env:TRUST_CHAIN_FILE}
certFile: ${env:CERT_FILE}
keyFile: ${env:KEY_FILE}
# Services to enable (required; at least one recognized service must be listed)
services:
- name: IBMi/System
- name: IBMi/Pool
- name: IBMi/Subsystem
config:
filters:
library: "*ALL"
name: "*ALL"
status:
- ACTIVE
- ENDING
- INACTIVE
- RESTRICTED
- STARTING
- name: IBMi/Queue
config:
filters:
- library: "*ALL"
name: "*ALL"
- name: IBMi/Message
config:
queues:
- queuePath: "/QSYS.LIB/QSYSOPR.MSGQ"
filter:
severity: 0
senderJobName: ""
senderJobUser: ""
readFromBeginning: false
- name: IBMi/Job
config:
filters:
status: ""
type: ""
user: ""
subsystem: ""
name: ""
nameUseRegex: true
enableCpuStatistics: true
- name: IBMi/MemberRecord
config:
filePaths:
- "/QSYS.LIB/QUSRSYS.LIB/MYFILE.FILE"
- name: IBMi/FileMember
config:
filePaths:
- "/QSYS.LIB/MYLIB.LIB/MYFILE.FILE"
- name: IBMi/LogReader
config:
files:
- filename: /www/myapp/logs/access.log
- filename: /QOpenSys/var/log/app_*.log
- filename: /tmp/debug.log
rewind: true
workerPoolSize: 10
filePositionEnabled: true
filePositionMaxInactiveDays: 7
Collector configuration settings Copied
| Setting | Type | Default | Required | Description |
|---|---|---|---|---|
systemName |
String | — | Yes | IBM i host name or IP address. |
username |
String | — | Yes | IBM i user profile name. |
password |
String | — | Yes | IBM i user profile password. Supports environment variable substitution. |
connectionTimeout |
Integer | 20 |
No | Connection timeout in seconds. Must be greater than 0. |
collectionInterval |
Long | 60000 |
No | Interval between collection cycles in milliseconds. Must be greater than 0. |
services |
List | — | Yes | List of services to enable. At least one recognized service must be listed. Blank or duplicate service names fail startup. Unknown service names are logged and removed. |
tlsConfig |
Object | — | No | See Security and TLS. |
Service configuration settings Copied
Configure the services under services[].config.
Each service is listed under services with a name and an optional config block. For IBMi/System and IBMi/Pool, include only the name field as no config block is required.
IBMi/Subsystem Copied
| Setting | Type | Default | Required | Description |
|---|---|---|---|---|
filters |
Object | Match-all filter | No | Filter object containing library, name, and status. Omit the object to use defaults. Explicit null is invalid. |
filters.library |
String | *ALL |
No | IBM i library filter. Accepts *ALL, *ALLUSR, or an exact library name. Values are uppercased automatically. |
filters.name |
String | *ALL |
No | Subsystem name filter. Supports * wildcard. Values are uppercased automatically. |
filters.status |
List | All 5 statuses | No | List of statuses to include: ACTIVE, ENDING, INACTIVE, RESTRICTED, STARTING. |
For example, to monitor only active subsystems in user libraries starting with QC:
- name: IBMi/Subsystem
config:
filters:
library: "*ALLUSR"
name: "QC*"
status:
- ACTIVE
- STARTING
IBMi/Queue Copied
| Setting | Type | Default | Required | Description |
|---|---|---|---|---|
filters |
List | Single *ALL/*ALL entry |
No | List of library/name filter pairs. Omit the list to discover all message queues. Explicit null or an empty list is invalid. |
filters[].library |
String | *ALL |
No | Library filter. Values are uppercased automatically. |
filters[].name |
String | *ALL |
No | Queue name filter. Values are uppercased automatically. |
For example, to monitor queues in a specific library:
- name: IBMi/Queue
config:
filters:
- library: "MYLIB"
name: "*ALL"
IBMi/Message Copied
| Setting | Type | Default | Required | Description |
|---|---|---|---|---|
queues |
List | — | Yes | List of message queue configurations. At least one valid entry is required. |
queues[].queuePath |
String | — | Yes | IBM i message queue path (for example, /QSYS.LIB/QSYSOPR.MSGQ). |
queues[].filter |
Object | Severity 0, no sender filters |
No | Message filter object. Omit it to use defaults. Explicit null is invalid. |
queues[].filter.severity |
Integer | 0 |
No | Minimum message severity (0–99). |
queues[].filter.senderJobName |
String | — | No | Java regex to match sender job name (substring match). |
queues[].filter.senderJobUser |
String | — | No | Java regex to match sender job user (substring match). |
queues[].readFromBeginning |
Boolean | — | No | Behavior depends on the value:
|
For example, to monitor QSYSOPR with severity filter:
- name: IBMi/Message
config:
queues:
- queuePath: "/QSYS.LIB/QSYSOPR.MSGQ"
filter:
severity: 40
readFromBeginning: false
- queuePath: "/QSYS.LIB/MYLIB.LIB/MYQUEUE.MSGQ"
filter:
severity: 0
senderJobName: "QPADEV.*"
IBMi/Job Copied
| Setting | Type | Default | Required | Description |
|---|---|---|---|---|
filters |
Object | No filters | No | Job filter object. Omit it to use defaults. Explicit null is invalid. |
filters.status |
String | "" (all) |
No | Job status filter: ACTIVE, JOBQ, OUTQ, or empty for all. |
filters.type |
String | "" (all) |
No | Job type filter: BATCH, INTERACTIVE, SYSTEM, AUTOSTART, SUBSYSTEMMONITOR, SPOOLEDREADER, SPOOLEDWRITER, SCPFSYSTEM, or empty for all. |
filters.user |
String | "" (all) |
No | User filter. Empty disables user filtering. |
filters.subsystem |
String | "" (all) |
No | Subsystem filter. When non-empty, must be a valid Java regex. |
filters.name |
String | "" (all) |
No | Job name filter. When nameUseRegex is true, must be a valid Java regex. When false, uses pipe-separated IBM i wildcard segments. |
filters.nameUseRegex |
Boolean | true |
No | true treats name as a Java regex. false treats it as pipe-separated wildcard patterns. |
enableCpuStatistics |
Boolean | true |
No | true includes per-job CPU statistics in job log events. |
For example, to monitor only active batch jobs:
- name: IBMi/Job
config:
filters:
status: "ACTIVE"
type: "BATCH"
enableCpuStatistics: true
IBMi/MemberRecord Copied
| Setting | Type | Default | Required | Description |
|---|---|---|---|---|
filePaths |
List | — | Yes | List of QSYS paths to monitor. Accepted formats:
Member paths without |
For example:
- name: IBMi/MemberRecord
config:
filePaths:
- "/QSYS.LIB/QUSRSYS.LIB/QAYPUSR.FILE"
- "/QSYS.LIB/MYLIB.LIB/MYFILE.FILE/MEMBER1.MBR"
IBMi/FileMember Copied
| Setting | Type | Default | Required | Description |
|---|---|---|---|---|
filePaths |
List | — | Yes | List of QSYS file paths in the form: /QSYS.LIB/<LIB>.LIB/<FILE>.FILE. |
For example:
- name: IBMi/FileMember
config:
filePaths:
- "/QSYS.LIB/MYLIB.LIB/MYFILE.FILE"
- "/QSYS.LIB/PRODLIB.LIB/ORDERS.FILE"
IBMi/LogReader Copied
| Setting | Type | Default | Required | Description |
|---|---|---|---|---|
files |
List | — | Yes | List of log file configurations. At least one valid entry is required. |
files[].filename |
String | — | Yes | IFS file path starting with /. Supports * and ? wildcards. |
files[].rewind |
Boolean | false |
No | true reads from the start of the file on first access or after file rotation. |
workerPoolSize |
Integer | 10 |
No | Number of concurrent file reader threads. Must be greater than 0. |
filePositionEnabled |
Boolean | true |
No | true persists byte offsets to resume reading after restart. |
filePositionMaxInactiveDays |
Integer | 7 |
No | Number of days before inactive position records are purged. Must be greater than 0. |
For example:
- name: IBMi/LogReader
config:
files:
- filename: /www/myapp/logs/access.log
- filename: /QOpenSys/var/log/app_*.log
- filename: /tmp/debug.log
rewind: true
workerPoolSize: 5
filePositionEnabled: true
filePositionMaxInactiveDays: 14
Configure your mappings Copied
To display metrics in Geneos, Dynamic Entity mappings must be configured and attached to the Netprobe receiving data from the Collection Agent.
You can configure mappings using one of the following options:
- Add the provided
ibmi_mapping.xmlas an include file in your Gateway. - Set up a custom mapping in Dynamic Entities > Mapping. For more information, see Mapping and mapping group in Dynamic Entities.
The provided mapping template creates Dynamic Entities for IBM i systems and includes an FKM sampler (ibmi-logs-fkm) for log event streaming from message queues, jobs, and IFS log files. The FKM sampler categorizes log events by severity:
CRITICALandERRORevents mapped to fail severity.WARNandINFOevents mapped to warning severity.
Example dataview Copied
Once the plugin and mappings are configured, IBM i metrics are displayed in Geneos dataviews. These are dataview examples for metrics collected per service.
IBMi/System dataview Copied
System metrics which can be monitored by other services will be displayed in their respective services. For example, maxJobs will be monitored by Job service.
IBMi/Subsystem dataview Copied
Subsystems matching filter shows the number of subsystem entities matching the configuration filter.
IBMi/Job dataview Copied
Jobs matching filter shows the number of job data streams matching the configuration filter. These streams are monitored through the FKM.
IBMi/Pool dataview Copied
This view shows the storage pools and its corresponding metrics by pool ID.
IBMi/Queue dataview Copied
Queues matching filter shows the number of queue entities matching the configuration filter.
IBMi/Message dataview Copied
This view shows the number of messages being monitored based on the configuration. Message streams are monitored through the FKM.
In this example, only one message is streamed from /QSYS.LIB/QUSRSYS.LIB/QLWISVR.MSGQ.
IBMi/MemberRecord dataview Copied
This view shows the physical file member record usage metrics.
IBMi/FileMember dataview Copied
This view shows the physical file member count and capacity metrics.
IBMi/LogReader dataview Copied
This view shows the number of log files being monitored based on the configuration. Log file streams are monitored through the FKM.
Metrics Copied
All service data points include the data point property service=<service namespace>. The global dimension ibmi_system identifies the IBM i system. Service-specific dimensions, such as disk_id, subsystem_key, message_queue_path, job_name, file_path, member, and log_file_path, identify lower-level entities.
IBMi/System metrics Copied
| Metric | Type | Unit | Dimensions | Description |
|---|---|---|---|---|
processors |
Entity Attribute | Count | ibmi_system |
Number of processors. |
percentProcessingUnitUsed |
Gauge | Percent | ibmi_system |
CPU utilization percentage. |
currentProcessingCapacity |
Gauge | None | ibmi_system |
Current processing capacity. |
percentCurrentInteractivePerformance |
Gauge | Percent | ibmi_system |
Percent current interactive performance. |
percentDbCapability |
Gauge | Percent | ibmi_system |
Percent DB capability. |
percentSharedProcessorPoolUsed |
Gauge | Percent | ibmi_system |
Percent shared processor pool used. |
percentUncappedCpuCapacityUsed |
Gauge | Percent | ibmi_system |
Percent uncapped CPU capacity used. |
processorSharingAttribute |
Entity Attribute | None | ibmi_system |
Processor sharing attribute. |
totalSpace |
Gauge | MB | ibmi_system + disk_id |
Disk total space. |
freeSpace |
Gauge | MB | ibmi_system + disk_id |
Disk free space. |
percentUsed |
Gauge | Percent | ibmi_system + disk_id |
Disk percent used. |
percentBusy |
Gauge | Percent | ibmi_system + disk_id |
Disk percent busy. |
unit |
Entity Attribute | Count | ibmi_system + disk_id |
Disk unit number. |
name |
Entity Attribute | None | ibmi_system + disk_id |
Disk unit name. |
type |
Entity Attribute | None | ibmi_system + disk_id |
Disk unit type. |
mainStorageSize |
Gauge | MB | ibmi_system |
Main storage size converted from KB using 1024-based MB. |
system |
Entity Attribute | None | ibmi_system |
System identifier. |
os |
Entity Attribute | None | ibmi_system |
Operating system version. |
countryId |
Entity Attribute | None | ibmi_system |
Country identifier. |
languageId |
Entity Attribute | None | ibmi_system |
Language identifier. |
processorFeature |
Entity Attribute | None | ibmi_system |
Processor feature code. |
systemModel |
Entity Attribute | None | ibmi_system |
System model. |
systemSerialNo |
Entity Attribute | None | ibmi_system |
System serial number. |
timezone |
Entity Attribute | None | ibmi_system |
System timezone. |
percentPermanentAddresses |
Gauge | Percent | ibmi_system |
Permanent addresses usage. |
percentTemporaryAddresses |
Gauge | Percent | ibmi_system |
Temporary addresses usage. |
upTime |
Gauge | Days | ibmi_system |
System uptime. |
IBMi/Subsystem metrics Copied
| Metric | Type | Unit | Dimensions | Description |
|---|---|---|---|---|
subsystemsMatchingFilter |
Gauge | Count | ibmi_system |
Subsystem rows matching configured filters this collection run. |
name |
Entity Attribute | None | ibmi_system + subsystem_key |
Subsystem name. |
library |
Entity Attribute | None | ibmi_system + subsystem_key |
Library name. |
activeJobs |
Gauge | Count | ibmi_system + subsystem_key |
Current active jobs in subsystem. |
maxActiveJobs |
Entity Attribute | Count | ibmi_system + subsystem_key |
Maximum active jobs allowed. The value is NOMAX when IBM i reports unlimited. |
pools |
Gauge | Count | ibmi_system + subsystem_key |
Number of pools used by subsystem. |
status |
Status | None | ibmi_system + subsystem_key |
Subsystem status after IBM i normalization. |
IBMi/Pool metrics Copied
| Metric | Type | Unit | Dimensions | Description |
|---|---|---|---|---|
name |
Entity Attribute | None | ibmi_system + pool_id |
Pool name. |
size |
Gauge | KB | ibmi_system + pool_id |
Configured pool size. |
reservedSize |
Gauge | KB | ibmi_system + pool_id |
Reserved pool size. |
activityLevel |
Gauge | Count | ibmi_system + pool_id |
Pool activity level. |
maxActiveThreads |
Gauge | Count | ibmi_system + pool_id |
Maximum active threads. |
databaseFaults |
Gauge | Count | ibmi_system + pool_id |
Database faults per second. |
nonDatabaseFaults |
Gauge | Count | ibmi_system + pool_id |
Non-database faults per second. |
databasePages |
Gauge | Count | ibmi_system + pool_id |
Database pages handled. |
nonDatabasePages |
Gauge | Count | ibmi_system + pool_id |
Non-database pages handled. |
activeToWait |
Gauge | Count | ibmi_system + pool_id |
Active-to-wait transitions per second. |
waitToIneligible |
Gauge | Count | ibmi_system + pool_id |
Wait-to-ineligible transitions per second. |
activeToIneligible |
Gauge | Count | ibmi_system + pool_id |
Active-to-ineligible transitions per second. |
pagingOption |
Entity Attribute | None | ibmi_system + pool_id |
Paging option for pool. |
shared |
Entity Attribute | None | ibmi_system + pool_id |
Indicates if pool is shared. |
pools |
Gauge | Count | ibmi_system |
Number of pools. |
inactivePoolsSkipped |
Gauge | Count | ibmi_system |
Number of inactive pools skipped. |
totalAuxiliaryStorage |
Gauge | MB | ibmi_system |
Total auxiliary storage. |
systemASP |
Gauge | MB | ibmi_system |
System ASP size. |
percentageSystemASPUsed |
Gauge | Percent | ibmi_system |
Percent system ASP used. |
partitionId |
Gauge | Count | ibmi_system |
Partition identifier. |
IBMi/Queue metrics Copied
| Metric | Type | Unit | Dimensions | Description |
|---|---|---|---|---|
queuesMatchingFilter |
Gauge | Count | ibmi_system |
Number of message queues matching configured filters. |
messageCount |
Gauge | Count | ibmi_system + message_queue_path |
Current number of messages in the queue. |
IBMi/Message metrics Copied
| Metric | Type | Unit | Dimensions | Description |
|---|---|---|---|---|
messagesEmitted |
Gauge | Count | ibmi_system + message_queue_path |
Log events published this collection run. |
messagesMatchingFilter |
Gauge | Count | ibmi_system + message_queue_path |
Messages matching configured filters this collection run. |
messageData |
Log Event | None | ibmi_system + message_queue_path |
Per-message log event containing key, ID when present, severity, type when present, text when present, sender job name, sender job user, and sender job number. |
IBMi/Job metrics Copied
| Metric | Type | Unit | Dimensions | Description |
|---|---|---|---|---|
totalJobs |
Gauge | Count | ibmi_system |
Total number of jobs in the system. |
totalActiveJobs |
Gauge | Count | ibmi_system |
Number of currently active jobs. |
maxJobs |
Gauge | Count | ibmi_system |
Maximum number of jobs the system supports. |
totalBatchJobs |
Gauge | Count | ibmi_system |
Number of batch jobs currently running. |
jobsMatchingFilter |
Gauge | Count | ibmi_system |
Number of jobs that matched the configured filter. |
jobData |
Log Event | None | ibmi_system + job_name |
Per-job log event containing number, user, type, status, active job status, queue status, subsystem, priority, timestamps, end reason, elapsed time, and optional CPU fields. |
IBMi/MemberRecord metrics Copied
| Metric | Type | Unit | Dimensions | Description |
|---|---|---|---|---|
currentRecords |
Gauge | Count | ibmi_system + file_path + member |
Current number of records in the member. |
recordCapacity |
Gauge | Count | ibmi_system + file_path + member |
Configured record capacity of the member. |
percentUsage |
Gauge | Percent | ibmi_system + file_path + member |
Member record usage percentage. |
IBMi/FileMember metrics Copied
| Metric | Type | Unit | Dimensions | Description |
|---|---|---|---|---|
currentMembers |
Gauge | Count | ibmi_system + file_path |
Current number of members in the file. |
memberCapacity |
Gauge | Count | ibmi_system + file_path |
Configured member capacity of the file. |
percentUsage |
Gauge | Percent | ibmi_system + file_path |
File member usage percentage. |
IBMi/LogReader metrics Copied
| Metric | Type | Unit | Dimensions | Description |
|---|---|---|---|---|
totalStreams |
Gauge | Count | ibmi_system |
Number of log files currently being monitored. |
status |
Status | None | ibmi_system + log_file_path |
Status of the log file stream (OK, FILE_NOT_FOUND, READ_ACCESS_DENIED, FILE_IO_ERROR, INITIALISING). |
totalMessagesReceived |
Gauge | Count | ibmi_system + log_file_path |
Cumulative number of log messages received since service start. |
logData |
Log Event | None | ibmi_system + log_file_path |
Raw single log line text read from the file. |
Connection behavior Copied
The plugin uses one IBM i connection manager per collector instance.
- On startup, the plugin validates the configuration and attempts an initial connection health check.
- If the initial connection fails, the collector still starts and retries on subsequent collection cycles.
- Before each collection cycle, the connection health is verified. If unhealthy, the plugin disconnects once and reconnects.
- If the reconnection also fails, that collection cycle is skipped. Later cycles continue retrying until the connection becomes healthy.
- TLS validation failures (invalid paths, malformed PEM files, unsupported key formats) fail startup before any collection begins.
- Unknown values for
services[].nameare logged and dropped at collector validation. At least one recognized IBM i service must remain.
Validation behavior Copied
- Collector-level validation failures (
systemName,username,password,services,connectionTimeout,collectionInterval,tlsConfig) prevent collector startup. - Service-level validation failures skip only the affected service entry, while other services continue.
- For list-based configs (
queues,filters,filePaths,files), invalid entries are removed with a warning. If no valid entries remain, that service is skipped. - If all services are skipped, the collector startup fails.
- String values are trimmed before validation unless explicitly defined as raw text or regex.