Skip to content

Commit ff5f3c1

Browse files
authored
Merge pull request #8 from liurui-software/ibmmq1
Add listener and channel metrics to IBMMQ agent
2 parents 142b6a9 + fe0b9bb commit ff5f3c1

File tree

6 files changed

+309
-50
lines changed

6 files changed

+309
-50
lines changed

ojr-ibmmq/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44
}
55

66
group = "com.ojr"
7-
version = "0.1.1"
7+
version = "0.1.2"
88

99
java {
1010
sourceCompatibility = JavaVersion.VERSION_1_8

ojr-ibmmq/src/main/java/com/ojr/ibmmq/MQDc.java

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import com.ojr.core.metric.RawMetric;
77
import com.ojr.ibmmq.mqclient.DataQuerier;
88
import com.ojr.ibmmq.mqclient.MQClient;
9+
import com.ojr.ibmmq.mqclient.queriers.ChannelQuerier;
10+
import com.ojr.ibmmq.mqclient.queriers.ListenerQuerier;
911
import com.ojr.ibmmq.mqclient.queriers.QmgrQuerier;
1012
import com.ojr.ibmmq.mqclient.queriers.QueueQuerier;
1113

@@ -66,6 +68,8 @@ public void processParameters(Map<String, Object> properties, MQDcConfig MQDcCon
6668
mqClient = new MQClient(this);
6769
registerQuerier(new QmgrQuerier(mqClient));
6870
registerQuerier(new QueueQuerier(mqClient, queuesMonitored));
71+
registerQuerier(new ListenerQuerier(mqClient));
72+
registerQuerier(new ChannelQuerier(mqClient));
6973
}
7074

7175
@Override

ojr-ibmmq/src/main/java/com/ojr/ibmmq/MQDcUtil.java

+105-37
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,24 @@
33
import com.ojr.core.metric.MetricQueryResult;
44

55
public class MQDcUtil {
6+
7+
/**
8+
* Configuration Parameters:
9+
*/
10+
public static final String PARAM_QUEUE_MANAGER = "queueManager";
11+
public static final String PARAM_IS_LOCAL = "isLocal";
12+
public static final String PARAM_USER = "user";
13+
public static final String PARAM_PASSWORD = "password";
14+
public static final String PARAM_HOST = "host";
15+
public static final String PARAM_PORT = "port";
16+
public static final String PARAM_CHANNEL = "channel";
17+
public static final String PARAM_QUEUES_MONITORED = "queuesMonitored";
18+
public static final String PARAM_CUSTOM_EVENT_QUEUES = "customEventQueues";
19+
public static final String PARAM_KEYSTORE = "keystore";
20+
public static final String PARAM_KEYSTORE_PASSWORD = "keystorePassword";
21+
public static final String PARAM_CIPHER_SUITE = "cipherSuite";
22+
23+
624
/**
725
* Metrics definitions:
826
*/
@@ -12,82 +30,125 @@ public class MQDcUtil {
1230
public static final String UNIT_STATUS = "{status}";
1331
public static final String UNIT_COUNT = "{count}";
1432

15-
public static final String QMGR_META = "qmgr.metadata";
33+
public static final String QMGR_META = "ibmmq.qmgr.metadata";
1634
public static final String QMGR_META_DESC = "The metadata of the queue manager";
1735
public static final String QMGR_META_UNIT = "{metadata}";
1836
public static final String VERSION = "version";
1937
public static final String PLATFORM = "platform";
2038

21-
public static final String QMGR_CMD_LEVEL = "qmgr.cmd.level";
39+
public static final String QMGR_CMD_LEVEL = "ibmmq.qmgr.cmd.level";
2240
public static final String QMGR_CMD_LEVEL_DESC = "The command level of the queue manager";
2341
public static final String QMGR_CMD_LEVEL_UNIT = "{level}";
2442

25-
public static final String QMGR_MAX_HANDLES = "qmgr.max.handles";
43+
public static final String QMGR_MAX_HANDLES = "ibmmq.qmgr.max.handles";
2644
public static final String QMGR_MAX_HANDLES_DESC = "Maximum handles of the queue manager";
2745
public static final String QMGR_MAX_HANDLES_UNIT = UNIT_COUNT;
2846

29-
public static final String QMGR_CONNECTION_COUNT = "qmgr.connection.count";
47+
public static final String QMGR_CONNECTION_COUNT = "ibmmq.qmgr.connection.count";
3048
public static final String QMGR_CONNECTION_COUNT_DESC = "The count of connections to the queue manager";
3149
public static final String QMGR_CONNECTION_COUNT_UNIT = UNIT_COUNT;
3250

33-
public static final String QMGR_STATUS = "qmgr.status";
51+
public static final String QMGR_STATUS = "ibmmq.qmgr.status";
3452
public static final String QMGR_STATUS_DESC = "The status of the queue manager. (1: STARTING, 2: RUNNING, 3: QUIESCING, 4: STANDBY)";
3553
public static final String QMGR_STATUS_UNIT = UNIT_STATUS;
3654

37-
public static final String QMGR_CHINIT_STATUS = "qmgr.chinit.status";
55+
public static final String QMGR_CHINIT_STATUS = "ibmmq.qmgr.chinit.status";
3856
public static final String QMGR_CHINIT_STATUS_DESC = "The status of the channel initiator of the queue manager" +
39-
"(0: INACTIVE, 1: STARTING, 2: RUNNING, 3: STOPPING, 4: RETRYING)";
57+
" (0: INACTIVE, 1: STARTING, 2: RUNNING, 3: STOPPING, 4: RETRYING)";
4058
public static final String QMGR_CHINIT_STATUS_UNIT = UNIT_STATUS;
4159

42-
public static final String QMGR_START_TIME = "qmgr.start.time";
60+
public static final String QMGR_START_TIME = "ibmmq.qmgr.start.time";
4361
public static final String QMGR_START_TIME_DESC = "The time (Epoch second) when the queue manager was started";
4462
public static final String QMGR_START_TIME_UNIT = UNIT_SEC;
4563

46-
public static final String QMGR_START_TIME_FORMATED = "qmgr.start.time.formated";
64+
public static final String QMGR_START_TIME_FORMATED = "ibmmq.qmgr.start.time.formated";
4765
public static final String QMGR_START_TIME_FORMATED_DESC = "The time (formated as \"yyyyMMdd.HHmmss\") when the queue manager was started";
4866
public static final String QMGR_START_TIME_FORMATED_UNIT = "{time}";
4967

50-
public static final String QMGR_PUBSUB_STATUS = "qmgr.pubsub.status";
68+
public static final String QMGR_PUBSUB_STATUS = "ibmmq.qmgr.pubsub.status";
5169
public static final String QMGR_PUBSUB_STATUS_DESC = "The status of the pub/sub of the queue manager" +
52-
"(0: INACTIVE, 1: STARTING, 2: STOPPING, 3: ACTIVE, 4: COMPAT, 5: ERROR, 6: REFUSED)";
70+
" (0: INACTIVE, 1: STARTING, 2: STOPPING, 3: ACTIVE, 4: COMPAT, 5: ERROR, 6: REFUSED)";
5371
public static final String QMGR_PUBSUB_STATUS_UNIT = UNIT_STATUS;
5472

55-
public static final String QUEUE_META = "queue.metadata";
73+
public static final String QUEUE_META = "ibmmq.queue.metadata";
5674
public static final String QUEUE_META_DESC = "The metadata of the queue";
5775
public static final String QUEUE_META_UNIT = "{metadata}";
5876
public static final String QUEUE = "queue";
5977
public static final String TYPE = "type";
6078
public static final String DELIVERY = "delivery";
6179
public static final String USAGE = "usage";
6280

63-
public static final String QUEUE_DEPTH = "queue.depth";
81+
public static final String QUEUE_DEPTH = "ibmmq.queue.depth";
6482
public static final String QUEUE_DEPTH_DESC = "Current depth of the queue";
6583
public static final String QUEUE_DEPTH_UNIT = UNIT_COUNT;
6684

67-
public static final String QUEUE_MAX_DEPTH = "queue.max.depth";
85+
public static final String QUEUE_MAX_DEPTH = "ibmmq.queue.max.depth";
6886
public static final String QUEUE_MAX_DEPTH_DESC = "Maximum depth of the queue";
6987
public static final String QUEUE_MAX_DEPTH_UNIT = UNIT_COUNT;
7088

71-
public static final String QUEUE_UNCOMMITED_MSG = "queue.uncommited.messages";
89+
public static final String QUEUE_UNCOMMITED_MSG = "ibmmq.queue.uncommited.messages";
7290
public static final String QUEUE_UNCOMMITED_MSG_DESC = "Uncommited messages of the queue";
7391
public static final String QUEUE_UNCOMMITED_MSG_UNIT = UNIT_COUNT;
7492

75-
public static final String QUEUE_OPEN_INPUT = "queue.open.input";
93+
public static final String QUEUE_OPEN_INPUT = "ibmmq.queue.open.input";
7694
public static final String QUEUE_OPEN_INPUT_DESC = "Number of open for input from the queue";
7795
public static final String QUEUE_OPEN_INPUT_UNIT = UNIT_COUNT;
7896

79-
public static final String QUEUE_OPEN_OUTPUT = "queue.open.output";
97+
public static final String QUEUE_OPEN_OUTPUT = "ibmmq.queue.open.output";
8098
public static final String QUEUE_OPEN_OUTPUT_DESC = "Number of open for output to the queue";
8199
public static final String QUEUE_OPEN_OUTPUT_UNIT = UNIT_COUNT;
82100

83-
public static final String QUEUE_ENQ_COUNT = "queue.enq.count";
101+
public static final String QUEUE_ENQ_COUNT = "ibmmq.queue.enq.count";
84102
public static final String QUEUE_ENQ_COUNT_DESC = "The count of enqueue to the queue";
85103
public static final String QUEUE_ENQ_COUNT_UNIT = UNIT_COUNT;
86104

87-
public static final String QUEUE_DEQ_COUNT = "queue.deq.count";
105+
public static final String QUEUE_DEQ_COUNT = "ibmmq.queue.deq.count";
88106
public static final String QUEUE_DEQ_COUNT_DESC = "The count of dequeue from the queue";
89107
public static final String QUEUE_DEQ_COUNT_UNIT = UNIT_COUNT;
90108

109+
public static final String LISTENER_META = "ibmmq.listener.metadata";
110+
public static final String LISTENER_META_DESC = "The metadata of the listener";
111+
public static final String LISTENER_META_UNIT = "{metadata}";
112+
public static final String LISTENER = "listener";
113+
public static final String IP = "ip";
114+
public static final String PORT = "port";
115+
116+
public static final String LISTENER_STATUS = "ibmmq.listener.status";
117+
public static final String LISTENER_STATUS_DESC = "The status of the listener" +
118+
" (0: Stopped, 1: Quiescing, 2: Running, 3: Stopping, 4: Retrying)";
119+
public static final String LISTENER_STATUS_UNIT = "{status}";
120+
121+
public static final String CHANNEL_STATUS = "ibmmq.channel.status";
122+
public static final String CHANNEL_STATUS_DESC = "The status of the channel" +
123+
" (0: Inactive, 1: Binding, 2: Quiescing, 3: Running, 4: Stopping, 5: Retrying, 6: Stopped, 7: Requesting, 8: Paused, 13: Initializing, 14: Switching)";
124+
public static final String CHANNEL_STATUS_UNIT = "{status}";
125+
public static final String CHANNEL = "channel";
126+
127+
public static final String CHANNEL_INDOUBT_STATUS = "ibmmq.channel.indoubt.status";
128+
public static final String CHANNEL_INDOUBT_STATUS_DESC = "The in-doubt status of the channel (0: No, 1: Yes)";
129+
public static final String CHANNEL_INDOUBT_STATUS_UNIT = "{status}";
130+
131+
public static final String CHANNEL_TYPE = "ibmmq.channel.type";
132+
public static final String CHANNEL_TYPE_DESC = "The type of the channel" +
133+
" (1: Sender, 2: Server, 3: Receiver, 4: Requester, 5: All, 6: Client connection, 7: Server connection, 8: Cluster receiver, 9: Cluster sender, 10: Telemetry channel, 11: AMQP)";
134+
public static final String CHANNEL_TYPE_UNIT = "{type}";
135+
136+
public static final String CHANNEL_BUFFERS_SENT = "ibmmq.channel.buffers.sent";
137+
public static final String CHANNEL_BUFFERS_SENT_DESC = "The number of buffers sent by the channel";
138+
public static final String CHANNEL_BUFFERS_SENT_UNIT = UNIT_COUNT;
139+
140+
public static final String CHANNEL_BUFFERS_RECEIVED = "ibmmq.channel.buffers.received";
141+
public static final String CHANNEL_BUFFERS_RECEIVED_DESC = "The number of buffers received by the channel";
142+
public static final String CHANNEL_BUFFERS_RECEIVED_UNIT = UNIT_COUNT;
143+
144+
public static final String CHANNEL_BYTES_SENT = "ibmmq.channel.bytes.sent";
145+
public static final String CHANNEL_BYTES_SENT_DESC = "The number of bytes sent by the channel";
146+
public static final String CHANNEL_BYTES_SENT_UNIT = UNIT_COUNT;
147+
148+
public static final String CHANNEL_BYTES_RECEIVED = "ibmmq.channel.bytes.received";
149+
public static final String CHANNEL_BYTES_RECEIVED_DESC = "The number of bytes received by the channel";
150+
public static final String CHANNEL_BYTES_RECEIVED_UNIT = UNIT_COUNT;
151+
91152

92153
/**
93154
* Query results:
@@ -110,27 +171,34 @@ public static MetricQueryResult getQueueMetadataResult(String queue, String type
110171
return result;
111172
}
112173

113-
114-
public static MetricQueryResult getSimpleQueueMetricResult(String queue, int depth) {
115-
MetricQueryResult result = new MetricQueryResult(depth);
174+
public static MetricQueryResult getSimpleQueueMetricResult(String queue, int value) {
175+
MetricQueryResult result = new MetricQueryResult(value);
116176
result.setAttribute(QUEUE, queue);
117177
result.setKey(queue);
118178
return result;
119179
}
120180

121-
/**
122-
* Configuration Parameters:
123-
*/
124-
public static final String PARAM_QUEUE_MANAGER = "queueManager";
125-
public static final String PARAM_IS_LOCAL = "isLocal";
126-
public static final String PARAM_USER = "user";
127-
public static final String PARAM_PASSWORD = "password";
128-
public static final String PARAM_HOST = "host";
129-
public static final String PARAM_PORT = "port";
130-
public static final String PARAM_CHANNEL = "channel";
131-
public static final String PARAM_QUEUES_MONITORED = "queuesMonitored";
132-
public static final String PARAM_CUSTOM_EVENT_QUEUES = "customEventQueues";
133-
public static final String PARAM_KEYSTORE = "keystore";
134-
public static final String PARAM_KEYSTORE_PASSWORD = "keystorePassword";
135-
public static final String PARAM_CIPHER_SUITE = "cipherSuite";
181+
public static MetricQueryResult getListenerMetadataResult(String listener, String ip, int port) {
182+
MetricQueryResult result = new MetricQueryResult(1);
183+
result.setAttribute(LISTENER, listener);
184+
result.setAttribute(IP, ip);
185+
result.setAttribute(PORT, port);
186+
result.setKey(listener);
187+
return result;
188+
}
189+
190+
public static MetricQueryResult getSimpleListenerMetricResult(String listener, int value) {
191+
MetricQueryResult result = new MetricQueryResult(value);
192+
result.setAttribute(LISTENER, listener);
193+
result.setKey(listener);
194+
return result;
195+
}
196+
197+
public static MetricQueryResult getSimpleChannelMetricResult(String channel, int value) {
198+
MetricQueryResult result = new MetricQueryResult(value);
199+
result.setAttribute(CHANNEL, channel);
200+
result.setKey(channel);
201+
return result;
202+
}
203+
136204
}

ojr-ibmmq/src/main/java/com/ojr/ibmmq/MQRawMetricRegistry.java

+26-12
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
import java.util.Map;
66
import java.util.concurrent.ConcurrentHashMap;
77

8+
import static com.ojr.core.metric.MetricInstrumentType.COUNTER;
89
import static com.ojr.core.metric.MetricInstrumentType.GAUGE;
910
import static com.ojr.ibmmq.MQDcUtil.*;
10-
import static com.ojr.ibmmq.MQDcUtil.QUEUE_UNCOMMITED_MSG_UNIT;
1111

1212

1313
public class MQRawMetricRegistry {
1414
private final Map<String, RawMetric> map = new ConcurrentHashMap<String, RawMetric>() {
1515
{
16-
//Qmgr:
16+
//Queue Manager:
1717
put(QMGR_META, new RawMetric(GAUGE, QMGR_META, QMGR_META_DESC, QMGR_META_UNIT, true, null));
1818
put(QMGR_CMD_LEVEL, new RawMetric(GAUGE, QMGR_CMD_LEVEL, QMGR_CMD_LEVEL_DESC, QMGR_CMD_LEVEL_UNIT, true, null));
1919
put(QMGR_MAX_HANDLES, new RawMetric(GAUGE, QMGR_MAX_HANDLES, QMGR_MAX_HANDLES_DESC, QMGR_MAX_HANDLES_UNIT, true, null));
@@ -27,16 +27,30 @@ public class MQRawMetricRegistry {
2727
put(QMGR_PUBSUB_STATUS, new RawMetric(GAUGE, QMGR_PUBSUB_STATUS, QMGR_PUBSUB_STATUS_DESC, QMGR_PUBSUB_STATUS_UNIT, true, null));
2828

2929
//Queue:
30-
put(QUEUE_META, new RawMetric(GAUGE, QUEUE_META, QUEUE_META_DESC, QUEUE_META_UNIT, true, null));
31-
put(QUEUE_DEPTH, new RawMetric(GAUGE, QUEUE_DEPTH, QUEUE_DEPTH_DESC, QUEUE_DEPTH_UNIT, true, null));
32-
put(QUEUE_MAX_DEPTH, new RawMetric(GAUGE, QUEUE_MAX_DEPTH, QUEUE_MAX_DEPTH_DESC, QUEUE_MAX_DEPTH_UNIT, true, null));
33-
34-
put(QUEUE_UNCOMMITED_MSG, new RawMetric(GAUGE, QUEUE_UNCOMMITED_MSG, QUEUE_UNCOMMITED_MSG_DESC, QUEUE_UNCOMMITED_MSG_UNIT, true, null));
35-
put(QUEUE_OPEN_INPUT, new RawMetric(GAUGE, QUEUE_OPEN_INPUT, QUEUE_OPEN_INPUT_DESC, QUEUE_OPEN_INPUT_UNIT, true, null));
36-
put(QUEUE_OPEN_OUTPUT, new RawMetric(GAUGE, QUEUE_OPEN_OUTPUT, QUEUE_OPEN_OUTPUT_DESC, QUEUE_OPEN_OUTPUT_UNIT, true, null));
37-
38-
put(QUEUE_ENQ_COUNT, new RawMetric(GAUGE, QUEUE_ENQ_COUNT, QUEUE_ENQ_COUNT_DESC, QUEUE_ENQ_COUNT_UNIT, true, null));
39-
put(QUEUE_DEQ_COUNT, new RawMetric(GAUGE, QUEUE_DEQ_COUNT, QUEUE_DEQ_COUNT_DESC, QUEUE_DEQ_COUNT_UNIT, true, null));
30+
put(QUEUE_META, new RawMetric(GAUGE, QUEUE_META, QUEUE_META_DESC, QUEUE_META_UNIT, true, QUEUE));
31+
put(QUEUE_DEPTH, new RawMetric(GAUGE, QUEUE_DEPTH, QUEUE_DEPTH_DESC, QUEUE_DEPTH_UNIT, true, QUEUE));
32+
put(QUEUE_MAX_DEPTH, new RawMetric(GAUGE, QUEUE_MAX_DEPTH, QUEUE_MAX_DEPTH_DESC, QUEUE_MAX_DEPTH_UNIT, true, QUEUE));
33+
34+
put(QUEUE_UNCOMMITED_MSG, new RawMetric(GAUGE, QUEUE_UNCOMMITED_MSG, QUEUE_UNCOMMITED_MSG_DESC, QUEUE_UNCOMMITED_MSG_UNIT, true, QUEUE));
35+
put(QUEUE_OPEN_INPUT, new RawMetric(GAUGE, QUEUE_OPEN_INPUT, QUEUE_OPEN_INPUT_DESC, QUEUE_OPEN_INPUT_UNIT, true, QUEUE));
36+
put(QUEUE_OPEN_OUTPUT, new RawMetric(GAUGE, QUEUE_OPEN_OUTPUT, QUEUE_OPEN_OUTPUT_DESC, QUEUE_OPEN_OUTPUT_UNIT, true, QUEUE));
37+
38+
put(QUEUE_ENQ_COUNT, new RawMetric(GAUGE, QUEUE_ENQ_COUNT, QUEUE_ENQ_COUNT_DESC, QUEUE_ENQ_COUNT_UNIT, true, QUEUE));
39+
put(QUEUE_DEQ_COUNT, new RawMetric(GAUGE, QUEUE_DEQ_COUNT, QUEUE_DEQ_COUNT_DESC, QUEUE_DEQ_COUNT_UNIT, true, QUEUE));
40+
41+
//Listener:
42+
put(LISTENER_META, new RawMetric(GAUGE, LISTENER_META, LISTENER_META_DESC, LISTENER_META_UNIT, true, LISTENER));
43+
put(LISTENER_STATUS, new RawMetric(GAUGE, LISTENER_STATUS, LISTENER_STATUS_DESC, LISTENER_STATUS_UNIT, true, LISTENER));
44+
45+
//Channel:
46+
put(CHANNEL_STATUS, new RawMetric(GAUGE, CHANNEL_STATUS, CHANNEL_STATUS_DESC, CHANNEL_STATUS_UNIT, true, CHANNEL));
47+
put(CHANNEL_INDOUBT_STATUS, new RawMetric(GAUGE, CHANNEL_INDOUBT_STATUS, CHANNEL_INDOUBT_STATUS_DESC, CHANNEL_INDOUBT_STATUS_UNIT, true, CHANNEL));
48+
put(CHANNEL_TYPE, new RawMetric(GAUGE, CHANNEL_TYPE, CHANNEL_TYPE_DESC, CHANNEL_TYPE_UNIT, true, CHANNEL));
49+
50+
put(CHANNEL_BUFFERS_SENT, new RawMetric(COUNTER, CHANNEL_BUFFERS_SENT, CHANNEL_BUFFERS_SENT_DESC, CHANNEL_BUFFERS_SENT_UNIT, true, CHANNEL));
51+
put(CHANNEL_BUFFERS_RECEIVED, new RawMetric(COUNTER, CHANNEL_BUFFERS_RECEIVED, CHANNEL_BUFFERS_RECEIVED_DESC, CHANNEL_BUFFERS_RECEIVED_UNIT, true, CHANNEL));
52+
put(CHANNEL_BYTES_SENT, new RawMetric(COUNTER, CHANNEL_BYTES_SENT, CHANNEL_BYTES_SENT_DESC, CHANNEL_BYTES_SENT_UNIT, true, CHANNEL));
53+
put(CHANNEL_BYTES_RECEIVED, new RawMetric(COUNTER, CHANNEL_BYTES_RECEIVED, CHANNEL_BYTES_RECEIVED_DESC, CHANNEL_BYTES_RECEIVED_UNIT, true, CHANNEL));
4054
}
4155
};
4256

0 commit comments

Comments
 (0)