IBM i quickstart guide

This quickstart guide helps you configure and validate IBM i Collection Agent plugin services using minimal sample configurations.

Start with a basic IBM i server connection, verify connectivity with IBMi/System, and then enable additional monitoring services one at a time. Each section includes a small working example, placeholder values to replace, and the metrics or events you should expect to see.

This guide focuses on common monitoring scenarios and initial validation. For complete configuration details and service reference information, refer to the IBM i user guide.

How to use this guide Copied

  1. Use one section at a time. Start with IBM i server connection.
  2. Confirm that the collector can connect by enabling IBMi/System.
  3. Add one monitoring service at a time.
  4. Replace the sample host, user, password, queue names, file paths, and log paths with your IBM i values.

The following placeholders appear throughout this guide:

Placeholder Replace with
ibmi.example.com IBM i host name or IP address
ibmiuser IBM i user profile
${env:IBMI_PASSWORD} Password stored in an environment variable or secret
MYLIB Your IBM i library
APPUSER Your application user profile
QBATCH Your target subsystem
APP* Your application object or job name pattern

Important

Keep service names exactly as shown. For example, use IBMi/System, not ibmi/system.

IBM i server connection Copied

The collector needs IBM i connection details before any service can collect data.

Use a user profile that has authority to read the IBM i resources you want to monitor. For an initial setup, start with IBMi/System because it does not require extra service configuration.

Basic connection without TLS Copied

collectors:
  - name: ibmiCollector
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    services:
      - name: IBMi/System

This example does the following:

Connection with TLS Copied

Use TLS when the IBM i host servers are configured for secure connections.

collectors:
  - name: ibmiCollectorTls
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    tlsConfig:
      trustChainFile: /secure/certs/ibmi-trust-chain.pem
    services:
      - name: IBMi/System

Connection with mutual TLS Copied

Use mutual TLS when the IBM i server requires a client certificate.

collectors:
  - name: ibmiCollectorMtls
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    tlsConfig:
      trustChainFile: /secure/certs/ibmi-trust-chain.pem
      certFile: /secure/certs/client-cert.pem
      keyFile: /secure/certs/client-key-pkcs8.pem
    services:
      - name: IBMi/System

Connection notes Copied

Monitoring IBMi/System metrics Copied

Use IBMi/System to monitor general IBM i health.

This service collects system-level metrics such as CPU usage, disk capacity, disk busy percentage, main storage size, system attributes, and uptime.

Use cases:

Sample configuration Copied

collectors:
  - name: ibmiSystemMetrics
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    services:
      - name: IBMi/System

Example output:

Important

If this service does not publish data, verify the host, credentials, network ports, and IBM i user authority before you test other services.

Monitoring IBMi/Job metrics Copied

Use IBMi/Job to monitor IBM i job counts and publish details for jobs that match the configured filter.

This service collects total jobs, active jobs, maximum jobs, batch jobs, a count of jobs that match the filter, and per-job event payloads.

Use cases:

Sample configuration Copied

The following is a sample configuration for active batch jobs for one application.

collectors:
  - name: ibmiJobMetrics
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    services:
      - name: IBMi/Job
        config:
          filters:
            status: "ACTIVE"
            type: "BATCH"
            name: "APP.*"
            nameUseRegex: true
            user: "APPUSER"
            subsystem: "QBATCH"
          enableCpuStatistics: true

Change these values:

Example output:

Note

If no jobs match, temporarily set status, type, name, user, and subsystem to empty strings, and then add filters back one at a time.

Monitoring IBMi/Pool metrics Copied

Use IBMi/Pool to monitor IBM i storage pools.

This service collects pool count, pool size, reserved size, activity levels, page and fault counters, transition counters, system ASP values, and pool attributes.

Use cases:

Sample configuration Copied

collectors:
  - name: ibmiPoolMetrics
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    services:
      - name: IBMi/Pool

Example output:

Important

If system metrics work but pool rows are missing, verify that the IBM i user can read pool information and that the pools are active.

Monitoring IBMi/Subsystem metrics Copied

Use IBMi/Subsystem to monitor subsystem status and active job counts.

This service collects subsystem status, active jobs, maximum active jobs, pool count, subsystem name, and subsystem library.

Use cases:

Sample configuration Copied

The following is a sample configuration for monitoring active application subsystems.

collectors:
  - name: ibmiSubsystemMetrics
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    services:
      - name: IBMi/Subsystem
        config:
          filters:
            library: "*ALL"
            name: "APP*"
            status:
              - ACTIVE
              - STARTING
              - ENDING

Change these values:

Example output:

Note

If no subsystems match, set name to "*ALL" and include all statuses, and then narrow the filter.

Monitoring IBMi/Queue metrics Copied

Use IBMi/Queue to monitor message queue depth.

This service discovers message queues and publishes the current number of messages in each matching queue. It does not publish the message text. Use IBMi/Message when you need the message content.

Use cases:

Sample configuration Copied

The following is a sample configuration for monitoring application message queues.

collectors:
  - name: ibmiQueueMetrics
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    services:
      - name: IBMi/Queue
        config:
          filters:
            - library: "QUSRSYS"
              name: "APP*"
            - library: "MYLIB"
              name: "ERROR*"

Change these values:

Example output:

Note

If no queues match, start with library: "*ALL" and name: "*ALL", and then narrow the filter after queues appear.

Monitoring IBMi/Message events Copied

Use IBMi/Message to read messages from specific IBM i message queues and publish matching messages as log events. This service returns message content. If you only need queue depth, use IBMi/Queue.

Use cases:

Sample configuration Copied

The following is a sample configuration for monitoring severe QSYSOPR messages.

collectors:
  - name: ibmiMessageEvents
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    services:
      - name: IBMi/Message
        config:
          queues:
            - queuePath: "/QSYS.LIB/QSYSOPR.MSGQ"
              filter:
                severity: 40
                senderJobName: ""
                senderJobUser: ""
              readFromBeginning: false

Change these values:

Example output:

Note

For this setup, keep readFromBeginning: false so that older queue messages are not replayed on the first run.

Monitoring IBMi/MemberRecord metrics Copied

Use IBMi/MemberRecord to monitor record usage inside IBM i database file members.

This service collects current records, record capacity, and percent usage per member.

Use cases:

Sample configuration Copied

The following is a sample configuration for monitoring all members in a file.

collectors:
  - name: ibmiMemberRecordMetrics
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    services:
      - name: IBMi/MemberRecord
        config:
          filePaths:
            - "/QSYS.LIB/MYLIB.LIB/ORDERS.FILE"

Change these values:

Example paths for initial setups:

/QSYS.LIB/MYLIB.LIB/ORDERS.FILE
/QSYS.LIB/MYLIB.LIB/ORDERS.FILE/ORDERS2026.MBR

Example output:

Note

If no rows appear, verify that the file path is correct and that the IBM i user has authority to read the file and member details.

Monitoring IBMi/FileMember metrics Copied

Use IBMi/FileMember to monitor how many members are currently in a database file.

This service collects current member count, member capacity, and percent usage at the file level.

Use cases:

Sample configuration Copied

collectors:
  - name: ibmiFileMemberMetrics
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    services:
      - name: IBMi/FileMember
        config:
          filePaths:
            - "/QSYS.LIB/MYLIB.LIB/ORDERS.FILE"
            - "/QSYS.LIB/MYLIB.LIB/CUSTOMER.FILE"

Change these values:

Use only file-level paths:

/QSYS.LIB/<LIBRARY>.LIB/<FILE>.FILE

Example output:

Note

If the path includes a member name such as .MBR, use IBMi/MemberRecord instead.

Monitoring IBMi/LogReader events Copied

Use IBMi/LogReader to tail IFS log files and publish each new line as a log event.

This service reads IFS files, supports wildcard file names, stores file positions, and can follow newly rotated files.

Use cases:

Sample configuration Copied

The following is a sample configuration for reading application logs.

collectors:
  - name: ibmiLogReaderEvents
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    services:
      - name: IBMi/LogReader
        config:
          files:
            - filename: "/QOpenSys/var/log/app_*.log"
              rewind: false
          workerPoolSize: 10
          filePositionEnabled: true
          filePositionMaxInactiveDays: 7

Change these values:

Example output:

Note

For this setup, keep rewind: false so that older log content is not replayed on the first run.

Small setup bundles Copied

Use these configurations when you want a slightly broader setup after you test individual services.

Basic health setup Copied

collectors:
  - name: ibmiBasicHealthSetup
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    services:
      - name: IBMi/System
      - name: IBMi/Pool

Operations setup Copied

collectors:
  - name: ibmiOperationsSetup
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    services:
      - name: IBMi/System
      - name: IBMi/Subsystem
        config:
          filters:
            library: "*ALL"
            name: "*ALL"
            status:
              - ACTIVE
              - STARTING
              - ENDING
              - INACTIVE
              - RESTRICTED
      - name: IBMi/Queue
        config:
          filters:
            - library: "QSYS"
              name: "QSYSOPR"
      - name: IBMi/Message
        config:
          queues:
            - queuePath: "/QSYS.LIB/QSYSOPR.MSGQ"
              filter:
                severity: 40
                senderJobName: ""
                senderJobUser: ""
              readFromBeginning: false

Application setup Copied

collectors:
  - name: ibmiApplicationSetup
    type: plugin
    className: IbmiCollector
    systemName: ibmi.example.com
    username: ibmiuser
    password: ${env:IBMI_PASSWORD}
    collectionInterval: 60000
    connectionTimeout: 20
    services:
      - name: IBMi/System
      - name: IBMi/Job
        config:
          filters:
            status: "ACTIVE"
            type: "BATCH"
            name: "APP.*"
            nameUseRegex: true
            user: "APPUSER"
            subsystem: "QBATCH"
          enableCpuStatistics: true
      - name: IBMi/Message
        config:
          queues:
            - queuePath: "/QSYS.LIB/QSYSOPR.MSGQ"
              filter:
                severity: 30
                senderJobName: "APP.*"
                senderJobUser: "APPUSER"
              readFromBeginning: false
      - name: IBMi/LogReader
        config:
          files:
            - filename: "/QOpenSys/var/log/app_*.log"
              rewind: false
          workerPoolSize: 10
          filePositionEnabled: true
          filePositionMaxInactiveDays: 7

Next steps Copied

After you validate connectivity and basic monitoring:

["Geneos"] ["Geneos > Netprobe"] ["User Guide"]

Was this topic helpful?