Code Monkey home page Code Monkey logo

Comments (4)

SimonEismann avatar SimonEismann commented on June 30, 2024

Hi @DaGeRe, glad to hear you are interested in the TeaStore!

I've tried to recreate the issue as follows:

docker run -v /home/myUserName/myFolder:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=10.1.2.3" -e "REGISTRY_PORT=10000" -e "HOST_NAME=10.1.2.30" -e "SERVICE_PORT=8080" -p 8080:8080 -d descartesresearch/teastore-webui

This results in the following output for docker logs on the resulting container:

17-Nov-2022 10:33:59.420 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/10.0.7
17-Nov-2022 10:33:59.424 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jun 8 2021 16:31:06 UTC
17-Nov-2022 10:33:59.424 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 10.0.7.0
17-Nov-2022 10:33:59.424 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
17-Nov-2022 10:33:59.424 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            5.15.0-47-generic
17-Nov-2022 10:33:59.424 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
17-Nov-2022 10:33:59.425 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/local/openjdk-11
17-Nov-2022 10:33:59.425 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           11.0.11+9
17-Nov-2022 10:33:59.425 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
17-Nov-2022 10:33:59.425 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/tomcat
17-Nov-2022 10:33:59.425 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/local/tomcat
17-Nov-2022 10:33:59.495 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
17-Nov-2022 10:33:59.495 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
17-Nov-2022 10:33:59.496 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -javaagent:/kieker/agent/agent.jar
17-Nov-2022 10:33:59.496 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
17-Nov-2022 10:33:59.496 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dkieker.monitoring.configuration=/kieker/config/kieker.monitoring.properties
17-Nov-2022 10:33:59.496 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Daj.weaving.verbose=false
17-Nov-2022 10:33:59.496 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.aspectj.weaver.loadtime.configuration=aop.xml
17-Nov-2022 10:33:59.497 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dkieker.monitoring.skipDefaultAOPConfiguration=true
17-Nov-2022 10:33:59.497 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Daj.weaving.loadersToSkip=java.net.URLClassLoader
17-Nov-2022 10:33:59.497 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true
17-Nov-2022 10:33:59.497 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
17-Nov-2022 10:33:59.497 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
17-Nov-2022 10:33:59.497 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
17-Nov-2022 10:33:59.498 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
17-Nov-2022 10:33:59.498 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
17-Nov-2022 10:33:59.498 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
17-Nov-2022 10:33:59.498 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
17-Nov-2022 10:33:59.502 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.2.30] using APR version [1.6.5].
17-Nov-2022 10:33:59.502 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
17-Nov-2022 10:33:59.504 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1d  10 Sep 2019]
17-Nov-2022 10:34:00.499 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
17-Nov-2022 10:34:00.605 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-127.0.0.1-8009"]
17-Nov-2022 10:34:00.607 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [1610] milliseconds
17-Nov-2022 10:34:00.812 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
17-Nov-2022 10:34:00.812 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.7]
17-Nov-2022 10:34:00.828 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/usr/local/tomcat/webapps/tools.descartes.teastore.webui.war]
17-Nov-2022 10:34:06.914 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
[main] INFO tools.descartes.teastore.registryclient.loadbalancers.ServiceLoadBalancer - Pre-initializing client-side load balancer for target: tools.descartes.teastore.auth
[main] INFO tools.descartes.teastore.registryclient.loadbalancers.ServiceLoadBalancer - Pre-initializing client-side load balancer for target: tools.descartes.teastore.image
[main] INFO tools.descartes.teastore.registryclient.loadbalancers.ServiceLoadBalancer - Pre-initializing client-side load balancer for target: tools.descartes.teastore.persistence
[main] INFO tools.descartes.teastore.registryclient.loadbalancers.ServiceLoadBalancer - Pre-initializing client-side load balancer for target: tools.descartes.teastore.recommender
[main] INFO kieker.monitoring.core.configuration.ConfigurationFactory - Loading configuration from JVM-specified location: '/kieker/config/kieker.monitoring.properties'
[main] INFO kieker.monitoring.core.controller.TCPController - Could not parse port for the TCPController, deactivating this option. Received string was: 
WriterController: WriterClassName: kieker.monitoring.writer.filesystem.FileWriter
[main] INFO kieker.monitoring.core.controller.StateController - Enabling monitoring
[main] INFO kieker.monitoring.core.controller.MonitoringController - Current State of kieker.monitoring (1.15-SNAPSHOT) Status: 'enabled'
        Name: 'KIEKER'; Hostname: 'f819ca50d3a8'; experimentID: '1'
JMXController: JMX disabled
TimeSource: 'kieker.monitoring.timer.SystemNanoTimer'
        Time in nanoseconds (with nanoseconds precision) since Thu Jan 01 00:00:00 UTC 1970'
ProbeController: disabled
WriterController:
        Queue type: class kieker.monitoring.queue.BlockingQueueDecorator
        Queue capacity: 10000
        Insert behavior (a.k.a. QueueFullBehavior): class kieker.monitoring.queue.behavior.BlockOnFailedInsertBehavior
                numBlocked: 0
Writer: 'kieker.monitoring.writer.filesystem.FileWriter'
        Configuration:
                kieker.monitoring.writer.filesystem.FileWriter.logFilePoolHandler='kieker.monitoring.writer.filesystem.RotatingLogFilePoolHandler'
                kieker.monitoring.writer.filesystem.FileWriter.PrioritizedQueueSize='100'
                kieker.monitoring.writer.filesystem.FileWriter.charsetName='UTF-8'
                kieker.monitoring.writer.filesystem.FileWriter.logStreamHandler='kieker.monitoring.writer.filesystem.TextLogStreamHandler'
                kieker.monitoring.writer.filesystem.FileWriter.bufferSize='8192'
                kieker.monitoring.writer.filesystem.FileWriter.maxEntriesInFile='25000'
                kieker.monitoring.writer.filesystem.FileWriter.maxLogFiles='-1'
                kieker.monitoring.writer.filesystem.FileWriter.MaxShutdownDelay='-1'
                kieker.monitoring.writer.filesystem.FileWriter.maxLogSize='-1'
                kieker.monitoring.writer.filesystem.FileWriter.mapFileHandler='kieker.monitoring.writer.filesystem.TextMapFileHandler'
                kieker.monitoring.writer.filesystem.FileWriter.flush='true'
                kieker.monitoring.writer.filesystem.FileWriter.QueueFullBehavior='0'
                kieker.monitoring.writer.filesystem.FileWriter.QueueSize='10000'
                kieker.monitoring.writer.filesystem.FileWriter.customStoragePath='/kieker/logs/'
                kieker.monitoring.writer.filesystem.FileWriter.actualStoragePath='/kieker/logs/kieker-20221117-103450-5818543402451-UTC--KIEKER'

        Automatic assignment of logging timestamps: 'true'
Sampling Controller: Periodic Sensor available: Poolsize: '0'; Scheduled Tasks: '0'
[main] INFO kieker.monitoring.core.registry.ControlFlowRegistry - First threadId will be 5196731757520486400
17-Nov-2022 10:34:50.311 WARNING [main] org.glassfish.jersey.server.wadl.WadlFeature.configure JAXBContext implementation could not be found. WADL feature is disabled.
17-Nov-2022 10:34:50.528 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/usr/local/tomcat/webapps/tools.descartes.teastore.webui.war] has finished in [49,699] ms
17-Nov-2022 10:34:50.528 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/ROOT]
17-Nov-2022 10:34:50.541 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/ROOT] has finished in [13] ms
17-Nov-2022 10:34:50.545 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
17-Nov-2022 10:34:50.596 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-127.0.0.1-8009"]
17-Nov-2022 10:34:50.599 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [49991] milliseconds

and in /home/myUserName/myFolder a folder called kieker-20221117-103450-5818543402451-UTC--KIEKER, so it seems to be working locally. Could you quickly run through these steps and see if this also works on your setup?

To further look into why this seems to not be working in Kubernetes, could you post the logs for the webUI container? it should be something along the lines of kubectl logs pod_name -n namespace

from teastore.

DaGeRe avatar DaGeRe commented on June 30, 2024

Thanks for the feedback and sorry for the late reply, it was a very busy teaching term for me.

When I run the command specified by you:

docker run -v /home/$(whoami)/myFolder:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=10.1.2.3" -e "REGISTRY_PORT=10000" -e "HOST_NAME=10.1.2.30" -e "SERVICE_PORT=8080" -p 8080:8080 -d descartesresearch/teastore-webui

(I replaced myUserName by $(whoami) to make it reproducible everywhere), something starts on port 8080 and the log looks like this:

19-Dec-2022 15:46:23.385 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/10.0.7
19-Dec-2022 15:46:23.387 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jun 8 2021 16:31:06 UTC
19-Dec-2022 15:46:23.387 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 10.0.7.0
19-Dec-2022 15:46:23.388 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
19-Dec-2022 15:46:23.388 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            5.4.0-135-generic
19-Dec-2022 15:46:23.388 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
19-Dec-2022 15:46:23.388 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/local/openjdk-11
19-Dec-2022 15:46:23.388 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           11.0.11+9
19-Dec-2022 15:46:23.388 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
19-Dec-2022 15:46:23.388 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/tomcat
19-Dec-2022 15:46:23.388 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/local/tomcat
19-Dec-2022 15:46:23.396 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
19-Dec-2022 15:46:23.396 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
19-Dec-2022 15:46:23.396 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -javaagent:/kieker/agent/agent.jar
19-Dec-2022 15:46:23.396 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
19-Dec-2022 15:46:23.396 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dkieker.monitoring.configuration=/kieker/config/kieker.monitoring.properties
19-Dec-2022 15:46:23.397 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Daj.weaving.verbose=false
19-Dec-2022 15:46:23.397 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.aspectj.weaver.loadtime.configuration=aop.xml
19-Dec-2022 15:46:23.397 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dkieker.monitoring.skipDefaultAOPConfiguration=true
19-Dec-2022 15:46:23.397 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Daj.weaving.loadersToSkip=java.net.URLClassLoader
19-Dec-2022 15:46:23.397 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true
19-Dec-2022 15:46:23.397 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
19-Dec-2022 15:46:23.398 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
19-Dec-2022 15:46:23.398 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
19-Dec-2022 15:46:23.398 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
19-Dec-2022 15:46:23.398 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
19-Dec-2022 15:46:23.398 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
19-Dec-2022 15:46:23.398 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
19-Dec-2022 15:46:23.402 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.2.30] using APR version [1.6.5].
19-Dec-2022 15:46:23.402 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
19-Dec-2022 15:46:23.404 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1d  10 Sep 2019]
19-Dec-2022 15:46:23.676 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
19-Dec-2022 15:46:23.694 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-127.0.0.1-8009"]
19-Dec-2022 15:46:23.695 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [447] milliseconds
19-Dec-2022 15:46:23.730 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
19-Dec-2022 15:46:23.730 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.7]
19-Dec-2022 15:46:23.740 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/usr/local/tomcat/webapps/tools.descartes.teastore.webui.war]
19-Dec-2022 15:46:25.162 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
[main] INFO tools.descartes.teastore.registryclient.loadbalancers.ServiceLoadBalancer - Pre-initializing client-side load balancer for target: tools.descartes.teastore.auth
[main] INFO tools.descartes.teastore.registryclient.loadbalancers.ServiceLoadBalancer - Pre-initializing client-side load balancer for target: tools.descartes.teastore.image
[main] INFO tools.descartes.teastore.registryclient.loadbalancers.ServiceLoadBalancer - Pre-initializing client-side load balancer for target: tools.descartes.teastore.persistence
[main] INFO tools.descartes.teastore.registryclient.loadbalancers.ServiceLoadBalancer - Pre-initializing client-side load balancer for target: tools.descartes.teastore.recommender
[main] INFO kieker.monitoring.core.configuration.ConfigurationFactory - Loading configuration from JVM-specified location: '/kieker/config/kieker.monitoring.properties'
[main] INFO kieker.monitoring.core.controller.TCPController - Could not parse port for the TCPController, deactivating this option. Received string was: 
WriterController: WriterClassName: kieker.monitoring.writer.filesystem.FileWriter
[main] INFO kieker.monitoring.core.controller.StateController - Enabling monitoring
[main] INFO kieker.monitoring.core.controller.MonitoringController - Current State of kieker.monitoring (1.15-SNAPSHOT) Status: 'enabled'
	Name: 'KIEKER'; Hostname: '6e45989c8fe8'; experimentID: '1'
JMXController: JMX disabled
TimeSource: 'kieker.monitoring.timer.SystemNanoTimer'
	Time in nanoseconds (with nanoseconds precision) since Thu Jan 01 00:00:00 UTC 1970'
ProbeController: disabled
WriterController:
	Queue type: class kieker.monitoring.queue.BlockingQueueDecorator
	Queue capacity: 10000
	Insert behavior (a.k.a. QueueFullBehavior): class kieker.monitoring.queue.behavior.BlockOnFailedInsertBehavior
		numBlocked: 0
Writer: 'kieker.monitoring.writer.filesystem.FileWriter'
	Configuration:
		kieker.monitoring.writer.filesystem.FileWriter.logFilePoolHandler='kieker.monitoring.writer.filesystem.RotatingLogFilePoolHandler'
		kieker.monitoring.writer.filesystem.FileWriter.PrioritizedQueueSize='100'
		kieker.monitoring.writer.filesystem.FileWriter.charsetName='UTF-8'
		kieker.monitoring.writer.filesystem.FileWriter.logStreamHandler='kieker.monitoring.writer.filesystem.TextLogStreamHandler'
		kieker.monitoring.writer.filesystem.FileWriter.bufferSize='8192'
		kieker.monitoring.writer.filesystem.FileWriter.maxEntriesInFile='25000'
		kieker.monitoring.writer.filesystem.FileWriter.maxLogFiles='-1'
		kieker.monitoring.writer.filesystem.FileWriter.MaxShutdownDelay='-1'
		kieker.monitoring.writer.filesystem.FileWriter.maxLogSize='-1'
		kieker.monitoring.writer.filesystem.FileWriter.mapFileHandler='kieker.monitoring.writer.filesystem.TextMapFileHandler'
		kieker.monitoring.writer.filesystem.FileWriter.flush='true'
		kieker.monitoring.writer.filesystem.FileWriter.QueueFullBehavior='0'
		kieker.monitoring.writer.filesystem.FileWriter.QueueSize='10000'
		kieker.monitoring.writer.filesystem.FileWriter.customStoragePath='/kieker/logs/'
		kieker.monitoring.writer.filesystem.FileWriter.actualStoragePath='/kieker/logs/kieker-20221219-154706-20099658880227-UTC--KIEKER'

	Automatic assignment of logging timestamps: 'true'
Sampling Controller: Periodic Sensor available: Poolsize: '0'; Scheduled Tasks: '0'
[main] INFO kieker.monitoring.core.registry.ControlFlowRegistry - First threadId will be 612348811834032128
19-Dec-2022 15:47:06.146 WARNING [main] org.glassfish.jersey.server.wadl.WadlFeature.configure JAXBContext implementation could not be found. WADL feature is disabled.
19-Dec-2022 15:47:06.246 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/usr/local/tomcat/webapps/tools.descartes.teastore.webui.war] has finished in [42,506] ms
19-Dec-2022 15:47:06.247 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/ROOT]
19-Dec-2022 15:47:06.256 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/ROOT] has finished in [9] ms
19-Dec-2022 15:47:06.258 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
19-Dec-2022 15:47:06.271 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-127.0.0.1-8009"]
19-Dec-2022 15:47:06.274 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [42579] milliseconds
jakarta.ws.rs.ProcessingException: java.net.SocketTimeoutException: connect timed out
	at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:268)
	at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:297)
	at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$0(JerseyInvocation.java:662)
	at org.glassfish.jersey.client.JerseyInvocation.call(JerseyInvocation.java:697)
	at org.glassfish.jersey.client.JerseyInvocation.lambda$runInScope$3(JerseyInvocation.java:691)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:205)
	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:390)
	at org.glassfish.jersey.client.JerseyInvocation.runInScope(JerseyInvocation.java:691)
	at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:661)
	at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:439)
	at org.glassfish.jersey.client.JerseyInvocation$Builder.put(JerseyInvocation.java:328)
	at tools.descartes.teastore.registryclient.RegistryClient.registerOnce(RegistryClient.java:245)
	at tools.descartes.teastore.registryclient.RegistryClientHeartbeatDaemon.run(RegistryClientHeartbeatDaemon.java:40)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.net.SocketTimeoutException: connect timed out
	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
	at java.base/java.net.Socket.connect(Socket.java:609)
	at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:177)
	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
	at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341)
	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1253)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1187)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1015)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1592)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1520)
	at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:527)
	at org.glassfish.jersey.client.internal.HttpUrlConnector.handleException(HttpUrlConnector.java:544)
	at org.glassfish.jersey.client.internal.HttpUrlConnector._apply(HttpUrlConnector.java:374)
	at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:266)
	... 20 more
[http-nio-8080-exec-1] WARN tools.descartes.teastore.registryclient.loadbalancers.ServiceLoadBalancer - Load Balancer was not initialized for service: tools.descartes.teastore.persistence. Is Registry up?
[http-nio-8080-exec-1] WARN tools.descartes.teastore.registryclient.loadbalancers.ServiceLoadBalancer - No Server registered for Service: tools.descartes.teastore.persistence
jakarta.ws.rs.ProcessingException: java.net.SocketTimeoutException: connect timed out
	at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:268)
	at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:297)
	at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$0(JerseyInvocation.java:662)
	at org.glassfish.jersey.client.JerseyInvocation.call(JerseyInvocation.java:697)
	at org.glassfish.jersey.client.JerseyInvocation.lambda$runInScope$3(JerseyInvocation.java:691)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:205)
	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:390)
	at org.glassfish.jersey.client.JerseyInvocation.runInScope(JerseyInvocation.java:691)
	at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:661)
	at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:439)
	at org.glassfish.jersey.client.JerseyInvocation$Builder.put(JerseyInvocation.java:328)
	at tools.descartes.teastore.registryclient.RegistryClient.registerOnce(RegistryClient.java:245)
	at tools.descartes.teastore.registryclient.RegistryClientHeartbeatDaemon.run(RegistryClientHeartbeatDaemon.java:40)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.net.SocketTimeoutException: connect timed out
	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
	at java.base/java.net.Socket.connect(Socket.java:609)
	at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:177)
	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
	at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
	at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:341)
	at java.base/sun.net.www.http.HttpClient.New(HttpClient.java:362)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1253)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1187)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:1015)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1592)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1520)
	at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:527)
	at org.glassfish.jersey.client.internal.HttpUrlConnector.handleException(HttpUrlConnector.java:544)
	at org.glassfish.jersey.client.internal.HttpUrlConnector._apply(HttpUrlConnector.java:374)
	at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:266)
	... 20 more
[http-nio-8080-exec-1] WARN tools.descartes.teastore.registryclient.loadbalancers.ServiceLoadBalancer - Load Balancer was not initialized for service: tools.descartes.teastore.auth. Is Registry up?
[http-nio-8080-exec-1] WARN tools.descartes.teastore.registryclient.loadbalancers.ServiceLoadBalancer - No Server registered for Service: tools.descartes.teastore.auth

Afterwards, in ~/myFolder, there are some Kieker results, but if I access localhost:8080 with my browser, the following occurs:

 500: Internal Exception: null

java.lang.NullPointerException at tools.descartes.teastore.registryclient.rest.RestUtil.throwCommonExceptions(RestUtil.java:38) at tools.descartes.teastore.registryclient.rest.RestUtil.readThrowAndOrClose(RestUtil.java:73) at tools.descartes.teastore.registryclient.rest.LoadBalancedStoreOperations.isLoggedIn_aroundBody6(LoadBalancedStoreOperations.java:136) at tools.descartes.teastore.registryclient.rest.LoadBalancedStoreOperations$AjcClosure7.run(LoadBalancedStoreOperations.java:1) at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:167) at tools.descartes.teastore.kieker.probes.AbstractOperationExecutionWithParameterAspect.operation(AbstractOperationExecutionWithParameterAspect.java:91) at tools.descartes.teastore.registryclient.rest.LoadBalancedStoreOperations.isLoggedIn(LoadBalancedStoreOperations.java:131) at tools.descartes.teastore.webui.servlet.IndexServlet.handleGETRequest_aroundBody0(IndexServlet.java:58) at tools.descartes.teastore.webui.servlet.IndexServlet$AjcClosure1.run(IndexServlet.java:1) at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:167) at tools.descartes.teastore.kieker.probes.AbstractOperationExecutionWithParameterAspect.operation(AbstractOperationExecutionWithParameterAspect.java:91) at tools.descartes.teastore.webui.servlet.IndexServlet.handleGETRequest(IndexServlet.java:54) at tools.descartes.teastore.webui.servlet.AbstractUIServlet.doGet(AbstractUIServlet.java:224) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:665) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:774) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:224) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:159) at tools.descartes.teastore.registryclient.rest.TrackingFilter.doFilter(TrackingFilter.java:70) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:159) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:353) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:870) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1696) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:829) 

Therefore, just starting the teastore-webui seems to be not sufficient, as we also need the other components, right? But if I start them like this:

docker run -v /home/myUserName/myFolder:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=10.1.2.3" -e "REGISTRY_PORT=10000" -e "HOST_NAME=10.1.2.30" -e "SERVICE_PORT=1111" -e "DB_HOST=10.1.2.20" -e "DB_PORT=3306" -p 1111:8080 -d descartesresearch/teastore-persistence
docker run -v /home/myUserName/myFolder:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=10.1.2.3" -e "REGISTRY_PORT=10000" -e "HOST_NAME=10.1.2.30" -e "SERVICE_PORT=2222" -p 2222:8080 -d descartesresearch/teastore-auth
docker run -v /home/myUserName/myFolder:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=10.1.2.3" -e "REGISTRY_PORT=10000" -e "HOST_NAME=10.1.2.30" -e "SERVICE_PORT=3333" -p 3333:8080 -d descartesresearch/teastore-recommender
docker run -v /home/myUserName/myFolder:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=10.1.2.3" -e "REGISTRY_PORT=10000" -e "HOST_NAME=10.1.2.30" -e "SERVICE_PORT=4444" -p 4444:8080 -d descartesresearch/teastore-image
docker run -v /home/myUserName/myFolder:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=10.1.2.3" -e "REGISTRY_PORT=10000" -e "HOST_NAME=10.1.2.30" -e "SERVICE_PORT=8080" -p 8080:8080 -d descartesresearch/teastore-webui

(like specified in https://github.com/DaGeRe/TeaStore/blob/master/GET_STARTED.md#2213-local-logging), I still get the same error.

And if I start all containers using docker-compose -f ./examples/docker/docker-compose_kieker.yaml up -d, I get the TeaStore interface in my browser like I would expect it:
grafik
(And I can also play around).

But still, if I enter the webui with docker exec -it docker_webui_1 bash, /kieker/logs is empty. And additionally, if I try to start a load test using java -jar ~/Programme/apache-jmeter-5.5/bin/ApacheJMeter.jar -t examples/jmeter/teastore_browse.jmx -Jhostname localhost -Jport 8080 -JnumUser 10 -n , I mostly get errors.

So I got two options: Starting with docker-compose up, that does not yield Kieker results but seems to basically work, or start docker docker run, which creates Kieker results, but the website overall does not work.

Do you have an idea how to solve at least one of these problems, so that I can start TeaTime and get Kieker results?

from teastore.

SimonEismann avatar SimonEismann commented on June 30, 2024

Let's first focus on getting the local setup working with Kieker tracing. Probably a silly question, but have you replaced the 10.1.2.30 in the example commands with the public IP of your machine?

Another thing we could try is using older teastore versions from dockerhub (see https://hub.docker.com/r/descartesresearch/teastore-webui/tags for a list of available versions) and check if we maybe introduced the issue with kieker tracking in the latest versions.

from teastore.

DaGeRe avatar DaGeRe commented on June 30, 2024

Thanks for the hint, I overlooked the hint to replace the IP. Now, I replaced 10.1.2.30 by my IP, and ended up with the following commands:

MY_IP="192.168.178.28"
docker run -e "HOST_NAME=10.1.2.3" -e "SERVICE_PORT=10000" -p 10000:8080 -d descartesresearch/teastore-registry
docker run -p 3306:3306 -d descartesresearch/teastore-db
docker run -v /home/myUserName/myFolder:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=10.1.2.3" -e "REGISTRY_PORT=10000" -e "HOST_NAME=$MY_IP" -e "SERVICE_PORT=1111" -e "DB_HOST=192.168.178.28" -e "DB_PORT=3306" -p 1111:8080 -d descartesresearch/teastore-persistence
docker run -v /home/myUserName/myFolder:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=10.1.2.3" -e "REGISTRY_PORT=10000" -e "HOST_NAME=$MY_IP" -e "SERVICE_PORT=2222" -p 2222:8080 -d descartesresearch/teastore-auth
docker run -v /home/myUserName/myFolder:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=10.1.2.3" -e "REGISTRY_PORT=10000" -e "HOST_NAME=$MY_IP" -e "SERVICE_PORT=3333" -p 3333:8080 -d descartesresearch/teastore-recommender
docker run -v /home/myUserName/myFolder:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=10.1.2.3" -e "REGISTRY_PORT=10000" -e "HOST_NAME=$MY_IP" -e "SERVICE_PORT=4444" -p 4444:8080 -d descartesresearch/teastore-image
docker run -v /home/myUserName/myFolder:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=10.1.2.3" -e "REGISTRY_PORT=10000" -e "HOST_NAME=$MY_IP" -e "SERVICE_PORT=8080" -p 8080:8080 -d descartesresearch/teastore-webui

Besides the IP change, I did not change anything to the commands from https://github.com/DaGeRe/TeaStore/blob/master/GET_STARTED.md#2213-local-logging
Unfortunately, connection issues still occur. teastore-persistence has the following in the log:

[main] INFO tools.descartes.teastore.persistence.repository.EMFManager - Using MySQL/MariaDB database.
[main] INFO tools.descartes.teastore.persistence.repository.EMFManager - Setting jdbc url to "jdbc:mysql://192.168.178.28:3306/teadb".
TEST
[main] WARN tools.descartes.teastore.persistence.daemons.InitialDataGenerationDaemon - Exception connecting to database. Is database offline? Wating for 2000 ms.
TEST
[main] WARN tools.descartes.teastore.persistence.daemons.InitialDataGenerationDaemon - Exception connecting to database. Is database offline? Wating for 2000 ms.

But when I try mysql --host 192.168.178.28 -P 3306 -u root -prootpassword teadb, everything works fine (but there are no tables in the database). According to

<property name="jakarta.persistence.jdbc.user" value="teauser"/>
, teauser and teapassword should be the default values, and this also works (using mysql --host 192.168.178.28 -P 3306 -u teauser -pteapassword teadb I can connect to the database from the host).

After some fiddeling, I found the reason: my firewall ufw was blocking port 3306. Allowing 3306 did not solve the issue, because TeaStore seems to use other ports as well. In the end, using sudo ufw disable, I can access the site. Is there some solution for this (without disabling the firewall) - maybe setting the network also in the docker run commands?

However, in the end,

MY_IP="192.168.178.28"
MY_FOLDER=$(pwd)/kieker-results/
docker run -p 3306:3306 -d descartesresearch/teastore-db
docker run -e "HOST_NAME=$MY_IP" -e "SERVICE_PORT=10000" -p 10000:8080 -d descartesresearch/teastore-registry
docker run -v $MY_FOLDER/teastore-persistence:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=$MY_IP" -e "REGISTRY_PORT=10000" -e "HOST_NAME=$MY_IP" -e "SERVICE_PORT=1111" -e "DB_HOST=$MY_IP" -e "DB_PORT=3306" -p 1111:8080 -d descartesresearch/teastore-persistence
docker run -v $MY_FOLDER/teastore-auth:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=$MY_IP" -e "REGISTRY_PORT=10000" -e "HOST_NAME=$MY_IP" -e "SERVICE_PORT=2222" -p 2222:8080 -d descartesresearch/teastore-auth
docker run -v $MY_FOLDER/teastore-recommender:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=$MY_IP" -e "REGISTRY_PORT=10000" -e "HOST_NAME=$MY_IP" -e "SERVICE_PORT=3333" -p 3333:8080 -d descartesresearch/teastore-recommender
docker run -v $MY_FOLDER/teastore-image:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=$MY_IP" -e "REGISTRY_PORT=10000" -e "HOST_NAME=$MY_IP" -e "SERVICE_PORT=4444" -p 4444:8080 -d descartesresearch/teastore-image
docker run -v $MY_FOLDER/teastore-webui:/kieker/logs/ -e "LOG_TO_FILE=true" -e "REGISTRY_HOST=$MY_IP" -e "REGISTRY_PORT=10000" -e "HOST_NAME=$MY_IP" -e "SERVICE_PORT=8080" -p 8080:8080 -d descartesresearch/teastore-webui

and afterwards java -jar ~/Programme/apache-jmeter-5.5/bin/ApacheJMeter.jar -t examples/jmeter/teastore_browse.jmx -Jhostname localhost -Jport 8080 -JnumUser 10 -n seems to work for me and yields kieker-results in kieker-results/ for each container.

from teastore.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.