[ZBX-9824] Various improvements for java gateway itself and installation Created: 2015 Aug 27 Updated: 2019 Dec 10 |
|
Status: | Reopened |
Project: | ZABBIX BUGS AND ISSUES |
Component/s: | Installation (I), Java gateway (J) |
Affects Version/s: | 2.2.10, 2.4.5, 2.5.0 |
Fix Version/s: | None |
Type: | Incident report | Priority: | Trivial |
Reporter: | Oleksii Zagorskyi | Assignee: | Unassigned |
Resolution: | Unresolved | Votes: | 1 |
Labels: | installation, javagateway, version | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Issue Links: |
|
Description |
If one compiles and updates zabbix binaries (including java gateway) from sources (make install), then corresponding ./bin folder will contain many .jar files like zabbix-java-gateway-2.4.3.jar, zabbix-java-gateway-2.4.4.jar etc CLASSPATH="lib" for jar in lib/*.jar bin/*.jar; do CLASSPATH="$CLASSPATH:$jar" done Need to improve the code block to load for example only one (sort + select only last ?) .jar file. Also, I don't understand why do we use versioning in .jar file name at all ? For example (in my own internal scripts to "install/deploy" development branches etc) to workaround the version suffix presence I had to use something like:
ls -l ./src/zabbix_java/bin/* &> /dev/null && cp ./src/zabbix_java/bin/* $BINARIES/$BRANCH/bin/zabbix-java-gateway.jar
to copy zabbix-java-gateway-2.4.4.jar as zabbix-java-gateway.jar |
Comments |
Comment by Oleksii Zagorskyi [ 2015 Aug 27 ] |
In
|
Comment by richlv [ 2015 Oct 27 ] |
got bitten by this a bit today - was trying to figure out why is java gateway not updating properly (spotted old version number in the commandline). |
Comment by Oleksii Zagorskyi [ 2015 Nov 06 ] |
After discussion, asaveljevs confirmed that there are no any specific reasons to include version to file name. It was just for usability, agreed to remove it. We decided that I'll try to prepare something and then will show results. |
Comment by Aleksandrs Saveljevs [ 2015 Nov 06 ] |
(1) Index: src/libs/zbxcommon/str.c =================================================================== --- src/libs/zbxcommon/str.c (revision 49001) +++ src/libs/zbxcommon/str.c (revision 49002) @@ -34,7 +45,7 @@ ******************************************************************************/ static void app_title(void) { - printf("%s v%s (revision %s) (%s)\n", title_message, ZABBIX_VERSION, ZABBIX_REVISION, ZABBIX_REVDATE); + printf("%s (Zabbix) %s\n", title_message, ZABBIX_VERSION); } /****************************************************************************** @@ -50,7 +61,8 @@ void version(void) { app_title(); - printf("Compilation time: %s %s\n", __DATE__, __TIME__); + printf("Revision %s %s, compilation time: %s %s\n\n", ZABBIX_REVISION, ZABBIX_REVDATE, __DATE__, __TIME__); + puts(copyright_message); } /****************************************************************************** However, it did not change that for Java gateway. Should be made consistent. |
Comment by Oleksii Zagorskyi [ 2015 Nov 06 ] |
Even if use zabbix packages it's not guaranteed that that someone will start several gateways with different versions. It's just a proof that only one main jar file should be loaded in init/startup script, with fixed file name: 2015-10-14 07:03:49.043 [main] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.2.8 (revision 51174) has started 2015-10-14 07:03:49.086 [main] INFO com.zabbix.gateway.JavaGateway - listening on 0.0.0.0/0.0.0.0:10052 2015-10-14 15:27:13.925 [main] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.2.10 (revision 54806) has started 2015-10-14 15:27:14.194 [main] ERROR com.zabbix.gateway.JavaGateway - caught fatal exception java.net.BindException: Address already in use at java.net.PlainSocketImpl.socketBind(Native Method) ~[na:1.8.0_45] at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:382) ~[na:1.8.0_45] at java.net.ServerSocket.bind(ServerSocket.java:375) ~[na:1.8.0_45] at java.net.ServerSocket.<init>(ServerSocket.java:237) ~[na:1.8.0_45] at com.zabbix.gateway.JavaGateway.main(JavaGateway.java:65) ~[zabbix-java-gateway-2.2.10.jar:na] 2015-10-14 15:27:14.210 [Thread-0] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.2.10 (revision 54806) has stopped 2015-10-14 15:29:13.881 [main] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.2.10 (revision 54806) has started 2015-10-14 15:29:13.930 [main] ERROR com.zabbix.gateway.JavaGateway - caught fatal exception java.net.BindException: Address already in use at java.net.PlainSocketImpl.socketBind(Native Method) ~[na:1.8.0_45] at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:382) ~[na:1.8.0_45] at java.net.ServerSocket.bind(ServerSocket.java:375) ~[na:1.8.0_45] at java.net.ServerSocket.<init>(ServerSocket.java:237) ~[na:1.8.0_45] at com.zabbix.gateway.JavaGateway.main(JavaGateway.java:65) ~[zabbix-java-gateway-2.2.10.jar:na] 2015-10-14 15:29:13.935 [Thread-0] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.2.10 (revision 54806) has stopped 2015-10-14 15:34:49.245 [main] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.2.10 (revision 54806) has started 2015-10-14 15:34:49.289 [main] ERROR com.zabbix.gateway.JavaGateway - caught fatal exception java.net.BindException: Address already in use at java.net.PlainSocketImpl.socketBind(Native Method) ~[na:1.8.0_45] at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:382) ~[na:1.8.0_45] at java.net.ServerSocket.bind(ServerSocket.java:375) ~[na:1.8.0_45] at java.net.ServerSocket.<init>(ServerSocket.java:237) ~[na:1.8.0_45] at com.zabbix.gateway.JavaGateway.main(JavaGateway.java:65) ~[zabbix-java-gateway-2.2.10.jar:na] 2015-10-14 15:34:49.307 [Thread-0] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.2.10 (revision 54806) has stopped 2015-10-14 15:35:18.832 [main] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.2.10 (revision 54806) has started 2015-10-14 15:35:19.123 [main] ERROR com.zabbix.gateway.JavaGateway - caught fatal exception java.net.BindException: Address already in use at java.net.PlainSocketImpl.socketBind(Native Method) ~[na:1.8.0_45] at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:382) ~[na:1.8.0_45] at java.net.ServerSocket.bind(ServerSocket.java:375) ~[na:1.8.0_45] at java.net.ServerSocket.<init>(ServerSocket.java:237) ~[na:1.8.0_45] at com.zabbix.gateway.JavaGateway.main(JavaGateway.java:65) ~[zabbix-java-gateway-2.2.10.jar:na] 2015-10-14 15:35:19.164 [Thread-0] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.2.10 (revision 54806) has stopped 2015-10-14 15:39:26.508 [main] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.2.10 (revision 54806) has started 2015-10-14 15:39:26.546 [main] ERROR com.zabbix.gateway.JavaGateway - caught fatal exception java.net.BindException: Address already in use at java.net.PlainSocketImpl.socketBind(Native Method) ~[na:1.8.0_45] at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:382) ~[na:1.8.0_45] at java.net.ServerSocket.bind(ServerSocket.java:375) ~[na:1.8.0_45] at java.net.ServerSocket.<init>(ServerSocket.java:237) ~[na:1.8.0_45] at com.zabbix.gateway.JavaGateway.main(JavaGateway.java:65) ~[zabbix-java-gateway-2.2.10.jar:na] 2015-10-14 15:39:26.550 [Thread-0] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.2.10 (revision 54806) has stopped 2015-10-14 15:45:02.684 [Thread-0] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.2.8 (revision 51174) has stopped |
Comment by Oleksii Zagorskyi [ 2015 Nov 10 ] |
(2) Examples: TRACE: 2015-11-05 15:23:14.623 [main] INFO com.zabbix.gateway.JavaGateway - Zabbix Java Gateway 2.4.7rc1 (revision {ZABBIX_REVISION}) has started 2015-11-05 15:23:14.629 [main] DEBUG c.z.gateway.ConfigurationManager - starting to parse configuration parameters 2015-11-05 15:23:14.629 [main] DEBUG c.z.gateway.ConfigurationManager - found pidFile configuration parameter with value '/zab/bin/2.4/zabbix_java.pid' 2015-11-05 15:23:14.629 [main] DEBUG c.z.gateway.ConfigurationManager - received pidFile configuration parameter, daemonizing 2015-11-05 15:23:14.630 [main] DEBUG c.z.gateway.ConfigurationManager - finished parsing configuration parameters 2015-11-05 15:23:14.632 [main] INFO com.zabbix.gateway.JavaGateway - listening on 0.0.0.0/0.0.0.0:10052 2015-11-05 15:23:14.635 [main] DEBUG com.zabbix.gateway.JavaGateway - created a thread pool of 5 pollers 2015-11-05 15:26:01.637 [pool-1-thread-3] DEBUG com.zabbix.gateway.SocketProcessor - starting to process incoming connection 2015-11-05 15:26:01.637 [pool-1-thread-3] DEBUG c.z.gateway.BinaryProtocolSpeaker - reading Zabbix protocol header 2015-11-05 15:26:01.638 [pool-1-thread-3] DEBUG c.z.gateway.BinaryProtocolSpeaker - reading 8 bytes of data length 2015-11-05 15:26:01.638 [pool-1-thread-3] DEBUG c.z.gateway.BinaryProtocolSpeaker - reading 227 bytes of request data 2015-11-05 15:26:01.638 [pool-1-thread-3] DEBUG c.z.gateway.BinaryProtocolSpeaker - received the following data in request: { "request":"java gateway jmx", "conn":"127.0.0.1", "port":12345, "username":"username", "password":"password", "keys":["jmx[\"java.lang:type=Memory\",\"HeapMemoryUsage.used\"]"]} 2015-11-05 15:26:01.639 [pool-1-thread-3] DEBUG com.zabbix.gateway.SocketProcessor - dispatched request to class com.zabbix.gateway.JMXItemChecker 2015-11-05 15:26:01.639 [pool-1-thread-3] DEBUG c.z.g.ZabbixJMXConnectorFactory - connecting to JMX agent at 'service:jmx:rmi:///jndi/rmi://127.0.0.1:12345/jmxrmi' 2015-11-05 15:26:01.639 [pool-2-thread-2] TRACE c.z.g.ZabbixJMXConnectorFactory - making a call to JMXConnectorFactory.connect('service:jmx:rmi:///jndi/rmi://127.0.0.1:12345/jmxrmi') 2015-11-05 15:26:01.645 [pool-2-thread-2] TRACE c.z.g.ZabbixJMXConnectorFactory - call to JMXConnectorFactory.connect('service:jmx:rmi:///jndi/rmi://127.0.0.1:12345/jmxrmi') successful 2015-11-05 15:26:01.645 [pool-1-thread-3] TRACE c.z.g.ZabbixJMXConnectorFactory - connector acquired 2015-11-05 15:26:01.645 [pool-1-thread-3] DEBUG com.zabbix.gateway.ItemChecker - getting value for item 'jmx["java.lang:type=Memory","HeapMemoryUsage.used"]' 2015-11-05 15:26:01.645 [pool-1-thread-3] TRACE com.zabbix.gateway.JMXItemChecker - 'HeapMemoryUsage.used' contains composite data 2015-11-05 15:26:01.646 [pool-1-thread-3] TRACE com.zabbix.gateway.JMXItemChecker - attributeName:'HeapMemoryUsage' 2015-11-05 15:26:01.646 [pool-1-thread-3] TRACE com.zabbix.gateway.JMXItemChecker - fieldNames:'used' 2015-11-05 15:26:01.649 [pool-1-thread-3] TRACE com.zabbix.gateway.JMXItemChecker - drilling down with data object 'javax.management.openmbean.CompositeDataSupport(compositeType=javax.management.openmbean.CompositeType(name=java.lang.management.MemoryUsage,items=((itemName=committed,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=init,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=max,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=used,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)))),contents={committed=196608000, init=162363264, max=358088704, used=51614112})' and field names 'used' 2015-11-05 15:26:01.649 [pool-1-thread-3] TRACE com.zabbix.gateway.JMXItemChecker - 'javax.management.openmbean.CompositeDataSupport(compositeType=javax.management.openmbean.CompositeType(name=java.lang.management.MemoryUsage,items=((itemName=committed,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=init,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=max,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),(itemName=used,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)))),contents={committed=196608000, init=162363264, max=358088704, used=51614112})' contains composite data 2015-11-05 15:26:01.649 [pool-1-thread-3] TRACE com.zabbix.gateway.JMXItemChecker - drilling down with data object '51614112' and field names '' 2015-11-05 15:26:01.649 [pool-1-thread-3] DEBUG com.zabbix.gateway.ItemChecker - received value '51614112' for item 'jmx["java.lang:type=Memory","HeapMemoryUsage.used"]' 2015-11-05 15:26:01.650 [pool-1-thread-3] DEBUG c.z.gateway.BinaryProtocolSpeaker - sending the following data in response: {"response":"success","data":[{"value":"51614112"}]} 2015-11-05 15:26:01.650 [pool-1-thread-3] DEBUG com.zabbix.gateway.SocketProcessor - finished processing incoming connection DEBUG: 2015-11-05 15:29:36.071 [pool-1-thread-5] DEBUG com.zabbix.gateway.SocketProcessor - starting to process incoming connection 2015-11-05 15:29:36.071 [pool-1-thread-5] DEBUG c.z.gateway.BinaryProtocolSpeaker - reading Zabbix protocol header 2015-11-05 15:29:36.072 [pool-1-thread-5] DEBUG c.z.gateway.BinaryProtocolSpeaker - reading 8 bytes of data length 2015-11-05 15:29:36.073 [pool-1-thread-5] DEBUG c.z.gateway.BinaryProtocolSpeaker - reading 227 bytes of request data 2015-11-05 15:29:36.073 [pool-1-thread-5] DEBUG c.z.gateway.BinaryProtocolSpeaker - received the following data in request: { "request":"java gateway jmx", "conn":"127.0.0.1", "port":12345, "username":"username", "password":"password", "keys":["jmx[\"java.lang:type=Memory\",\"HeapMemoryUsage.used\"]"]} 2015-11-05 15:29:36.074 [pool-1-thread-5] DEBUG com.zabbix.gateway.SocketProcessor - dispatched request to class com.zabbix.gateway.JMXItemChecker 2015-11-05 15:29:36.074 [pool-1-thread-5] DEBUG c.z.g.ZabbixJMXConnectorFactory - connecting to JMX agent at 'service:jmx:rmi:///jndi/rmi://127.0.0.1:12345/jmxrmi' 2015-11-05 15:29:36.082 [pool-1-thread-5] DEBUG com.zabbix.gateway.ItemChecker - getting value for item 'jmx["java.lang:type=Memory","HeapMemoryUsage.used"]' 2015-11-05 15:29:36.086 [pool-1-thread-5] DEBUG com.zabbix.gateway.ItemChecker - received value '53577520' for item 'jmx["java.lang:type=Memory","HeapMemoryUsage.used"]' 2015-11-05 15:29:36.087 [pool-1-thread-5] DEBUG c.z.gateway.BinaryProtocolSpeaker - sending the following data in response: {"response":"success","data":[{"value":"53577520"}]} 2015-11-05 15:29:36.087 [pool-1-thread-5] DEBUG com.zabbix.gateway.SocketProcessor - finished processing incoming connection |
Comment by Oleksii Zagorskyi [ 2015 Nov 23 ] |
(3) Start and stop log messages will be replaced from: "Zabbix Java Gateway {} (revision {}) has started" "Zabbix Java Gateway {} (revision {}) has stopped" to: "Starting Zabbix Java Gateway. Zabbix {} (revision {})" "Zabbix Java Gateway stopped. Zabbix {} (revision {})" This way they will be consistent with zabbix server: Starting Zabbix Server. Zabbix 3.0.0alpha5 (revision 56596) Zabbix Server stopped. Zabbix 3.0.0alpha5 (revision 56596). |
Comment by Oleksii Zagorskyi [ 2015 Nov 24 ] |
(4) implement new, unified approach to run java gateway in the foreground, as part of |
Comment by Oleksii Zagorskyi [ 2015 Dec 03 ] |
(5) create man page for zabbix java gateway. |