Collect performance data from your IBM i Hosts via this Remote extension.
The data ingested by the extension, provides Dynatrace with real-time visibility into host performance through interactive visualization tools, dashboards, unified analysis and events. When combined with OneAgent monitoring, you gain the ability to understand how IBM i interacts with the other components in your stack.
For best performance and data collection, these requirements are strict. Always keep your system up to date.
| PC Function | Server Name | Port Non-SSL | Port SSL |
|---|---|---|---|
| • Server Mapper | as-svrmap | 449 | — |
| • License Management | as-central | 8470 | 9470 |
| • Database Access | as-database | 8471 | 9471 |
| • Data Queues | as-dtaq | 8472 | 9472 |
| • IFS Access using Access/Navigator | as-file | 8473 | 9473 |
| • Network Printers | as-netprt | 8474 | 9474 |
| • Remote Command | as-rmtcmd | 8475 | 9475 |
| • Signon Verification | as-signon | 8476 | 9476 |
IBM i Access ODBC driver must be installed on ActiveGate. This is a specific driver provided by IBM for DB2 communication with IBM i hosts.
Connection pooling must be enabled on ODBC driver. On Windows, this is enabled by default.
Due to sensitive system data, IBM requires a user with SECOFR profile to access performance tables and all its functions. Failure to provide this access will cause issues with missing metrics, missing messages in queues, prohibited access to internal functions and calls made by IBM. You are free to configure other user classes with less privileges but it would not be supported.
Due to sensitive system data, IBM requires a user with SECOFR profile to access performance tables and all its functions. Failure to provide this access will cause issues with missing metrics, missing messages in queues, prohibited access to internal functions and calls made by IBM. You are free to configure other user classes with less privileges but it would not be supported.
In addition, ensure that the user profile has *JOBCTL special authorization. It also needs *USE authority to the Work with PTF Groups (WRKPTFGRP) command. In addition, ensure that the user profile has *JOBCTL special authorization. It also needs *USE authority to the Work with PTF Groups (WRKPTFGRP) command.
Follow these instructions if you are using ActiveGates running on Windows:
Go to to IBM i Access - Client Solutions and select Downloads for IBM i Access Solutions.
Log in with your IBM account and accept the License terms.
The correct ODBC driver comes only in the "IBM i Access Client Solutions - Windows Application Package for Windows.". Only this package contains the ODBC driver needed. Do not install the "IBM i Access Client". Make sure you download the Windows package.

Extract file zip archive and follow its instructions to install on the ActiveGate.
Linux distributions do not come with an ODBC driver manager and this is needed to connect to IBM i. unixODBC is the most accepted, compatible driver manager for Linux and it is also approved by IBM.
Installing unixODBC, installs libraries that manage the ODBC driver to connect to IBM i. Following this unixODBC, you must now install the IBM i Access ODBC Driver.
Go to to IBM i Access - Client Solutions and select Downloads for IBM i Access Solutions.
Log in with your IBM account and accept the License terms.
The correct ODBC driver comes only in the "IBM i Access Client Solutions -Linux Application Package for Linux.". Only this package contains the ODBC driver needed. Do NOT install the "IBM i Access Client. Make sure you download the Linux package.

Extract file zip archive and follow its instructions to install on the ActiveGate.
For Linux ActiveGates:
Select which ActiveGate group will run this configuration. At least one ActiveGate must be in your group.
Enable DEBUG only when troubleshooting or support instructs you to do so.
By default, all endpoints defined in a monitoring configuration create a task. Use this setting to create separate tasks for groups of endpoints defined in a monitoring configuration. This will allow you to optimize resource usage on your ActiveGate and potentially distribute execution across other ActiveGates in your group.
Configure each connection to individual hosts. All these onnections will be run from this ActiveGate group.
⚠️ NOTE: For SSL, be sure to configure the IBM i Access Driver to communicate using TLS. On Windows, use the cwbcossl command-line tool that comes with the IBM i Access Driver. For Linux, follow the IBM documentation to use stunnel.

Get Top active jobs: Toggle to collect Top N CPU consuming jobs. (Max 500). This requires the least amount of configuration as it automatically collects most taxing jobs by CPU. Disabling this toggle allows you to manually configure which jobs by certain filters.
Add job filter: If Top active jobs is disabled, you can manually configure rules that match certain jobs, by user and by subsystem too.
Get Top active jobs: Toggle to collect Top N CPU consuming jobs. (Max 500). This requires the least amount of configuration as it automatically collects most taxing jobs by CPU. Disabling this toggle allows you to manually configure which jobs by certain filters.
Add job filter: If Top active jobs is disabled, you can manually configure rules that match certain jobs, by user and by subsystem too.

Add subsystem filter: Configure a rule for subsystems matching a name and/or library they are in.
Add subsystem filter: Configure a rule for subsystems matching a name and/or library they are in.


Local addresses: Enter a comma-separated list of IP addresses or CIDR addresses and their port numbers. This is useful to see traffic incoming traffic statistics to certain ports.
Remote addresses: Enter a comma-separated list of IP addresses or CIDR addresses and their port numbers. This is useful to see traffic outgoing traffic statistics to certain ports.
Local addresses: Enter a comma-separated list of IP addresses or CIDR addresses and their port numbers. This is useful to see traffic incoming traffic statistics to certain ports.
Remote addresses: Enter a comma-separated list of IP addresses or CIDR addresses and their port numbers. This is useful to see traffic outgoing traffic statistics to certain ports.
Define whether to send log events if certain users are disabled. Users must be defined in a comma-separated list.
Polling frequency: By default, data is collected every 1 minute but you may configure frequency here. 1 minute data provides most accurate data.
Connection timeout: Time in seconds before it gives up trying to connect to IBM i Host. This should be fairly quick and should not be beyond 30 seconds.
Query timeout: Time in seconds before running a query timesout.
Important job statuses: A list of common job statuses. This list will keep the possible combination of job statuses to a minimum to avoid consuming too many DDUs. Any status not in this list will be placed in an "Other" status bucket. Log events triggered from job statuses will not be impacted by this list and will always match its true status.
Polling frequency: By default, data is collected every 1 minute but you may configure frequency here. 1 minute data provides most accurate data.
Connection timeout: Time in seconds before it gives up trying to connect to IBM i Host. This should be fairly quick and should not be beyond 30 seconds.
Query timeout: Time in seconds before running a query timesout.
Important job statuses: A list of common job statuses. This list will keep the possible combination of job statuses to a minimum to avoid consuming too many DDUs. Any status not in this list will be placed in an "Other" status bucket. Log events triggered from job statuses will not be impacted by this list and will always match its true status.

Lastly, select which feature sets (metric groups) you would like this configuration to collect. Selecting too few will not give you the proper visibility and you may miss out on important performance data causing gaps or empty screens. See available feature sets.
The formula for the DDU consumption of the extension is:
(15 + (11 * Memory pools) + (7 * Jobs) +(9 * ASPs) + (12 * Disk unit) + (5 * Job queues) +((3 * Output queues) * (3 * Spooled files)) +(1 * Subsystems) + (1 * Network interfaces) +(7 * Network connections) + (1 * Message queues) + 1 History Log ) * 525.6 DDUs/year, per Host(15 + (11 * Memory pools) + (7 * Jobs) +(9 * ASPs) + (12 * Disk unit) + (5 * Job queues) +((3 * Output queues) * (3 * Spooled files)) +(1 * Subsystems) + (1 * Network interfaces) +(7 * Network connections) + (1 * Message queues) + 1 History Log ) * 525.6 DDUs/year, per Host
The following example assumes you collect all feature sets (metric groups) every minute.
Example, monitoring 1 Host with 4 Memory pools, 5 Subsystems, 1 ASP with 20 Disk units, 10 Job queues, 200 Jobs, 1 Message queue, 3 Interfaces, 5 Network connections, 3 Output queues and each one with 5 spooled files produces the following:
(15 + (11 * 4) + (7 * 200) + (9 * 10) + (12 * 20) + (10 * 5) + ((3 * 3) * (3 * 5)) + (1 *5) + (1 * 3) + (7 * 5) * (1 *1) +1) * 525.6 DDUs/year = 1,061,185 (1M) DDUs/year
DDU cost above does not include any possible Log events or Custom events triggered by the extension. For more information on this, please visit the DDU log event cost and DDU custom event cost pages.














When activating your extension using monitoring configuration, you can limit monitoring to one of the feature sets. To work properly the extension has to collect at least one metric after the activation.
In highly segmented networks, feature sets can reflect the segments of your environment. Then, when you create a monitoring configuration, you can select a feature set and a corresponding ActiveGate group that can connect to this particular segment.
All metrics that aren't categorized into any feature set are considered to be the default and are always reported.
A metric inherits the feature set of a subgroup, which in turn inherits the feature set of a group. Also, the feature set defined on the metric level overrides the feature set defined on the subgroup level, which in turn overrides the feature set defined on the group level.
| Metric name | Metric key | Description |
|---|---|---|
| CPU rate | ibm_i.system.cpu_rate | The average CPU rate expressed as a percentage where 100% indicates the processor is running at its nominal frequency. A value above or below 100% indicates how much the processor has been slowed down (throttled) or speeded up (turbo) relative to the nominal frequency for the processor model. |
| Avg. CPU utilization | ibm_i.system.avg_cpu_utilization | The average CPU utilization for all the active processors in 15 seconds elapsed time. |
| Min. CPU utilization | ibm_i.system.min_cpu_utilization | The CPU utilization of the processor that reported the minimum amount of CPU utilization in 15 seconds elapsed time. |
| Max. CPU utilization | ibm_i.system.max_cpu_utilization | The CPU utilization of the processor that reported the maximum amount of CPU utilization in 15 seconds elapsed time. |
| Metric name | Metric key | Description |
|---|---|---|
| Total size | ibm_i.output_queue.spooled_file.total_size | The size of the spooled file. |
| Total pages | ibm_i.output_queue.spooled_file.total_pages | The total number of pages in the file. |
| Remaining copies | ibm_i.output_queue.spooled_file.total_remaining_copies | The number of copies remaining to print. |
| Metric name | Metric key | Description |
|---|---|---|
| Matched messages | ibm_i.message_queue.matched_messages | Number of messages that are in queue that match severity, message IDs and message types (if configured). |
| Metric name | Metric key | Description |
|---|---|---|
| Current size | ibm_i.memory_pool.current_size | The amount of main storage, in megabytes, in the pool. |
| Reserved size | ibm_i.memory_pool.reserved_size | The amount of storage, in megabytes, in the pool reserved for system use (for example, for save/restore operations). |
| Defined size | ibm_i.memory_pool.defined_size | The size of the pool, in megabytes, as defined in the shared pool, subsystem description, or system value QMCHPOOL. Contains the null value for a pool without a defined size. |
| Max active threads | ibm_i.memory_pool.maximum_active_threads | The maximum number of threads that can be active in the pool at any one time. |
| Current threads | ibm_i.memory_pool.current_threads | The number of threads currently using the pool. |
| Ineligible threads | ibm_i.memory_pool.current_ineligible_threads | The number of ineligible threads in the pool. Ineligible threads are threads that are ready to run but the memory pool activity level is at its maximum. |
| Database faults | ibm_i.memory_pool.database_faults | The rate, in page faults per second, of database page faults against pages containing either database access paths or data. |
| Non-database faults | ibm_i.memory_pool.non_database_faults | The rate, in page faults per second, of nondatabase page faults against pages other than those designated as database pages. |
| Total faults | ibm_i.memory_pool.total_faults | The rate, in page faults per second, of database faults and non-database faults. |
| Database pages | ibm_i.memory_pool.database_pages | The rate, in pages per second, at which database pages are brought into the storage pool. |
| Non-database pages | ibm_i.memory_pool.non_database_pages | The rate in pages per second at which nondatabase pages are brought into the storage pool. |
| Metric name | Metric key | Description |
|---|---|---|
| Total size | ibm_i.spooling.total_size | Sum size of all spooled files by user. |
| Metric name | Metric key | Description |
|---|---|---|
| Total capacity | ibm_i.asp.total_capacity | The total number of used and unused megabytes in the ASP. A special value of -2 is returned if the size of this field is exceeded. Contains the null value if the capacity cannot be determined. |
| Capacity available | ibm_i.asp.total_capacity_available | The total number of unused megabytes in the ASP. A special value of -2 is returned if the value was too big to return. Contains the null value if the capacity cannot be determined. |
| Percent ASP used | ibm_i.asp.percentage_asp_used | Percentage of ASP space used against total capacity. |
| Protected capacity | ibm_i.asp.protected_capacity | The total number of used and unused megabytes in the ASP that are protected by mirroring or device parity. A special value of -2 is returned if the value was too big to return. Contains the null value if the capacity cannot be determined. |
| Protected capacity available | ibm_i.asp.protected_capacity_available | The number of unused megabytes in the ASP that are protected by mirroring or device parity. A special value of -2 is returned if the value was too big to return. Contains the null value if the capacity cannot be determined. |
| Percent protected ASP used | ibm_i.asp.percentage_protected_asp_used | Percentage of protected ASP space used against protected total capacity. |
| Unprotected capacity | ibm_i.asp.unprotected_capacity | The total number of used and unused megabytes in the ASP that are not protected by mirroring or device parity. A special value of -2 is returned if the value was too big to return. Contains the null value if the capacity cannot be determined. |
| Unprotected capacity available | ibm_i.asp.unprotected_capacity_available | The number of unused megabytes in the ASP that are not protected by mirroring or device parity. A special value of -2 is returned if the value was too big to return. Contains the null value if the capacity cannot be determined. |
| Unprotected ASP used | ibm_i.asp.percentage_unprotected_asp_used | Percentage of unprotected ASP space used against unprotected total capacity. |
| Metric name | Metric key | Description |
|---|---|---|
| Unit capacity | ibm_i.disk.unit_storage_capacity | Storage capacity for configured units. |
| Unit space available | ibm_i.disk.unit_space_available | Space available on the unit for use. |
| Unit percent used | ibm_i.disk.percent_used | The percentage that the disk unit has been consumed. |
| SSD power-on days | ibm_i.disk.ssd_power_on_days | The number of days that the SSD device has been active in a system. Contains the null value if this disk is not SSD or if the information is not available. |
| SSD life remaining | ibm_i.disk.ssd_life_remaining | The percentage of the lifetime remaining for the SSD device. This estimates the percentage of usable function remaining for the drive before it should be replaced. Calculations for this percentage include more than just the number of bytes written and supported. Contains the null value if this disk is not SSD or if the information is not available. |
| I/O requests | ibm_i.disk.io_requests | The average number of I/O requests for read and write operations that occurred per second during the elapsed time. |
| Avg I/O request size | ibm_i.disk.request_size | The average size of an I/O request in KB during the elapsed time. |
| Avg read requests | ibm_i.disk.read_requests | The average number of requests per second to transfer data from the disk unit during the elapsed time. |
| Avg write requests | ibm_i.disk.write_requests | The average number of requests per second to transfer data to the disk unit during the elapsed time. |
| Avg data read | ibm_i.disk.data_read | The average amount of data, in KB, transferred from the disk unit, per request, during the elapsed time. |
| Avg data written | ibm_i.disk.data_written | The average amount of data, in KB, transferred to the disk unit, per request, during the elapsed time. |
| Percent busy | ibm_i.disk.percent_busy | The estimated percentage of time the disk unit is being used during the elapsed time. |
| Metric name | Metric key | Description |
|---|---|---|
| Matched messages | ibm_i.history_log.matched_messages | Number of messages in History log that matched severity, message IDs and message types (if configured). |
| Metric name | Metric key | Description |
|---|---|---|
| Interface status | ibm_i.interface.status | A counter of 1 for every network interface that is on host. Used for returning all metadata about an interface. |
| Metric name | Metric key | Description |
|---|---|---|
| Total size | ibm_i.output_queue.total_size | The total size of spooled files in this output queue. |
| Metric name | Metric key | Description |
|---|---|---|
| Number of jobs | ibm_i.job_queue.number_of_jobs | The number of jobs in the queue. |
| Active jobs | ibm_i.job_queue.active_jobs | The current number of jobs that are active that came through this job queue entry. Contains the null value if this job queue is not associated with an active subsystem |
| Held jobs | ibm_i.job_queue.held_jobs | The current number of jobs that are in *HELD status. |
| Released jobs | ibm_i.job_queue.released_jobs | The current number of jobs that are in *RELEASED status. |
| Scheduled jobs | ibm_i.job_queue.scheduled_jobs | The current number of jobs that are in *SCHEDULED status. |
| Metric name | Metric key | Description |
|---|---|---|
| Number of files | ibm_i.output_queue.number_of_files | The total number of spooled or printer files currently on this output queue. |
| Number of writers | ibm_i.output_queue.number_of_writers | The number of printer writers that have been started to this output queue. |
| Total size | ibm_i.output_queue.total_size | The total size of spooled files in this output queue. |
| Metric name | Metric key | Description |
|---|---|---|
| Availability | ibm_i.system.availability | Percentage of time this host was available or reachable from this extension |
| Metric name | Metric key | Description |
|---|---|---|
| Threads | ibm_i.job.threads_cnt | The number of active threads in the job. |
| Temporary storage | ibm_i.job.temporary_storage_used | The amount of temporary storage, in megabytes, that is currently allocated to this job. |
| Total disk I/O | ibm_i.job.disk_io | The number of disk I/O operations performed by the job during the measurement time interval. This is the sum of the asynchronous and synchronous disk I/O. |
| CPU percentage | ibm_i.job.cpu_percentage | The percent of processing unit time attributed to this job during the measurement time interval. |
| Response time | ibm_i.job.response_time | The total response time over the measurement time interval, in seconds. ONLY available to interactive jobs. |
| Instances | ibm_i.job.instances | Number of job instances (or job numbers) running under a user and job name. This number can indicate if too few instances or too many instances are running for a specific process. |
| Status count | ibm_i.job.status_cnt | A count of job status for each job. This will visualize how many job instances are in different status. If an event for status was configured to trigger during endpoint configuration, event will contain the specific job number. |
| Metric name | Metric key | Description |
|---|---|---|
| Active jobs | ibm_i.subsystem.current_active_jobs | The number of jobs currently active in the subsystem. This number includes held jobs but excludes jobs that are disconnected or suspended because of a transfer secondary job or a transfer group job. If STATUS is INACTIVE, returns 0. |
| Metric name | Metric key | Description |
|---|---|---|
| Total jobs | ibm_i.system.total_jobs | The total number of user and system jobs that are currently in the system. |
| Active jobs | ibm_i.system.active_jobs | The number of jobs active in the system (jobs that have been started, but have not yet ended), including both user and system jobs. |
| Percentage total jobs | ibm_i.system.percentage_total_jobs | The percentage of current total jobs over maximum jobs allowed. |
| % Interactive performance | ibm_i.system.interactive_jobs | The percentage of interactive performance assigned to this logical partition. This value is a percentage of the total interactive performance available to the entire physical system. |
| System ASP used | ibm_i.system.system_asp_used | The percentage of the system storage pool (ASP number 1) currently in use. |
| Maximum temporary storage used | ibm_i.system.maximum_temporary_storage_used | The largest amount of storage, in megabytes, used for temporary objects at any one time since the last IPL. |
| Current temporary storage used | ibm_i.system.current_temporary_storage | The current amount of storage, in megabytes, in use for temporary objects. |
| Active threads | ibm_i.system.active_threads | The number of initial and secondary threads in the system (threads that have been started, but have not yet ended), including both user and system threads. |
| Metric name | Metric key | Description |
|---|---|---|
| Idle time | ibm_i.network.idle_time | The length of time, in seconds, since the last activity on this connection. |
| Bytes sent | ibm_i.network.bytes_sent_count | The number of bytes sent to the remote host. |
| Bytes received | ibm_i.network.bytes_received_count | The number of bytes received from the remote host. |
| Round trip time | ibm_i.network.round_trip_time | The smoothed round-trip time interval in milliseconds. This is a measure of the time required for a segment on the connection to arrive at its destination, to be processed, and to return an acknowledgment to the client. Contains null if PROTOCOL is UDP. |
| Round trip variance | ibm_i.network.round_trip_variance | The variance in milliseconds from the previous round-trip time. Contains null if PROTOCOL is UDP |
| Retransmissions | ibm_i.network.retransmissions_count | The number of times the local system retransmitted a segment because an acknowledgement was not received. This is a count of all segments resent during the entire time the connection has been active. Contains null if PROTOCOL is UDP. |
| TCP connections established | ibm_i.network.tcp_connections_currently_established | The number of TCP connections for which the current state is either ESTABLISHED or CLOSE-WAIT. Contains null if PROTOCOL is UDP. |