barzan / dbseer

DBSeer
Apache License 2.0
118 stars 27 forks source link

unable to build the dbseer #5

Open Moohanad opened 6 years ago

Moohanad commented 6 years ago

Hi,

My JAVA_HOME is set to /usr/lib/jvm/java-1.7.0-openjdk-amd64 because it seemed that java-9-oracle is not supported with your program. I tried to build the dbseer_frontend with both intellij and manually but non of these worked.

Btw, could you please provide a step-by-step video tutorial of installing the program?.

Here is the output of the ant command: ~/dbseer/dbseer_front_end$ ant -f dbseer_front_end.xml Buildfile: /home/mooh/dbseer/dbseer_front_end/dbseer_front_end.xml

init:

clean.module.dbseer_front_end: [delete] Deleting directory /home/mooh/dbseer/dbseer_front_end/out/production/dbseer_front_end

clean:

compile.module.dbseer_front_end.production: [mkdir] Created dir: /home/mooh/dbseer/dbseer_front_end/out/production/dbseer_front_end [javac] /home/mooh/dbseer/dbseer_front_end/dbseer_front_end.xml:259: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds [javac] Compiling 148 source files to /home/mooh/dbseer/dbseer_front_end/out/production/dbseer_front_end [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/comp/clustering/IncrementalDBSCAN.java:19: error: package com.esotericsoftware.minlog does not exist [javac] import com.esotericsoftware.minlog.Log; [javac] ^ [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/comp/process/live/LiveLogProcessor.java:27: error: package dbseer.middleware.constant does not exist [javac] import dbseer.middleware.constant.MiddlewareConstants; [javac] ^ [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/gui/DBSeerGUI.java:19: error: package com.esotericsoftware.minlog does not exist [javac] import com.esotericsoftware.minlog.Log; [javac] ^ [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/gui/panel/DBSeerMiddlewarePanel.java:33: error: package dbseer.middleware.event does not exist [javac] import dbseer.middleware.event.MiddlewareClientEvent; [javac] ^ [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/middleware/MiddlewareClientRunner.java:19: error: package com.esotericsoftware.minlog does not exist [javac] import com.esotericsoftware.minlog.Log; [javac] ^ [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/middleware/MiddlewareClientRunner.java:21: error: package dbseer.middleware.client does not exist [javac] import dbseer.middleware.client.MiddlewareClient; [javac] ^ [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/middleware/MiddlewareClientRunner.java:41: error: cannot find symbol [javac] private MiddlewareClient client; [javac] ^ [javac] symbol: class MiddlewareClient [javac] location: class MiddlewareClientRunner [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/comp/process/live/LiveLogProcessor.java:86: error: cannot find symbol [javac] servers = serverStr.split(MiddlewareConstants.SERVER_STRING_DELIMITER); [javac] ^ [javac] symbol: variable MiddlewareConstants [javac] location: class LiveLogProcessor [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/gui/panel/DBSeerMiddlewarePanel.java:685: error: cannot find symbol [javac] MiddlewareClientEvent event = (MiddlewareClientEvent) arg; [javac] ^ [javac] symbol: class MiddlewareClientEvent [javac] location: class DBSeerMiddlewarePanel [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/gui/panel/DBSeerMiddlewarePanel.java:685: error: cannot find symbol [javac] MiddlewareClientEvent event = (MiddlewareClientEvent) arg; [javac] ^ [javac] symbol: class MiddlewareClientEvent [javac] location: class DBSeerMiddlewarePanel [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/gui/panel/DBSeerMiddlewarePanel.java:686: error: cannot find symbol [javac] if (event.event == MiddlewareClientEvent.IS_MONITORING) [javac] ^ [javac] symbol: variable MiddlewareClientEvent [javac] location: class DBSeerMiddlewarePanel [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/gui/panel/DBSeerMiddlewarePanel.java:710: error: cannot find symbol [javac] else if (event.event == MiddlewareClientEvent.IS_NOT_MONITORING) [javac] ^ [javac] symbol: variable MiddlewareClientEvent [javac] location: class DBSeerMiddlewarePanel [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/gui/panel/DBSeerMiddlewarePanel.java:719: error: cannot find symbol [javac] else if (event.event == MiddlewareClientEvent.ERROR) [javac] ^ [javac] symbol: variable MiddlewareClientEvent [javac] location: class DBSeerMiddlewarePanel [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/middleware/MiddlewareClientRunner.java:55: error: cannot find symbol [javac] client = new MiddlewareClient(host, id, password, port, dir); [javac] ^ [javac] symbol: class MiddlewareClient [javac] location: class MiddlewareClientRunner [javac] /home/mooh/dbseer/dbseer_front_end/src/dbseer/middleware/MiddlewareClientRunner.java:57: error: cannot find symbol [javac] client.setLogLevel(Log.LEVEL_NONE); [javac] ^ [javac] symbol: variable Log [javac] location: class MiddlewareClientRunner [javac] Note: Some input files use or override a deprecated API. [javac] Note: Recompile with -Xlint:deprecation for details. [javac] Note: Some input files use unchecked or unsafe operations. [javac] Note: Recompile with -Xlint:unchecked for details. [javac] 15 errors

BUILD FAILED /home/mooh/dbseer/dbseer_front_end/dbseer_front_end.xml:259: Compile failed; see the compiler error output for details.

Total time: 6 seconds

dongyoungy commented 6 years ago

@Moohanad There was a bug with the xml file. I have pushed a quick fix to the file. Please do a 'git pull' and try again.

For installation instructions, please take a look at our installation guide. Please let us know if you have any other questions. Thanks.

Moohanad commented 6 years ago

Hi We were able to build, and the GUI was shown . But in connecting to the middle-ware in graphical interface, we got the issue below.

Thanks

~/dbseer/dbseer_front_end$ java -Xmx2048M -jar out/artifacts/dbseer_front_end_jar/dbseer_front_end.jar /usr/share/themes/Ambiance/gtk-2.0/apps/mate-panel.rc:30: error: invalid string constant "murrine-scrollbar", expected valid string constant /usr/share/themes/Ambiance/gtk-2.0/apps/mate-panel.rc:30: error: invalid string constant "murrine-scrollbar", expected valid string constant Exception in thread "AWT-EventQueue-1" java.lang.UnsupportedClassVersionError: dbseer/middleware/client/MiddlewareClient : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:803) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:442) at java.net.URLClassLoader.access$100(URLClassLoader.java:64) at java.net.URLClassLoader$1.run(URLClassLoader.java:354) at java.net.URLClassLoader$1.run(URLClassLoader.java:348) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:347) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:312) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at dbseer.middleware.MiddlewareClientRunner.run(MiddlewareClientRunner.java:55) at dbseer.gui.panel.DBSeerMiddlewarePanel.actionPerformed(DBSeerMiddlewarePanel.java:213) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6516) at javax.swing.JComponent.processMouseEvent(JComponent.java:3311) at java.awt.Component.processEvent(Component.java:6281) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4872) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4698) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2718) at java.awt.Component.dispatchEvent(Component.java:4698) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747) at java.awt.EventQueue.access$300(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:706) at java.awt.EventQueue$3.run(EventQueue.java:704) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:720) at java.awt.EventQueue$4.run(EventQueue.java:718) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:717) at org.GNOME.Accessibility.AtkWrapper$5.dispatchEvent(AtkWrapper.java:700) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:218) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:133) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:122) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:118) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:110) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

dongyoungy commented 6 years ago

The problem was caused due to the Java version mismatch between DBSeer and its middleware. I have made a quick fix to ensure that both creates binaries as Java 7 class files.

Please do 'git pull' on both DBSeer and the middleware, and build them again. It should not show such message afterwards. Thanks.

Moohanad commented 6 years ago

Still doesn't work. Connection fails. Error messages attached.

----MIDDLEWARE----- ./middleware 12345 localhost 3306 10 pasmple am Error in output java.io.IOException: Broken pipe at sun.nio.ch.FileDispatcherImpl.write0(Native Method) at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) at sun.nio.ch.IOUtil.write(IOUtil.java:65) at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:492) at middleware.MiddleSocketChannel.sendOutput(MiddleSocketChannel.java:60) at middleware.NewWorker.run(NewWorker.java:101) Error in receive data

java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcherImpl.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) at sun.nio.ch.IOUtil.read(IOUtil.java:197) at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:384) at middleware.MiddleSocketChannel.getInput(MiddleSocketChannel.java:76) at middleware.NewWorker.run(NewWorker.java:86)

----Front End----- ~/dbseer/dbseer_front_end$ java -Xmx2048M -jar out/artifacts/dbseefront_end_jar/dbseer_front_end.jar /usr/share/themes/Ambiance/gtk-2.0/apps/mate-panel.rc:30: error: invalid string constant "murrine-scrollbar", expected valid string constant /usr/share/themes/Ambiance/gtk-2.0/apps/mate-panel.rc:30: error: invalid string constant "murrine-scrollbar", expected valid string constant io.netty.handler.codec.compression.DecompressionException: decompression failure (-3): incorrect header check at io.netty.handler.codec.compression.ZlibUtil.inflaterException(ZlibUtil.java:36) at io.netty.handler.codec.compression.ZlibUtil.fail(ZlibUtil.java:28) at io.netty.handler.codec.compression.JZlibDecoder.decode(JZlibDecoder.java:154) at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:360) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:244) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:318) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:304) at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:266) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:318) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:304) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(Thread.java:748) io.netty.handler.codec.compression.DecompressionException: decompression failure (-3): incorrect header check at io.netty.handler.codec.compression.ZlibUtil.inflaterException(ZlibUtil.java:36) at io.netty.handler.codec.compression.ZlibUtil.fail(ZlibUtil.java:28) at io.netty.handler.codec.compression.JZlibDecoder.decode(JZlibDecoder.java:154) at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:360) at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:311) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:218) at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:204) at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:75) at io.netty.handler.timeout.IdleStateHandler.channelInactive(IdleStateHandler.java:257) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:218) at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:204) at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:828) at io.netty.channel.AbstractChannel$AbstractUnsafe$7.run(AbstractChannel.java:625) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:358) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(Thread.java:748)

dongyoungy commented 6 years ago

I am sorry for the confusion, but the current middleware can be found here. The 'middleware' directory in this repository is an outdated version and not operational. Please check the repository in the link for the instructions.

To reduce the confusion, I renamed the directory to 'middleware_old'.

Moohanad commented 6 years ago

Even with the new middleware we still have problems. It seems to be looking for a MariaDB, and we're using Mysql.

middleware.cnf: [dbseer_middleware]

middleware user id

id=mooh

middleware user password

password=****

port that middleware listens to for the communication with DBSeer

listen_port=3555

path of the named pipe that dbseerroute uses to communicate with the middleware.

named_pipe=/tmp/dbseerroute

middleware reads the SQL performance log from this file.

dblog_path=/tmp/maxscale/perf.log

middleware writes OS/DBMS statistics of each server into separate files in this directory.

syslog_dir=/tmp/maxscale

the list of MySQL/MariaDB servers

servers=server1

server1 configuration start

[server1]

SQL credential necessary for middleware to gather the DBMS statistics (it uses "SHOW GLOBAL STATUS")

db_host=localhost db_port=3306 db_user=root db_pw=**** db_name=test

you must be able to run monitor script remotely at server1 using the following configuration.

ssh_user=mooh monitor_dir=/home/mooh/dbseer/dbseer_middleware/rs-sysmon2/ monitor_script=monitor.sh

server1 configuration end


mooh@osboxes:~/dbseer/dbseer_middleware$ ./middleware.sh 00:00 INFO: Listening port = 3555 00:00 INFO: DB log dir = /tmp/maxscale/perf.log 00:00 INFO: System log dir = /tmp/maxscale 00:00 INFO: DB Port = 3306 00:00 INFO: DB Name = test 00:00 INFO: DB User = root 00:00 INFO: DB PW = * 00:00 INFO: SSH User = mooh 00:00 INFO: Remote Monitor Dir = /home/mooh/dbseer/dbseer_middleware/rs-sysmon2/ 00:00 INFO: Remote Monitor Script = monitor.sh 00:00 INFO: Getting DB statistics 00:00 INFO: [Server : server1] 00:00 INFO: DB Host = localhost 00:00 INFO: DB Port = 3306 00:00 INFO: DB Name = test 00:00 INFO: DB User = root 00:00 INFO: DB PW = 00:00 INFO: SSH User = mooh 00:00 INFO: Remote Monitor Dir = /home/mooh/dbseer/dbseer_middleware/rs-sysmon2/ 00:00 INFO: Remote Monitor Script = monitor.sh 00:00 INFO: Getting DB statistics 00:00 ERROR: Cannot open the named pipe for communication with dbseerroute. You must run Maxscale with dbseerroute with correct named pipe first.

dongyoungy commented 6 years ago

I think using mysql is fine, but you need to use MariaDB MaxScale as a gateway.

The middleware requires MariaDB MaxScale with the dbseerroute plugin, which is a custom router plugin that is necessary to collect required transaction information. The MariaDB MaxScale with the dbseerroute plugin is available here.