| 1 | # IBM i (AS/400) Monitoring Solutions Comparison |
| 2 | |
| 3 | This document provides a comprehensive comparison of IBM i monitoring solutions and their capabilities. |
| 4 | |
| 5 | ## Solutions Overview |
| 6 | |
| 7 | ### 1. Netdata IBM.d AS400 Module |
| 8 | **Repository**: https://github.com/netdata/netdata |
| 9 | **Language**: Go |
| 10 | **Connection**: ODBC (unixODBC + IBM i Access ODBC Driver) |
| 11 | **Architecture**: Direct ODBC connection with configurable reset statistics |
| 12 | **IBM i Version**: 7.2+ (enhanced features for 7.3+, 7.4+) |
| 13 | **Unique Features**: |
| 14 | - Real-time, high-resolution metrics |
| 15 | - Statistics reset control |
| 16 | - Cardinality management |
| 17 | - Extensive network, disk health, and HTTP server monitoring |
| 18 | |
| 19 | ### 2. Datadog IBM i Integration |
| 20 | **Repository**: https://github.com/DataDog/integrations-core/tree/master/ibm_i |
| 21 | **Language**: Python |
| 22 | **Connection**: ODBC (IBM i Access ODBC Driver) |
| 23 | **Architecture**: Subprocess-based query execution with connection pooling |
| 24 | **IBM i Version**: 7.2+ (enhanced support for 7.3+) |
| 25 | **Unique Features**: |
| 26 | - Message queue monitoring with severity filtering |
| 27 | - Job queue detail breakdown (released, scheduled, held) |
| 28 | - Normalized CPU metrics |
| 29 | - Job queue duration tracking |
| 30 | |
| 31 | ### 3. Prometheus JDBC Exporter (ThePrez) |
| 32 | **Repository**: https://github.com/ThePrez/prometheus-exporter-jdbc |
| 33 | **Language**: Java |
| 34 | **Connection**: JDBC (IBM JT400 bundled) |
| 35 | **Architecture**: Multi-threaded metric collection |
| 36 | **IBM i Version**: Any version with JDBC support |
| 37 | **Unique Features**: |
| 38 | - Custom SQL queries |
| 39 | - Multi-row/single-row modes |
| 40 | - Service Commander integration |
| 41 | - Interval-based or point-in-time collection |
| 42 | |
| 43 | ### 4. IBM i Remote Prometheus Monitoring (Chadys) |
| 44 | **Repository**: https://github.com/Chadys/ibmi-remote-prometeus-monitoring |
| 45 | **Language**: Python |
| 46 | **Connection**: ODBC (pyodbc) |
| 47 | **Architecture**: Prometheus client library with continuous refresh |
| 48 | **IBM i Version**: 7.2+ (gracefully handles version differences) |
| 49 | **Unique Features**: |
| 50 | - Prometheus-compliant naming |
| 51 | - Automatic unit conversion |
| 52 | - Graceful downtime handling |
| 53 | - Multi-server support |
| 54 | |
| 55 | ### 5. Check_AS400 Nagios Plugin |
| 56 | **Repository**: https://github.com/cjt74392/check_as400 |
| 57 | **Language**: Java |
| 58 | **Connection**: Telnet (optionally SSL/TLS) |
| 59 | **Architecture**: Command-line plugin for Nagios |
| 60 | **IBM i Version**: 5.3+ (adaptations up to 7.3) |
| 61 | **Unique Features**: |
| 62 | - Multi-language support (EN/FR/DE/IT) |
| 63 | - iCluster/MIMIX high availability monitoring |
| 64 | - Job-specific checks and troubleshooting |
| 65 | - Problem management integration |
| 66 | |
| 67 | ### 6. IBM Nagios for i (Official) - ARCHIVED |
| 68 | **Repository**: https://github.com/IBM/nagios-for-i *(No longer maintained)* |
| 69 | **Language**: Java |
| 70 | **Connection**: JDBC (IBM JT400) |
| 71 | **Architecture**: Daemon server or standalone process |
| 72 | **IBM i Version**: 7.1+ (DiskConfig not supported in 7.5+) |
| 73 | **Unique Features**: |
| 74 | - SQL Services based monitoring |
| 75 | - Daemon mode for efficiency |
| 76 | - HMC monitoring support |
| 77 | - Nagios XI wizard integration |
| 78 | |
| 79 | ### 7. New Relic AS/400 Integration |
| 80 | **Repository**: https://github.com/newrelic-experimental/nri-as400 |
| 81 | **Language**: Java |
| 82 | **Connection**: JT400 native APIs |
| 83 | **Architecture**: 5 separate OHI for New Relic Infrastructure |
| 84 | **IBM i Version**: Any version supporting JT400 |
| 85 | **Unique Features**: |
| 86 | - Message queue checkpoint management |
| 87 | - Separate OHI components for modular deployment |
| 88 | - Detailed job-level monitoring with MSGW status |
| 89 | - Storage pool thread transition metrics |
| 90 | |
| 91 | ### 8. Uptime Infrastructure Monitor AS/400 Plugin |
| 92 | **Repository**: https://github.com/uptimesoftware/ibm-as400-monitor |
| 93 | **Language**: Java |
| 94 | **Connection**: JT400 native APIs with program calls |
| 95 | **Architecture**: Plugin for Uptime Infrastructure Monitor (v7.3-7.7) |
| 96 | **IBM i Version**: Any version supporting JT400 |
| 97 | **Unique Features**: |
| 98 | - PTF (Program Temporary Fix) monitoring |
| 99 | - Multiple specialized monitor types |
| 100 | - Custom command execution (DRIFT/RTVASPPERC) |
| 101 | - Simple plugin-based deployment |
| 102 | |
| 103 | ### 9. Zabbix AS/400 Templates |
| 104 | **Repositories**: |
| 105 | - https://github.com/zabbix/community-templates |
| 106 | - https://github.com/muutech/zabbix-templates |
| 107 | **Language**: N/A (template configurations) |
| 108 | **Connection**: SNMP or Agent emulator (requires external implementation) |
| 109 | **Architecture**: Templates for Zabbix monitoring system (v3.0+) |
| 110 | **IBM i Version**: Depends on SNMP support or agent emulator |
| 111 | **Unique Features**: |
| 112 | - Process discovery |
| 113 | - Output queue monitoring |
| 114 | - SNMP-based memory monitoring |
| 115 | - *Note: Templates only - requires separate implementation* |
| 116 | |
| 117 | ## Metrics Comparison |
| 118 | |
| 119 | ### Legend |
| 120 | - ✅ = Fully supported |
| 121 | - ⚠️ = Partial support |
| 122 | - ❌ = Not supported |
| 123 | - 🔧 = Configurable/Custom |
| 124 | - 📊 = With performance data |
| 125 | |
| 126 | ### System & CPU Metrics |
| 127 | |
| 128 | | Metric | Netdata | Datadog | Prometheus | Chadys | check_as400 | IBM Nagios | New Relic | Uptime | Zabbix | |
| 129 | |--------|---------|---------|------------|--------|-------------|------------|-----------|---------|--------| |
| 130 | | CPU Utilization | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️¹ | |
| 131 | | CPU Configuration | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 132 | | CPU Capacity | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | |
| 133 | | CPU Rate/Activity | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 134 | | Min/Max CPU | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 135 | | Per-Job CPU | ✅ | ✅ | 🔧 | ❌ | ✅ | ✅ | ✅ | ❌ | ⚠️¹ | |
| 136 | | Top CPU Jobs | ✅² | ❌ | 🔧 | ❌ | ✅ | ❌ | ❌ | ❌ | ⚠️¹ | |
| 137 | |
| 138 | ¹ *Depends on agent emulator implementation* |
| 139 | ² *Enable `collect_active_jobs` to capture top CPU jobs* |
| 140 | |
| 141 | ### Memory & Storage Metrics |
| 142 | |
| 143 | | Metric | Netdata | Datadog | Prometheus | Chadys | check_as400 | IBM Nagios | New Relic | Uptime | Zabbix | |
| 144 | |--------|---------|---------|------------|--------|-------------|------------|-----------|---------|--------| |
| 145 | | Memory Pools | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ⚠️¹ | |
| 146 | | Pool Threads | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | |
| 147 | | Main Storage | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ⚠️² | |
| 148 | | Temp Storage | ✅ | ⚠️ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | |
| 149 | | Storage Buckets | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 150 | | Address Usage | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | |
| 151 | |
| 152 | ¹ *Depends on agent emulator* |
| 153 | ² *SNMP version supports via HOST-RESOURCES-MIB* |
| 154 | |
| 155 | ### Disk & ASP Metrics |
| 156 | |
| 157 | | Metric | Netdata | Datadog | Prometheus | Chadys | check_as400 | IBM Nagios | New Relic | Uptime | Zabbix | |
| 158 | |--------|---------|---------|------------|--------|-------------|------------|-----------|---------|--------| |
| 159 | | Disk Busy | ✅ | ✅ | 🔧 | ❌ | ✅ | ❌ | ❌ | ❌ | ⚠️¹ | |
| 160 | | Disk I/O | ✅ | ✅ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️¹ | |
| 161 | | Disk Space | ✅ | ✅ | 🔧 | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 162 | | Disk Health | ✅ | ❌ | 🔧 | ❌ | ✅ | ⚠️² | ❌ | ❌ | ✅ | |
| 163 | | SSD Metrics | ✅ | ❌ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 164 | | ASP Usage | ✅ | ✅ | 🔧 | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | |
| 165 | | ASP Storage | ✅ | ❌ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 166 | |
| 167 | ¹ *Depends on agent emulator* |
| 168 | ² *Not supported in 7.5+* |
| 169 | |
| 170 | ### Job & Workload Metrics |
| 171 | |
| 172 | | Metric | Netdata | Datadog | Prometheus | Chadys | check_as400 | IBM Nagios | New Relic | Uptime | Zabbix | |
| 173 | |--------|---------|---------|------------|--------|-------------|------------|-----------|---------|--------| |
| 174 | | Active Jobs | ✅ | ✅ | 🔧 | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 175 | | Job by Type | ✅ | ❌ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 176 | | Job Status | ✅ | ✅ | 🔧 | ❌ | ✅ | ✅ | ✅ | ✅ | ⚠️¹ | |
| 177 | | Job Queues | ✅ | ✅ | 🔧 | ❌ | ✅ | ❌ | ✅ | ✅ | ⚠️¹ | |
| 178 | | Subsystems | ✅ | ✅ | 🔧 | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | |
| 179 | | Job Temp Storage | ✅ | ✅ | 🔧 | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | |
| 180 | | Job Threads | ✅ | ❌ | 🔧 | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | |
| 181 | |
| 182 | ¹ *Depends on agent emulator* |
| 183 | |
| 184 | ### Network & Messaging |
| 185 | |
| 186 | | Metric | Netdata | Datadog | Prometheus | Chadys | check_as400 | IBM Nagios | New Relic | Uptime | Zabbix | |
| 187 | |--------|---------|---------|------------|--------|-------------|------------|-----------|---------|--------| |
| 188 | | Network Connections | ✅ | ❌ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 189 | | Network Interfaces | ✅ | ❌ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 190 | | HTTP Servers | ✅ | ❌ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 191 | | Message Queues | ✅ | ✅ | 🔧 | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 192 | | Output Queues | ✅ | ❌ | 🔧 | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | |
| 193 | | Message Checkpoints | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | |
| 194 | |
| 195 | ### Special Features |
| 196 | |
| 197 | | Feature | Netdata | Datadog | Prometheus | Chadys | check_as400 | IBM Nagios | New Relic | Uptime | Zabbix | |
| 198 | |---------|---------|---------|------------|--------|-------------|------------|-----------|---------|--------| |
| 199 | | HA Monitoring | ❌ | ❌ | ❌ | ❌ | ✅¹ | ❌ | ❌ | ❌ | ❌ | |
| 200 | | PTF Monitoring | ❌ | ❌ | 🔧 | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | |
| 201 | | System Values | ❌ | ❌ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 202 | | Plan Cache | ✅ | ❌ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 203 | | Custom SQL | ❌ | ⚠️ | ✅ | ⚠️ | ❌ | ✅ | ❌ | ⚠️² | ❌ | |
| 204 | | Problem Detection | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | |
| 205 | | Long Running SQL | ❌ | ❌ | 🔧 | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | |
| 206 | | Login Test | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | |
| 207 | |
| 208 | ¹ *MIMIX and iCluster support* |
| 209 | ² *Custom commands like DRIFT/RTVASPPERC* |
| 210 | |
| 211 | ## Implementation Comparison |
| 212 | |
| 213 | | Aspect | Netdata | Datadog | Prometheus | Chadys | check_as400 | IBM Nagios | New Relic | Uptime | Zabbix | |
| 214 | |--------|---------|---------|------------|--------|-------------|------------|-----------|---------|--------| |
| 215 | | **Deployment** | Plugin | Agent | Standalone | Standalone | Nagios Plugin | Nagios Plugin | NR OHI | Plugin | Template | |
| 216 | | **Multi-Server** | ✅ | ✅ | ❌¹ | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️² | |
| 217 | | **Statistics Reset** | ✅ | ❌ | ✅ | ✅ | N/A | N/A | ✅ | ✅ | ⚠️² | |
| 218 | | **Auto-adapt Version** | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ⚠️² | |
| 219 | | **Daemon Mode** | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ⚠️² | |
| 220 | | **Security** | 🔒 | 🔒 | 🔒 | 🔒 | ⚠️³ | 🔒 | 🔒 | 🔒 | ⚠️² | |
| 221 | | **Maintenance** | ✅ Active | ✅ Active | ✅ Active | ✅ Active | ✅ Active | ❌ Archived | ⚠️ Experimental | ❓ Unknown | N/A⁴ | |
| 222 | |
| 223 | ¹ *One remote server at a time* |
| 224 | ² *Depends on agent emulator implementation* |
| 225 | ³ *Telnet unencrypted by default, SSL/TLS optional* |
| 226 | ⁴ *Template only, requires implementation* |
| 227 | 🔒 *Encrypted connection* |
| 228 | |
| 229 | ## SQL Services & APIs Used |
| 230 | |
| 231 | | Service/API | Netdata | Datadog | Prometheus | Chadys | check_as400 | IBM Nagios | New Relic | Uptime | Zabbix | |
| 232 | |-------------|---------|---------|------------|--------|-------------|------------|-----------|---------|--------| |
| 233 | | SYSTEM_STATUS() | ✅ | ✅ | 🔧 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 234 | | SYSTEM_ACTIVITY_INFO() | ✅ | ❌ | 🔧 | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | |
| 235 | | ACTIVE_JOB_INFO() | ✅ | ✅ | 🔧 | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | |
| 236 | | MEMORY_POOL() | ✅ | ❌ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 237 | | MEMORY_POOL_INFO | ❌ | ✅ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 238 | | SYSDISKSTAT | ✅ | ✅ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 239 | | MESSAGE_QUEUE_INFO | ❌ | ✅ | 🔧 | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | |
| 240 | | NETSTAT_INFO | ✅ | ❌ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 241 | | HTTP_SERVER_INFO | ✅ | ❌ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 242 | | SYSTMPSTG | ✅ | ❌ | 🔧 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
| 243 | | QWCRSSTS API | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | |
| 244 | | QUSRJOBI API | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | |
| 245 | | Telnet/Screen Scraping | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | |
| 246 | | SNMP | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️¹ | |
| 247 | |
| 248 | ¹ *SNMP version available* |
| 249 | 🔧 *Configurable via custom SQL* |
| 250 | |
| 251 | ## Unique Capabilities by Solution |
| 252 | |
| 253 | **Netdata**: |
| 254 | - Network interface and HTTP server monitoring (exclusive) |
| 255 | - SSD health and age monitoring |
| 256 | - Comprehensive temporary storage tracking with buckets |
| 257 | - Plan cache monitoring |
| 258 | - Message and output queue metrics with cardinality safeguards |
| 259 | - Built-in cardinality limits to prevent metric explosion |
| 260 | - Statistics reset control |
| 261 | |
| 262 | **Datadog**: |
| 263 | - Message severity filtering |
| 264 | - Job queue duration tracking |
| 265 | - Normalized CPU metrics |
| 266 | |
| 267 | **Prometheus JDBC**: |
| 268 | - Full custom SQL support |
| 269 | - Multi-row/single-row collection modes |
| 270 | - Service Commander integration |
| 271 | |
| 272 | **Chadys**: |
| 273 | - Automatic unit conversion to Prometheus standards |
| 274 | - Graceful downtime handling |
| 275 | |
| 276 | **check_as400**: |
| 277 | - HA monitoring (MIMIX/iCluster) |
| 278 | - Problem detection and management |
| 279 | - Multi-language support (EN/FR/DE/IT) |
| 280 | - Login test capability |
| 281 | |
| 282 | **New Relic**: |
| 283 | - Binary message queue checkpointing |
| 284 | - Storage pool thread transition metrics |
| 285 | |
| 286 | **Uptime**: |
| 287 | - PTF (Program Temporary Fix) monitoring (exclusive) |
| 288 | - Custom command execution (DRIFT/RTVASPPERC) |
| 289 | |
| 290 | **Zabbix**: |
| 291 | - Template-based configuration |
| 292 | - Process discovery |
| 293 | - SNMP support option |
| 294 | |
| 295 | ## Notes on IBM i Version Compatibility |
| 296 | |
| 297 | All solutions adapt functionality based on IBM i version: |
| 298 | - **7.2**: Basic functionality for all solutions |
| 299 | - **7.3+**: Enhanced queries, active job info, subsystem monitoring |
| 300 | - **7.4+**: Full SYSTEM_STATUS() detailed info (Netdata) |
| 301 | - **Legacy (5.3-7.1)**: Only check_as400 fully supports |