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:

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:

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:

Results can be filtered by library, name, and status.

IBMi/Pool Copied

The IBMi/Pool service collects memory pool metrics, including:

IBMi/Queue Copied

The IBMi/Queue service discovers message queues and collects per-queue message counts, including:

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:

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:

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:

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:

Monitored files are specified as QSYS paths, such as:

Member paths without .MBR are normalized automatically.

IBMi/FileMember Copied

The IBMi/FileMember service monitors physical file member counts and capacity, including:

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:

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:

Java must be available in the Collection Agent runtime environment.

IBM i environment Copied

The IBM i plugin requires:

*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 whole tlsConfig key. 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

Specify certFile and keyFile together to enable mutual TLS when required by the server. The trustChainFile is 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:

  1. Set up your Collection Agent plugin.
  2. Configure your mappings.
  3. 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:

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:

  • true — Reads from the oldest message (replay).
  • false — Performs a one-cycle, newest-first bootstrap without full backlog replay, then tails new messages only.
  • Omitted — Uses newest-first traversal and may emit messages already in the queue as backlog.

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:
  • /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. Invalid entries are dropped; if no valid entries remain, the service is skipped.

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:

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:

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/System

IBMi/System dataview by disk ID

IBMi/Subsystem dataview Copied

Subsystems matching filter shows the number of subsystem entities matching the configuration filter.

IBMi/Subsystem dataview

IBMi/Subsystem dataview by subsystem key

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/Job dataview

IBMi/Pool dataview Copied

This view shows the storage pools and its corresponding metrics by pool ID.

IBMi/Pool dataview

IBMi/Pool dataview by pool ID

IBMi/Queue dataview Copied

Queues matching filter shows the number of queue entities matching the configuration filter.

IBMi/Queue dataview

IBMi/Queue dataview by message queue path

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/Message dataview

IBMi/MemberRecord dataview Copied

This view shows the physical file member record usage metrics.

IBMi/MemberRecord dataview

IBMi/FileMember dataview Copied

This view shows the physical file member count and capacity metrics.

IBMi/FileMember dataview

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.

IBMi/LogReader dataview

IBMi/LogReader dataview by log file path

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.

Validation behavior Copied

["Geneos"] ["Geneos > Netprobe"] ["Technical Reference"]

Was this topic helpful?