master
md 456 lines 25.6 KB
Rendered Raw
1 # IBM MQ Monitoring Solutions: DevOps Evaluation Guide
2
3 This guide evaluates IBM MQ monitoring capabilities across major monitoring platforms from a DevOps perspective. The analysis focuses on operational requirements, technology choices, and practical deployment considerations.
4
5 ## Monitoring Solutions Evaluated
6
7 1. **Netdata** - Real-time performance monitoring
8 2. **Datadog** - Cloud-based infrastructure monitoring
9 3. **Dynatrace** - Application performance management
10 4. **Splunk** - Data platform with monitoring capabilities
11 5. **Grafana** - Visualization platform (using Prometheus exporter)
12 6. **Zabbix** - Open source enterprise monitoring
13 7. **Nagios** - Infrastructure monitoring and alerting system
14 8. **CheckMK** - Infrastructure monitoring and alerting platform
15
16 ### Solution Abbreviations
17 For table readability, the following abbreviations are used:
18 - **ND** = Netdata
19 - **DD** = Datadog
20 - **DT** = Dynatrace
21 - **SP** = Splunk
22 - **GR** = Grafana
23 - **ZB** = Zabbix
24 - **NG** = Nagios
25 - **CM** = CheckMK
26
27 ## Queue Manager Level Monitoring
28
29 ### Basic Operational Status
30 **Cardinality**: 1 metric set per queue manager
31 **Technology**: PCF MQCMD_INQUIRE_Q_MGR or process monitoring
32 **Authority Required**: +connect +inq on queue manager
33 **Configuration**: None
34 **Value**: Fundamental availability monitoring
35
36 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | PCF Constant |
37 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|--------------|
38 | Status | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | MQIA_Q_MGR_STATUS |
39 | Connection count | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | MQIA_CONNECTION_COUNT |
40 | Command level | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIA_COMMAND_LEVEL |
41 | Platform | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIA_PLATFORM |
42 | Uptime | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | Calculated |
43 | Active channels | ❌ | ✅¹ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | From channel count |
44 | Active listeners | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | MQIA_ACTIVE_LISTENERS |
45 | Publish to sub msgs | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | $SYS topics |
46 | Expired msg count | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | $SYS topics |
47
48 ¹Via channel.channels metric
49
50 ### Resource Utilization
51 **Cardinality**: 1 metric set per queue manager
52 **Technology**: $SYS topic subscriptions (Grafana/Prometheus) or REST API
53 **Authority Required**: +sub on $SYS topics or REST API access
54 **Configuration**: Monitor topics must be enabled (MONINT > 0)
55 **Value**: Capacity planning, performance troubleshooting
56
57 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | Collection Method |
58 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|-------------------|
59 | CPU usage | ✅* | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | $SYS topics |
60 | Memory usage | ✅* | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | $SYS topics |
61 | Log write latency | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | $SYS topics |
62 | File system usage | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | $SYS topics |
63 | Log bytes used | ✅* | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | See log utilization |
64 | Transaction counts | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | $SYS topics |
65
66 *Framework implemented, requires MQ 9.0+ with MONINT configured and attribute ID mapping
67
68 ### Queue Manager Log Utilization
69 **Cardinality**: 1 metric set per queue manager
70 **Technology**: PCF commands
71 **Authority Required**: +inq on queue manager
72 **Configuration**: None
73 **Value**: Log space monitoring and capacity planning
74
75 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | Description |
76 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|-------------|
77 | Log utilization % | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | 6 metrics for log usage |
78
79 ### Advanced Queue Manager Attributes
80 **Cardinality**: 1 metric set per queue manager
81 **Technology**: PCF MQCMD_INQUIRE_Q_MGR
82 **Authority Required**: +connect +inq on queue manager
83 **Configuration**: None
84 **Value**: Configuration tracking and compliance
85
86 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | PCF Constant |
87 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|--------------|
88 | Distribution lists | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIA_DIST_LISTS |
89 | Max message length | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIA_MAX_MSG_LENGTH |
90 | Max channels | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | MQIA_MAX_CHANNELS |
91 | Active channels | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | MQIA_ACTIVE_CHANNELS |
92
93 ## Queue Level Monitoring
94
95 ### Queue Configuration Attributes
96 **Cardinality**: 1 metric set per queue (potentially thousands)
97 **Technology**: PCF MQCMD_INQUIRE_Q
98 **Authority Required**: +inq on queues
99 **Configuration**: None
100 **Value**: Configuration compliance, capacity planning
101
102 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | PCF Constant |
103 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|--------------|
104 | Max depth | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | MQIA_MAX_Q_DEPTH |
105 | Inhibit get/put | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIA_INHIBIT_GET/PUT |
106 | Backout threshold | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIA_BACKOUT_THRESHOLD |
107 | Trigger settings | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIA_TRIGGER_* |
108 | Service interval | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | MQIA_Q_SERVICE_INTERVAL |
109 | Input open option | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIA_DEF_INPUT_OPEN_OPTION |
110 | Depth event config | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIA_Q_DEPTH_*_EVENT |
111
112 ### Queue Runtime Status
113 **Cardinality**: 1 metric set per queue
114 **Technology**: PCF MQCMD_INQUIRE_Q_STATUS
115 **Authority Required**: +inq on queues
116 **Configuration**: None
117 **Value**: Real-time operational monitoring
118
119 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | PCF Constant |
120 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|--------------|
121 | Current depth | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | MQIA_CURRENT_Q_DEPTH |
122 | Depth percentage | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | Calculated |
123 | Open input count | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | MQIA_OPEN_INPUT_COUNT |
124 | Open output count | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | MQIA_OPEN_OUTPUT_COUNT |
125 | Oldest message age | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | MQIACF_OLDEST_MSG_AGE |
126 | Queue file size | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | MQIACF_CUR_Q_FILE_SIZE² |
127 | Uncommitted msgs | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | MQIACF_UNCOMMITTED_MSGS |
128 | Last GET time | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | Time since last GET |
129 | Last PUT time | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | Time since last PUT |
130
131 ²Requires MQ 9.1.5+
132
133 ### Queue Activity Rates (Destructive Operation)
134 **Cardinality**: 1 metric set per queue
135 **Technology**: PCF MQCMD_RESET_Q_STATS
136 **Authority Required**: +chg on queues
137 **Configuration**: MONQ(MEDIUM) or MONQ(HIGH)
138 **Value**: Throughput monitoring
139 **Warning**: Resets counters after reading
140
141 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | PCF Constant |
142 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|--------------|
143 | Enqueue rate | ✅³ | ✅³ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | MQIA_MSG_ENQ_COUNT |
144 | Dequeue rate | ✅³ | ✅³ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | MQIA_MSG_DEQ_COUNT |
145 | High depth | ✅³ | ✅³ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | MQIA_HIGH_Q_DEPTH |
146
147 ³Disabled by default due to destructive nature
148
149 ### Queue MQI Statistics (Non-Intrusive)
150 **Cardinality**: 1 metric set per queue
151 **Technology**: SYSTEM.ADMIN.STATISTICS.QUEUE subscription
152 **Authority Required**: +get on SYSTEM.ADMIN.STATISTICS.QUEUE
153 **Configuration**: STATQ(ON) on queue manager
154 **Value**: Detailed application behavior analysis
155
156 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | Description |
157 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|-------------|
158 | Get operations | ✅ | ✅⁴ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | MQGET count/bytes |
159 | Put operations | ✅ | ✅⁴ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | MQPUT count/bytes |
160 | Put1 operations | ✅ | ✅⁴ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQPUT1 count |
161 | Get/Put failures | ✅ | ✅⁴ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | Failed operations |
162 | Browse operations | ✅ | ✅⁴ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | Browse count/bytes |
163 | Open/Close ops | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQOPEN/MQCLOSE |
164 | Expired messages | ✅ | ✅⁴ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | Expiration count |
165 | Purged messages | ✅ | ✅⁴ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | Purge count |
166 | Non-queued msgs | ✅ | ✅⁴ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | Direct transfers |
167 | Min/Max depth | ✅ | ✅⁴ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | Queue depth range |
168 | Avg queue time | ✅ | ✅⁴ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | Message latency |
169
170 ⁴Optional feature, disabled by default (collect_statistics_metrics)
171
172 ### Dead Letter Queue Handling
173 **Cardinality**: Backout attributes per queue
174 **Technology**: MQCMD_INQUIRE_Q (configuration attributes)
175 **Authority Required**: +inq on queues
176 **Configuration**: Backout requeue name must be configured
177 **Value**: Message poison prevention and failure handling
178 **Note**: No solution provides special DLQ monitoring beyond standard queue metrics
179
180 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | PCF Constant |
181 |--------|----|----|----|----|----|----|----|----|--------------|
182 | Backout threshold | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIA_BACKOUT_THRESHOLD |
183 | Harden get backout | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIA_HARDEN_GET_BACKOUT |
184 | MQDLH parsing | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | Reason code extraction |
185 | DLQ auto-detection | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | Special queue handling |
186 | Source queue tracking | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | From MQDLH header |
187
188 ## Channel Level Monitoring
189
190 ### Channel Configuration
191 **Cardinality**: 1 metric set per channel (tens to hundreds)
192 **Technology**: PCF MQCMD_INQUIRE_CHANNEL
193 **Authority Required**: +inq on channels
194 **Configuration**: None
195 **Value**: Configuration compliance and tuning
196
197 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | PCF Constant |
198 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|--------------|
199 | Batch size | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIACH_BATCH_SIZE |
200 | Batch interval | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIACH_BATCH_INTERVAL |
201 | Heartbeat interval | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIACH_HB_INTERVAL |
202 | Max message length | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIACH_MAX_MSG_LENGTH |
203 | Retry settings | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIACH_*_RETRY |
204 | NPM speed | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIACH_NPM_SPEED |
205 | Sharing conversations | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIACH_SHARING_CONVERSATIONS |
206
207 ### Channel Runtime Status
208 **Cardinality**: 1 metric set per running channel
209 **Technology**: PCF MQCMD_INQUIRE_CHANNEL_STATUS
210 **Authority Required**: +inq on channels
211 **Configuration**: None for basic; MONCHL(MEDIUM/HIGH) for detailed
212 **Value**: Connection health and performance monitoring
213
214 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | PCF Constant |
215 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|--------------|
216 | Status | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | MQIACH_CHANNEL_STATUS |
217 | Status summary | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | Aggregated by status |
218 | Messages | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | MQIACH_MSGS |
219 | Bytes sent/rcvd | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | MQIACH_BYTES_* |
220 | Batches | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | MQIACH_BATCHES |
221 | Current convs | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | Sharing conversations |
222 | SSL key resets | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIACH_SSL_KEY_RESETS |
223 | Connection status | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIACH_CONNS |
224 | Active connections | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | Channel instances |
225 | Channel instances | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | 3 instance metrics |
226 | In-doubt status | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | MQIACH_INDOUBT_STATUS |
227 | XMITQ time short | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | MQIACH_XMITQ_TIME_SHORT |
228 | XMITQ time long | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | MQIACH_XMITQ_TIME_LONG |
229 | Network time | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | Channel timing metrics |
230 | Exit time | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | Channel timing metrics |
231 | Total time | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | Channel timing metrics |
232
233 ### Channel Statistics (Non-Intrusive)
234 **Cardinality**: 1 metric set per channel
235 **Technology**: SYSTEM.ADMIN.STATISTICS.QUEUE subscription
236 **Authority Required**: +get on SYSTEM.ADMIN.STATISTICS.QUEUE
237 **Configuration**: STATQ(ON) and STATCHL(MEDIUM/HIGH)
238 **Value**: Detailed performance analysis
239
240 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | Description |
241 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|-------------|
242 | Messages/Bytes | ✅ | ✅⁴ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | Transfer metrics |
243 | Put retries | ✅ | ✅⁴ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | Retry counts |
244 | Batch metrics | ✅ | ✅⁴ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | Full/partial batches |
245
246 ⁴Optional feature, disabled by default
247
248 ## Topic and Subscription Monitoring
249
250 ### Topic Status
251 **Cardinality**: 1 metric set per topic
252 **Technology**: PCF MQCMD_INQUIRE_TOPIC_STATUS
253 **Authority Required**: +inq on topics
254 **Configuration**: Pub/Sub enabled
255 **Value**: Pub/Sub health monitoring
256
257 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | PCF Constant |
258 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|--------------|
259 | Publisher count | ✅ | ⚠️ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | MQIA_PUB_COUNT |
260 | Subscriber count | ✅ | ⚠️ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | MQIA_SUB_COUNT |
261 | Published msgs | ✅ | ⚠️ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | Via status |
262
263 ⚠️ Documentation claims support but no implementation found
264
265 ### Subscription Status
266 **Cardinality**: 1 metric set per subscription (can be very high)
267 **Technology**: PCF MQCMD_INQUIRE_SUB_STATUS
268 **Authority Required**: +inq on subscriptions
269 **Configuration**: Pub/Sub enabled
270 **Value**: Subscription health and message backlog monitoring
271
272 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | PCF Constant |
273 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|--------------|
274 | Message count | ✅ | ⚠️ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | MQIACF_MESSAGE_COUNT |
275 | Last message time | ✅ | ⚠️ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | MQCACF_LAST_MSG_TIME |
276
277 ⚠️ Documentation claims support but no implementation found
278
279 ## Event Monitoring
280
281 ### Event Queue Subscriptions
282 **Cardinality**: Events as they occur
283 **Technology**: Subscribe to SYSTEM.ADMIN.*.EVENT queues
284 **Authority Required**: +get on event queues
285 **Configuration**: Enable specific event types on queue manager
286 **Value**: Real-time alerting for security and operational events
287
288 | Event Type | ND | DD | DT | SP | GR | ZB | NG | CM | Event Queue |
289 |------------|---------|---------|-----------|--------|---------|--------|--------|---------|-------------|
290 | Authority failures | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | QMGR.EVENT |
291 | Queue depth events | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | QMGR.EVENT |
292 | Channel events | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | CHANNEL.EVENT |
293 | Performance events | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | PERFM.EVENT |
294
295 ## Listener Monitoring
296
297 ### Listener Status
298 **Cardinality**: 1 metric set per listener (typically 1-5)
299 **Technology**: PCF MQCMD_INQUIRE_LISTENER_STATUS
300 **Authority Required**: +inq on listeners
301 **Configuration**: None
302 **Value**: Network endpoint availability
303
304 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM |
305 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|
306 | Status | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
307 | Port/IP | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
308 | Backlog | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
309
310 ## z/OS Specific Monitoring
311
312 ### z/OS Usage Metrics
313 **Cardinality**: 1 metric set per queue manager
314 **Technology**: z/OS specific PCF commands
315 **Authority Required**: +inq on queue manager
316 **Configuration**: z/OS platform only
317 **Value**: z/OS resource usage and performance
318
319 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM | Description |
320 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|-------------|
321 | z/OS CPU usage | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | 8 z/OS metrics |
322 | z/OS memory usage | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | z/OS specific |
323 | z/OS paging | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | z/OS specific |
324
325 ## Cluster Monitoring
326
327 ### Cluster Queue Manager Status
328 **Cardinality**: 1 metric set per cluster queue manager
329 **Technology**: PCF MQCMD_INQUIRE_CLUSTER_Q_MGR
330 **Authority Required**: +inq on cluster
331 **Configuration**: Cluster must be configured
332 **Value**: Cluster health and topology monitoring
333
334 | Metric | ND | DD | DT | SP | GR | ZB | NG | CM |
335 |--------|---------|---------|-----------|--------|---------|--------|--------|---------|
336 | Cluster suspend state | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
337 | Cluster QM status | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
338 | Cluster QM availability | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
339
340 ## Auto-Discovery and Configuration Management
341
342 ### MQ Server Discovery and Instance Management
343 **Technology**: Various (network discovery, configuration files, API calls)
344 **Value**: Automated setup and dynamic environment adaptation
345
346 | Capability | ND | DD | DT | SP | GR | ZB | NG | CM | Description |
347 |------------|----|----|----|----|----|----|----|----|-------------|
348 | Auto-discover MQ servers | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | Network discovery of MQ installations |
349 | Monitor all auto-discovered Queue Managers | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Monitor all QMs found via discovery |
350 | Monitor specific Queue Managers | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Target specific QM instances |
351 | Monitor all auto-discovered Queues | ✅ | ✅⁶ | ❌ | ✅ | ✅ | ✅⁷ | ❌ | ✅ | Auto-discover and monitor all queues |
352 | Monitor specific Queues | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Target specific queue instances |
353 | Monitor all auto-discovered Channels | ✅ | ✅⁶ | ❌ | ✅ | ✅ | ✅⁷ | ❌ | ✅ | Auto-discover and monitor all channels |
354 | Monitor specific Channels | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Target specific channel instances |
355 | Monitor all auto-discovered Listeners | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | Auto-discover and monitor all listeners |
356 | Monitor specific Listeners | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | Target specific listener instances |
357 | Monitor all auto-discovered Topics | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | Auto-discover and monitor all topics |
358 | Monitor specific Topics | ✅ | ⚠️ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | Target specific topic instances |
359 | Monitor all auto-discovered Subscriptions | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | Auto-discover and monitor all subscriptions |
360 | Monitor specific Subscriptions | ✅ | ⚠️ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | Target specific subscription instances |
361
362 ⁶Datadog: `auto_discover_queues` with `queue_patterns`/`queue_regex` filtering
363 ⁷Zabbix: Custom auto-discovery templates (e.g., spectroman/ibm-mq-monitoring)
364
365 ### Configuration Management Approaches
366
367 **Netdata**: Network discovery of MQ servers, but requires explicit configuration per queue manager. Supports regex-based filtering for all object types within configured queue managers.
368
369 **Datadog**: Manual server configuration, automatic queue/channel discovery with `auto_discover_queues`, `queue_patterns`, and `queue_regex` for performance optimization. No topic/subscription auto-discovery.
370
371 **Dynatrace**: Automatic IBM MQ process detection via OneAgent, bulk inquiry options, regex-based queue manager filtering. Manual configuration for queue/channel specifics.
372
373 **Splunk**: Manual configuration with IBM WebSphere MQ Modular Input. Supports multiple queues/channels per data input with regex filtering.
374
375 **Grafana/Prometheus**: Manual server configuration, regex-based filtering for `<queues>`, `<channels>`, `<topics>`, `<subscriptions>` in mq_prometheus exporter configuration.
376
377 **Zabbix**: Manual setup with third-party auto-discovery templates (spectroman/ibm-mq-monitoring) that dynamically create templates for discovered queue managers and objects.
378
379 **Nagios**: Manual configuration per check, supports multiple queues per check with configuration files. Advanced plugins support regex filtering for queue discovery.
380
381 **CheckMK**: Uses `dspmq` command output for queue manager discovery. Manual configuration for queue-specific monitoring. Limited auto-discovery capabilities.
382
383 ## Collection Characteristics
384
385 ### Update Frequency
386 | Solution | Minimum | Typical | Maximum | Architecture |
387 |----------|---------|---------|---------|--------------|
388 | ND | 1s | 1s | 60s | Edge (per-node) |
389 | DD | 15s | 15-30s | 300s | Centralized agent |
390 | DT | 60s | 60s | 300s | Centralized agent |
391 | SP | 10s | 60s | 300s | Centralized |
392 | GR | 15s | 30-60s | 300s | Pull-based |
393 | ZB | 30s | 60-300s | 3600s | Centralized |
394 | NG | 60s | 300s | 3600s | Centralized |
395 | CM | 60s | 60-300s | 3600s | Centralized |
396
397 ### Platform Support
398 | Solution | Collector Platform | Remote Support | Architecture |
399 |----------|-------------------|----------------|--------------|
400 | ND | Linux, Windows, macOS | ✅ Client mode | CGO-based |
401 | DD | Linux, Windows, macOS | ✅ Client mode | Python pymqi |
402 | DT | Cross-platform | ✅ OneAgent | Proprietary |
403 | SP | Cross-platform | ✅ Client mode | Java-based |
404 | GR | Linux, Windows, AIX | ✅ Client mode | Go client |
405 | ZB | Linux only | ❌ Local only | Shell scripts |
406 | NG | Linux, Unix, Windows | ✅ Client mode | Shell/Perl scripts |
407 | CM | Linux, Solaris, AIX, HPUX | ✅ Client mode | password-less root ssh |
408
409 ## Key Technical Differentiators
410
411 **Netdata**: Highest resolution (1s), complete MQI statistics implementation, Linux-only collector
412
413 **Datadog**: Python-based flexibility, endianness handling for AIX/IBM i, significant gap between documentation and implementation
414
415 **Dynatrace**: Commercial APM integration, z/OS specific metrics, channel timing analysis, topology mapping for transaction tracing
416
417 **Splunk**: Event queue monitoring capability, Java-based cross-platform support
418
419 **Grafana/Prometheus**: $SYS topic subscriptions for resource metrics, multiple export formats, comprehensive z/OS support, cluster monitoring
420
421 **Zabbix**: Local monitoring only, requires sudo access, minimal metric coverage
422
423 **Nagios**: Basic health checks focused on availability monitoring, simple alerting model with command-based checks. Supports queue manager status (qmmon), queue depth (qdmon), channel status (chlmon), message age (mamon), port monitoring (portmon/portcon), process monitoring (brkmon/cmdmon), and log monitoring (fdcmon/refmon) functions
424
425 **CheckMK**: Command-line tool based monitoring using native MQ utilities (dspmq, runmqsc). Supports queue manager availability monitoring, basic queue metrics (depth, message age, last GET/PUT times, open counts, queue time), and channel status monitoring with CRITICAL alerts for STOPPED channels. Limited to metrics available through standard MQ command-line tools.
426
427 ## Service Health Checks
428
429 **Technology**: Various (connection tests, PCF queries, process checks)
430 **Value**: Proactive alerting and availability monitoring
431
432 | Check Type | ND | DD | DT | SP | GR | ZB | NG | CM | Description |
433 |------------|---------|---------|-----------|--------|---------|--------|--------|---------|-------------|
434 | Connection check | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Can connect to QM |
435 | Queue manager check | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | QM responding |
436 | Queue availability | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Queue accessible |
437 | Channel health | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Channel status check |
438 | Channel status alerts | ❌ | ✅⁵ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | Status-based alerts |
439
440 ⁵Datadog provides specific service checks with WARNING/CRITICAL based on channel state
441
442 ## Operational Considerations
443
444 1. **Authority Requirements**: All solutions require similar MQ authorities. Event monitoring requires additional permissions. Datadog requires +chg for reset statistics.
445
446 2. **Configuration Impact**: Statistics collection (STATQ) has minimal performance impact. Reset operations are destructive.
447
448 3. **Cardinality Management**: Queue and subscription metrics can create high cardinality. Plan retention accordingly.
449
450 4. **Platform Limitations**: Only Dynatrace, Splunk, and Grafana offer true cross-platform collectors.
451
452 5. **Resolution vs Volume**: Higher resolution (Netdata) provides better anomaly detection but increases storage requirements.
453
454 6. **Endianness**: Datadog provides convert_endianness option for AIX/IBM i platforms.
455
456 7. **$SYS Topics**: Grafana/Prometheus requires MONINT > 0 on queue manager to enable $SYS topic publications for resource metrics.