diff --git a/README.md b/README.md index e1164ff..b860565 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,12 @@ # docker-pinpoint - +This repo contains the docker images for [Pinpoint](https://github.com/naver/pinpoint), or you can just use the docker compose file run pinpoint in seconds. -- [docker-pinpoint](#docker-pinpoint) - - [Build the images](#build-the-images) - - [Run all the containers](#run-all-the-containers) - - [Add your own Java based application to be monitored.](#add-your-own-java-based-application-to-be-monitored) - - - -This repo contains all the docker images for [Pinpoint](https://github.com/naver/pinpoint), or you can just use the docker compose file run pinpoint in seconds. - -### Build the images +### To build the images * Go to a folder * `docker build -t repo-name:latest .` to build the image -### Run all the containers +### To run all containers ``` docker-compose up -d @@ -26,7 +17,7 @@ Open your browser and then go to ### Add your own Java based application to be monitored. -* Download the pinpoint agent tar file from and then modify the `pinpoint.config` if you need. +* Modify the `pinpoint.config` if you need. ``` ########################################################### @@ -52,10 +43,12 @@ profiler.collector.tcp.port=9994 * The following script is a example for a spring boot application. ```shell -java -javaagent:/some-absolute-path/pinpoint-agent-1.6.2/pinpoint-bootstrap-1.6.2.jar -Dpinpoint.agentId=some-union-id -Dpinpoint.applicationName=some-name -jar build/libs/your-jar.jar +java -javaagent:/some-absolute-path/pinpoint-agent-1.6.2/pinpoint-bootstrap-1.6.2.jar -Dpinpoint.agentId=some-union-id -Dpinpoint.applicationName=some-name -jar build/libs/wise-log-1.0.0-SNAPSHOT.jar ``` +[See more examples of monitoring](examples) using docker-compose, image docker, monitoring tests with selenium, ... + You can find more samples at: If you plan to use external volumes for hbase you should fill hbase first. diff --git a/docker-compose.yml b/docker-compose.yml index d32cf36..997b0da 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '2' services: pinpoint-hbase: container_name: pinpoint-hbase - image: wahyd4/pinpoint-hbase:1.6.2 + image: marcosamm/pinpoint-hbase:1.6.2 restart: always expose: - "2181" @@ -55,6 +55,8 @@ services: COLLECTOR_UDP_SPAN_LISTEN_PORT: 9996 CLUSTER_ENABLE: 'true' CLUSTER_ZOOKEEPER_ADDRESS: pinpoint-hbase +# CLUSTER_LISTEN_IP: +# CLUSTER_LISTEN_PORT DISABLE_DEBUG: 'true' TZ: "America/Recife" @@ -67,19 +69,37 @@ services: restart: always expose: - "8080" + - "9997" ports: + - "9997:9997/tcp" - "28080:8080" environment: HBASE_HOST: pinpoint-hbase HBASE_PORT: 2181 CLUSTER_ENABLE: 'true' CLUSTER_ZOOKEEPER_ADDRESS: pinpoint-hbase + CLUSTER_WEB_TCP_PORT: 9997 +# CLUSTER_CONNECT_ADDRESS: +# CONFIG_SENDUSAGE: 'false' ADMIN_PASSWORD: admin123 DISABLE_DEBUG: 'true' JDBC_DRIVER: com.mysql.jdbc.Driver JDBC_URL: jdbc:mysql://pinpoint-mysql:3306/pinpoint?characterEncoding=UTF-8 JDBC_USERNAME: admin JDBC_PASSWORD: admin + BATCH_ENABLE: 'true' +# BATCH_SERVER_IP: 127.0.0.1 + MAIL_HOST: stmp.test.com + MAIL_PORT: 123 + MAIL_USERNAME: user + MAIL_PASSWORD: pass +# MAIL_PROPERTIES_MAIL_TRANSPORT_PROTOCOL: smtp + MAIL_PROPERTIES_MAIL_SMTP_AUTH: 'true' + MAIL_PROPERTIES_MAIL_SMTP_PORT: 587 +# MAIL_PROPERTIES_MAIL_SMTP_FROM: test@example.com + MAIL_PROPERTIES_MAIL_STARTTLS_ENABLE: 'true' +# MAIL_PROPERTIES_MAIL_STARTTLS_REQUIRED: 'true' +# MAIL_PROPERTIES_MAIL_DEBUG: 'true' TZ: "America/Recife" volumes: diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..b1d1e8d --- /dev/null +++ b/examples/README.md @@ -0,0 +1,5 @@ +* [Rancher server with docker-compose.yml](rancher-server-with-docker-compose) + +* [Using docker image with embedded pinpoint-agent](joinfaces-example-with-docker-image) + +* [Monitoring application with pinpoint during automated testing](joinfaces-example-with-selenium-test) \ No newline at end of file diff --git a/examples/joinfaces-example-with-docker-image/Dockerfile b/examples/joinfaces-example-with-docker-image/Dockerfile new file mode 100644 index 0000000..355c7c8 --- /dev/null +++ b/examples/joinfaces-example-with-docker-image/Dockerfile @@ -0,0 +1,11 @@ +# DESCRIPTION Monitoring JoinFaces-example with pinpoint-agent +# TO_BUILD docker build -t joinfaces-example-with-pinpoint-agent . +# TO_RUN docker run -d -p 8080:8080 joinfaces-example-with-pinpoint-agent +FROM marcosamm/pinpointagent-oraclejre:latest + +COPY app/joinfaces-example/ /opt/joinfaces-example +COPY app/pinpoint-agent/ /opt/pinpoint-agent + +EXPOSE 8080 + +ENTRYPOINT ["java", "-javaagent:/opt/pinpoint-agent/pinpoint-bootstrap.jar", "-Dpinpoint.agentId=dockerfile", "-Dpinpoint.applicationName=joinfaces-example", "-jar", "/opt/joinfaces-example/joinfaces-example-2.4.0-SNAPSHOT.jar"] diff --git a/examples/joinfaces-example-with-docker-image/README.md b/examples/joinfaces-example-with-docker-image/README.md new file mode 100644 index 0000000..d998438 --- /dev/null +++ b/examples/joinfaces-example-with-docker-image/README.md @@ -0,0 +1,41 @@ +# Monitoring joinfaces-example application with docker image +This example shows how to run and monitor the joinfaces-example application with pinpoint-agent + +## Running with [Dockerfile](Dockerfile) +### - To build the image +``` +docker build -t joinfaces-example-with-pinpoint-agent . +``` + +### - To run container +``` +docker run -d -p 8080:8080 joinfaces-example-with-pinpoint-agent +``` + +## Running without Dockerfile +``` +docker run -it --rm \ + -e COLLECTOR_IP="192.168.0.18" \ + -p 8080:8080 \ + -v /home/marcosamm/apps/joinfaces-example-2.4.0-SNAPSHOT.jar:/opt/apps/app.jar \ + marcosamm/pinpointagent-oraclejre \ + /bin/sh -c "java -javaagent:/opt/pinpoint-agent/pinpoint-bootstrap.jar -Dpinpoint.agentId=agent1 -Dpinpoint.applicationName=joinfaces-example -jar /opt/apps/app.jar" +``` +See too: +* [marcosamm/pinpointagent-oraclejre](https://hub.docker.com/r/marcosamm/pinpointagent-oraclejre/) +* [marcosamm/pinpointagent-openjre](https://hub.docker.com/r/marcosamm/pinpointagent-openjre/) + +## To access +http://localhost:8080 + +## Notes +* The following environment variables can be used to set pinpoint-agent configuration properties (pinpoint.config): + - COLLECTOR_IP + - PROFILER_APPLICATIONSERVERTYPE + - PROFILER_TOMCAT_CONDITIONAL_TRANSFORM + - PROFILER_SAMPLING_RATE + - PROFILER_JSON_JSONLIB + - PROFILER_JSON_JACKSON + - PROFILER_JSON_GSON +* You can map a custom configuration file as a volume with the option: -v /path/to/pinpoint.config:/opt/pinpoint-agent/pinpoint.config:rw +* If the pinpoint.config file is mapped only with read permission (ro), do not use any environment variable to modify pinpoint-agent configuration parameters, this will cause errors. \ No newline at end of file diff --git a/examples/joinfaces-example-with-docker-image/app/joinfaces-example/joinfaces-example-2.4.0-SNAPSHOT.jar b/examples/joinfaces-example-with-docker-image/app/joinfaces-example/joinfaces-example-2.4.0-SNAPSHOT.jar new file mode 100644 index 0000000..4872afa Binary files /dev/null and b/examples/joinfaces-example-with-docker-image/app/joinfaces-example/joinfaces-example-2.4.0-SNAPSHOT.jar differ diff --git a/examples/joinfaces-example-with-docker-image/app/pinpoint-agent/pinpoint.config b/examples/joinfaces-example-with-docker-image/app/pinpoint-agent/pinpoint.config new file mode 100644 index 0000000..6819d82 --- /dev/null +++ b/examples/joinfaces-example-with-docker-image/app/pinpoint-agent/pinpoint.config @@ -0,0 +1,429 @@ +# +# Pinpoint agent configuration +# + +########################################################### +# Collector server # +########################################################### +profiler.collector.ip=192.168.0.18 + +# placeHolder support "${key}" +profiler.collector.span.ip=${profiler.collector.ip} +profiler.collector.span.port=9996 + +# placeHolder support "${key}" +profiler.collector.stat.ip=${profiler.collector.ip} +profiler.collector.stat.port=9995 + +# placeHolder support "${key}" +profiler.collector.tcp.ip=${profiler.collector.ip} +profiler.collector.tcp.port=9994 + + +########################################################### +# Profiler Global Configuration # +########################################################### +profiler.enable=true + +profiler.jvm.collect.interval=1000 + +profiler.sampling.enable=true + +# Set sampling rate. If you set it to 10, 1 out of 10 transaction will be sampled. +profiler.sampling.rate=1 + +profiler.io.buffering.enable=true +profiler.io.buffering.buffersize=20 + +profiler.spandatasender.write.queue.size=5120 +#profiler.spandatasender.socket.sendbuffersize=1048576 +#profiler.spandatasender.socket.timeout=3000 +profiler.spandatasender.chunk.size=16384 +profiler.spandatasender.socket.type=OIO + +profiler.statdatasender.write.queue.size=5120 +#profiler.statdatasender.socket.sendbuffersize=1048576 +#profiler.statdatasender.socket.timeout=3000 +profiler.statdatasender.chunk.size=16384 +profiler.statdatasender.socket.type=OIO + +profiler.agentInfo.send.retry.interval=300000 + +# Allows TCP data command +profiler.tcpdatasender.command.accept.enable=true +profiler.tcpdatasender.command.activethread.enable=true +profiler.tcpdatasender.command.activethread.count.enable=true +profiler.tcpdatasender.command.activethread.threaddump.enable=true +profiler.tcpdatasender.command.activethread.threadlightdump.enable=true + +# Trace Agent active thread info +profiler.pinpoint.activethread=true + +# Trace DataSource +profiler.pinpoint.datasource=true + +## Call Stack +# Set max depth, if -1 is unlimited and min is 2. +profiler.callstack.max.depth=64 + +# weather or not to propagate exceptions occurred at interceptor +profiler.interceptor.exception.propagate=false + +# Allow bytecode framework (JAVASSIST or ASM) +profiler.instrument.engine=ASM + +# bytecode dump option +# java bytecode debug option +bytecode.dump.enable=false +#bytecode.dump.classlist=com.naver.user.UserService,com.pinpoint.debug.TestClass +bytecode.dump.classlist= +bytecode.dump.bytecode=false +bytecode.dump.verify=false +bytecode.dump.asm=false + +########################################################### +# application type # +########################################################### +#profiler.applicationservertype=TOMCAT +#profiler.applicationservertype=BLOC + + +########################################################### +# user defined classes # +########################################################### +profiler.include= +profiler.entrypoint= + +########################################################### +# TOMCAT # +########################################################### +profiler.tomcat.enable=true +# Classes for detecting application server type. Comma separated list of fully qualified class names. Wildcard not supported. +profiler.tomcat.bootstrap.main=org.apache.catalina.startup.Bootstrap +# Check pre-conditions when registering class file transformers mainly due to JBoss plugin transforming the same class. +# Setting this to true currently adds transformers only if the application was launched via org.apache.catalina.startup.Bootstrap, +# or SpringBoot's launchers. +# Set this to false to bypass this check entirely (such as when launching standalone applications running embedded Tomcat). +profiler.tomcat.conditional.transform=false +# Hide pinpoint headers. +profiler.tomcat.hidepinpointheader=true +# URLs to exclude from tracing +profiler.tomcat.excludeurl=/aa/test.html, /bb/exclude.html +profiler.tomcat.tracerequestparam=true + +# original IP address header +# https://en.wikipedia.org/wiki/X-Forwarded-For +#profiler.tomcat.realipheader=X-Forwarded-For +# nginx real ip header +#profiler.tomcat.realipheader=X-Real-IP +# optional parameter, If the header value is ${profiler.tomcat.realipemptyvalue}, Ignore header value. +#profiler.tomcat.realipemptyvalue=unknown + + +########################################################### +# JETTY # +########################################################### +profiler.jetty.enable=true +# Classes for detecting application server type. Comma separated list of fully qualified class names. Wildcard not supported. +profiler.jetty.bootstrap.main=org.eclipse.jetty.start.Main +# URLs to exclude from tracing +profiler.jetty.excludeurl= + + +########################################################### +# DUBBO # +########################################################### +profiler.dubbo.enable=true +# Classes for detecting application server type. Comma separated list of fully qualified class names. Wildcard not supported. +profiler.dubbo.bootstrap.main=com.alibaba.dubbo.container.Main + + +########################################################### +# JBOSS # +########################################################### +profiler.jboss.enable=true +# Classes for detecting application server type. Comma separated list of fully qualified class names. Wildcard not supported. +profiler.jboss.bootstrap.main=org.jboss.modules.Main +# Check pre-conditions when registering class file transformers mainly due to Tomcat plugin transforming the same class. +# Setting this to true currently adds transformers only if the application was launched via org.jboss.modules.Main. +# Set this to false to bypass this check entirely. +profiler.jboss.conditional.transform=true +# Hide pinpoint headers. +profiler.jboss.hidepinpointheader=true +# URLs to exclude from tracing +profiler.jboss.excludeurl= +# HTTP Request methods to exclude from tracing +#profiler.jboss.excludemethod= +profiler.jboss.tracerequestparam=true + +# original IP address header +# https://en.wikipedia.org/wiki/X-Forwarded-For +#profiler.jboss.realipheader=X-Forwarded-For +# nginx real ip header +#profiler.jboss.realipheader=X-Real-IP +# optional parameter, If the header value is ${profiler.jboss.realipemptyvalue}, Ignore header value. +#profiler.jboss.realipemptyvalue=unknown + +########################################################### +# Vert.x(Reliability and stability can not be guaranteed) # +########################################################### +profiler.vertx.enable=false +# Classes for detecting application server type. Comma separated list of fully qualified class names. Wildcard not supported. +profiler.vertx.bootstrap.main=io.vertx.core.Starter +# Track Vertx.runOnContext() & Vertx.executeBlocking(). +# Sets the class name that implements io.vertx.core.Handler. +# Improvement is in progress. +profiler.vertx.handlers= + +# HTTP server +profiler.vertx.http.server.enable=false +profiler.vertx.http.server.tracerequestparam=true +# URLs to exclude from tracing +profiler.vertx.http.server.excludeurl= +# original IP address header +# https://en.wikipedia.org/wiki/X-Forwarded-For +#profiler.vertx.http.server.realipheader=X-Forwarded-For +# nginx real ip header +#profiler.vertx.http.realipheader=X-Real-IP +# optional parameter, If the header value is ${profiler.vertx.http.server.realipemptyvalue}, Ignore header value. +#profiler.vertx.http.server.realipemptyvalue=unknown +# HTTP Request methods to exclude from tracing +#profiler.vertx.http.server.excludemethod= + +# HTTP client +profiler.vertx.http.client.enable=false +profiler.vertx.http.client.param=true +profiler.vertx.http.client.cookie=true +# When to dump cookies. Either ALWAYS or EXCEPTION. +profiler.vertx.http.client.cookie.dumptype=ALWAYS +# 1 out of n cookies will be sampled where n is the rate. (1: 100%) +profiler.vertx.http.client.cookie.sampling.rate=1 +profiler.vertx.http.client.entity.statuscode=true + +########################################################### +# SPRING BOOT # +########################################################### +profiler.springboot.enable=true +# Classes for detecting application server type. Comma separated list of fully qualified class names. Wildcard not supported. +profiler.springboot.bootstrap.main=org.springframework.boot.loader.JarLauncher, org.springframework.boot.loader.WarLauncher, org.springframework.boot.loader.PropertiesLauncher + + +########################################################### +# JDBC # +########################################################### +profiler.jdbc=true +profiler.jdbc.sqlcachesize=1024 +profiler.jdbc.maxsqlbindvaluesize=1024 + +# +# MYSQL +# +profiler.jdbc.mysql=true +profiler.jdbc.mysql.setautocommit=true +profiler.jdbc.mysql.commit=true +profiler.jdbc.mysql.rollback=true + +# +# MSSQL Jtds +# +profiler.jdbc.jtds=true +profiler.jdbc.jtds.setautocommit=true +profiler.jdbc.jtds.commit=true +profiler.jdbc.jtds.rollback=true + +# +# Oracle +# +profiler.jdbc.oracle=true +profiler.jdbc.oracle.setautocommit=true +profiler.jdbc.oracle.commit=true +profiler.jdbc.oracle.rollback=true + +# +# CUBRID +# +profiler.jdbc.cubrid=true +profiler.jdbc.cubrid.setautocommit=true +profiler.jdbc.cubrid.commit=true +profiler.jdbc.cubrid.rollback=true + +# +# DBCP +# +profiler.jdbc.dbcp=true +profiler.jdbc.dbcp.connectionclose=true + +# +# DBCP2 +# +profiler.jdbc.dbcp2=true +profiler.jdbc.dbcp2.connectionclose=true + +# +# HIKARICP +# +profiler.jdbc.hikaricp=true +profiler.jdbc.hikaricp.connectionclose=true + +########################################################### +# Apache HTTP Client 4.x # +########################################################### +profiler.apache.httpclient4=true +profiler.apache.httpclient4.cookie=true + +# When cookies should be dumped. It could be ALWAYS or EXCEPTION. +profiler.apache.httpclient4.cookie.dumptype=ALWAYS +profiler.apache.httpclient4.cookie.sampling.rate=1 + +# Dump entities of POST or PUT request. limited to entities which is HttpEtity.isRepeatable() == true. +profiler.apache.httpclient4.entity=true + +# When entities should be dumped. ALWAYS or EXCEPTION. +profiler.apache.httpclient4.entity.dumptype=ALWAYS +profiler.apache.httpclient4.entity.sampling.rate=1 + +# Can profile status code value +profiler.apache.httpclient4.entity.statuscode=true + +# Not supported yet +#profiler.apache.nio.httpclient4=true + + +########################################################### +# JDK HTTPURLConnection # +########################################################### +profiler.jdk.httpurlconnection=true + + +########################################################### +# Ning Async HTTP Client # +########################################################### +profiler.ning.asynchttpclient=true +profiler.ning.asynchttpclient.cookie=true +profiler.ning.asynchttpclient.cookie.dumptype=ALWAYS +profiler.ning.asynchttpclient.cookie.dumpsize=1024 +profiler.ning.asynchttpclient.cookie.sampling.rate=1 +profiler.ning.asynchttpclient.entity=true +profiler.ning.asynchttpclient.entity.dumptype=ALWAYS +profiler.ning.asynchttpclient.entity.dumpsize=1024 +profiler.ning.asynchttpclient.entity.sampling.rate=1 +profiler.ning.asynchttpclient.param=true +profiler.ning.asynchttpclient.param.dumptype=ALWAYS +profiler.ning.asynchttpclient.param.dumpsize=1024 +profiler.ning.asynchttpclient.param.sampling.rate=1 + + +########################################################### +# LINE+ baseframework # +########################################################### +profiler.line.game.netty.param.dumpsize=512 +profiler.line.game.netty.entity.dumpsize=512 + + +########################################################### +# Arcus # +########################################################### +profiler.arcus=true +profiler.arcus.keytrace=true + + +########################################################### +# Memcached # +########################################################### +profiler.memcached=true +profiler.memcached.keytrace=true + + +########################################################### +# ibatis # +########################################################### +profiler.orm.ibatis=true + + +########################################################### +# mybatis # +########################################################### +profiler.orm.mybatis=true + + +########################################################### +# spring-beans +########################################################### +# Profile spring-beans +profiler.spring.beans=true + +# filters +# filter +# filter OR filters +# filter +# value +# value AND filter +# value +# token +# token OR token +# token +# profiler.spring.beans.n.scope= [component-scan | post-processor] default is component-scan. +# profiler.spring.beans.n.base-packages= [package name, ...] +# profiler.spring.beans.n.name.pattern= [regex pattern, regex:regex pattern, antstyle:antstyle pattern, ...] +# profiler.spring.beans.n.class.pattern= [regex pattern, regex:regex pattern, antstyle:antstyle pattern, ...] +# profiler.spring.beans.n.annotation= [annotation name, ...] +# +# Scope: +# component-scan: or @ComponentScan +# post-processor: BeanPostProcessor - Slow!!! +# +# ANT Style pattern rules: +# ? - matches on character +# * - matches zero or more characters +# ** - matches zero or more 'directories' in a path + +# Examples +# profiler.spring.beans.1.scope=component-scan +# profiler.spring.beans.1.base-packages=com.foo, com.bar +# profiler.spring.beans.1.name.pattern=.*Foo, regex:.*Bar, antstyle:*Controller +# profiler.spring.beans.1.class.pattern= +# profiler.spring.beans.1.annotation=org.springframework.stereotype.Controller,org.springframework.stereotype.Service,org.springframework.stereotype.Repository +# +# profiler.spring.beans.2.scope=post-processor +# profiler.spring.beans.2.base-packages=com.foo +# profiler.spring.beans.2.name.pattern= +# profiler.spring.beans.2.class.pattern=antstyle:com.foo.repository.*Repository, antstyle:com.foo.Service.Main* +# profiler.spring.beans.2.annotation= + +profiler.spring.beans.1.scope=component-scan +profiler.spring.beans.1.base-packages= +profiler.spring.beans.1.name.pattern= +profiler.spring.beans.1.class.pattern= +profiler.spring.beans.1.annotation=org.springframework.stereotype.Controller,org.springframework.stereotype.Service,org.springframework.stereotype.Repository + +profiler.spring.beans.mark.error=false +########################################################### +# log4j +########################################################### +profiler.log4j.logging.transactioninfo=false + +########################################################### +# logback +########################################################### +profiler.logback.logging.transactioninfo=false + +########################################################### +# gson +########################################################### +profiler.json.gson=true + +########################################################### +# jackson +########################################################### +profiler.json.jackson=true + +########################################################### +# json-lib +########################################################### +profiler.json.jsonlib=true + +########################################################### +# cxf +########################################################### +profiler.cxf.client=true +#profiler.cxf.client.hiddenParams= diff --git a/examples/joinfaces-example-with-selenium-test/Dockerfile b/examples/joinfaces-example-with-selenium-test/Dockerfile new file mode 100644 index 0000000..2d8d3b3 --- /dev/null +++ b/examples/joinfaces-example-with-selenium-test/Dockerfile @@ -0,0 +1,24 @@ +# DESCRIPTION joinjaces-example + pinpoint-agent +# TO_BUILD docker build -t joinfaces-exemple-with-pinpoint-agent . +# TO_RUN docker run -it \ +# -e COLLECTOR_IP="198.162.0.18" \ +# -e PROFILER_APPLICATIONSERVERTYPE="TOMCAT" \ +# -e PROFILER_TOMCAT_CONDITIONAL_TRANSFORM="false" \ +# -e PROFILER_SAMPLING_RATE="1" \ +# -e PROFILER_JSON_JSONLIB="true" \ +# -e PROFILER_JSON_JACKSON="true" \ +# -e PROFILER_JSON_GSON="true" \ +# -v /home/marcosamm/.m2/repository:/root/.m2/repository \ +# joinfaces-exemple-with-pinpoint-agent \ +# /bin/sh -c "xvfb-run mvn -DwebDriverType=chrome install verify" + +FROM marcosamm/pinpointagent-chrome-maven-oraclejdk:latest + +WORKDIR /opt + +RUN wget https://github.com/marcosamm/joinfaces-example/archive/master.zip \ + && unzip master.zip \ + && mv joinfaces-example-master joinfaces-example \ + && rm master.zip + +WORKDIR /opt/joinfaces-example diff --git a/examples/joinfaces-example-with-selenium-test/README.md b/examples/joinfaces-example-with-selenium-test/README.md new file mode 100644 index 0000000..c142a76 --- /dev/null +++ b/examples/joinfaces-example-with-selenium-test/README.md @@ -0,0 +1,54 @@ +# Monitoring joinfaces-example application with selenium tests +This example shows how to monitor the joinfaces-example application while running automated tests + +## Running with [Dockerfile](Dockerfile) +### - To build the image +``` +docker build -t joinfaces-exemple-with-pinpoint-agent . +``` + +### - To run container +``` +docker run -it \ + -e COLLECTOR_IP="198.162.0.18" \ + -e PROFILER_APPLICATIONSERVERTYPE="TOMCAT" \ + -e PROFILER_TOMCAT_CONDITIONAL_TRANSFORM="false" \ + -e PROFILER_SAMPLING_RATE="1" \ + -e PROFILER_JSON_JSONLIB="true" \ + -e PROFILER_JSON_JACKSON="true" \ + -e PROFILER_JSON_GSON="true" \ + -v /home/marcosamm/.m2/repository:/root/.m2/repository \ + joinfaces-exemple-with-pinpoint-agent \ + /bin/sh -c "xvfb-run mvn -DwebDriverType=chrome install verify" +``` + +## Running without Dockerfile +``` +docker run -it --rm \ + -e COLLECTOR_IP="192.168.0.18" \ + -e PROFILER_APPLICATIONSERVERTYPE="TOMCAT" \ + -e PROFILER_TOMCAT_CONDITIONAL_TRANSFORM="false" \ + -v /home/marcosamm/git/joinfaces-example/:/opt/app/ \ + -v /home/marcosamm/.m2/repository:/root/.m2/repository \ + marcosamm/pinpointagent-firefox-maven-oraclejdk \ + /bin/sh -c "cd /opt/app/; xvfb-run mvn clean install verify" +``` +See too: +* [marcosamm/pinpointagent-chrome-maven-openjdk](https://hub.docker.com/r/marcosamm/pinpointagent-chrome-maven-openjdk/) +* [marcosamm/pinpointagent-chrome-maven-oraclejdk](https://hub.docker.com/r/marcosamm/pinpointagent-chrome-maven-oraclejdk/) +* [marcosamm/pinpointagent-chromium-maven-openjdk](https://hub.docker.com/r/marcosamm/pinpointagent-chromium-maven-openjdk/) +* [marcosamm/pinpointagent-chromium-maven-oraclejdk](https://hub.docker.com/r/marcosamm/pinpointagent-chromium-maven-oraclejdk/) +* [marcosamm/pinpointagent-firefox-maven-openjdk](https://hub.docker.com/r/marcosamm/pinpointagent-firefox-maven-openjdk/) +* [marcosamm/pinpointagent-firefox-maven-oraclejdk](https://hub.docker.com/r/marcosamm/pinpointagent-firefox-maven-oraclejdk/) + +## Notes +* The following environment variables can be used to set pinpoint-agent configuration properties (pinpoint.config): + - COLLECTOR_IP + - PROFILER_APPLICATIONSERVERTYPE + - PROFILER_TOMCAT_CONDITIONAL_TRANSFORM + - PROFILER_SAMPLING_RATE + - PROFILER_JSON_JSONLIB + - PROFILER_JSON_JACKSON + - PROFILER_JSON_GSON +* You can map a custom configuration file as a volume with the option: -v /path/to/pinpoint.config:/opt/pinpoint-agent/pinpoint.config:rw +* If the pinpoint.config file is mapped only with read permission (ro), do not use any environment variable to modify pinpoint-agent configuration parameters, this will cause errors. \ No newline at end of file diff --git a/docker-compose-example-app.yml b/examples/rancher-server-with-docker-compose/docker-compose.yml similarity index 77% rename from docker-compose-example-app.yml rename to examples/rancher-server-with-docker-compose/docker-compose.yml index c2a753b..9d7257f 100644 --- a/docker-compose-example-app.yml +++ b/examples/rancher-server-with-docker-compose/docker-compose.yml @@ -6,16 +6,16 @@ rancher-server: ports: - 8080:8080 environment: - JAVA_OPTS: "-javaagent:/assets/pinpoint-agent/pinpoint-bootstrap-1.6.2.jar -Dpinpoint.agentId=app-in-docker -Dpinpoint.applicationName=app" + JAVA_OPTS: "-javaagent:/assets/pinpoint-agent/pinpoint-bootstrap.jar -Dpinpoint.agentId=app-in-docker -Dpinpoint.applicationName=app" pinpoint-agent: - image: wahyd4/pinpoint-agent:1.6.2 + image: marcosamm/pinpoint-agent:1.6.2 net: "none" restart: unless-stopped # volumes: # - /var/container_data/pinpoint-agent/log:/opt/app/pinpoint-agent/log:rw environment: - COLLECTOR_IP: 192.168.99.100 + COLLECTOR_IP: 192.168.0.18 COLLECTOR_TCP_PORT: 9994 COLLECTOR_UDP_STAT_LISTEN_PORT: 9995 COLLECTOR_UDP_SPAN_LISTEN_PORT: 9996 diff --git a/pinpoint-agent/Dockerfile b/pinpoint-agent/Dockerfile index a033182..77b55ae 100644 --- a/pinpoint-agent/Dockerfile +++ b/pinpoint-agent/Dockerfile @@ -5,21 +5,24 @@ FROM alpine:3.5 ENV PINPOINT_VERSION=1.6.2 +ENV PINPOINT_AGENT_HOME /assets/pinpoint-agent ADD configure-agent.sh /usr/local/bin/ RUN apk add --update curl bash \ && chmod a+x /usr/local/bin/configure-agent.sh \ - && mkdir -p /assets/pinpoint-agent \ - && curl -SL https://raw.githubusercontent.com/naver/pinpoint/$PINPOINT_VERSION/agent/src/main/resources/pinpoint.config -o /assets/pinpoint.config \ + && mkdir -p $PINPOINT_AGENT_HOME \ && curl -SL https://github.com/naver/pinpoint/releases/download/$PINPOINT_VERSION/pinpoint-agent-$PINPOINT_VERSION.tar.gz -o pinpoint-agent-$PINPOINT_VERSION.tar.gz \ && gunzip pinpoint-agent-$PINPOINT_VERSION.tar.gz \ - && tar -xf pinpoint-agent-$PINPOINT_VERSION.tar -C /assets/pinpoint-agent \ - && sed -i 's/DEBUG/INFO/' /assets/pinpoint-agent/lib/log4j.xml \ + && tar -xf pinpoint-agent-$PINPOINT_VERSION.tar -C $PINPOINT_AGENT_HOME \ + && sed -i 's/DEBUG/INFO/' $PINPOINT_AGENT_HOME/lib/log4j.xml \ && rm pinpoint-agent-$PINPOINT_VERSION.tar \ + && cd $PINPOINT_AGENT_HOME \ + && mv pinpoint-bootstrap-$PINPOINT_VERSION.jar pinpoint-bootstrap.jar && apk del curl \ && rm /var/cache/apk/* -VOLUME ["/assets/pinpoint-agent"] +VOLUME [$PINPOINT_AGENT_HOME] ENTRYPOINT ["/usr/local/bin/configure-agent.sh"] +CMD ["tail -f /dev/null"] diff --git a/pinpoint-agent/configure-agent.sh b/pinpoint-agent/configure-agent.sh old mode 100644 new mode 100755 index b9a60a0..c0f5bce --- a/pinpoint-agent/configure-agent.sh +++ b/pinpoint-agent/configure-agent.sh @@ -2,23 +2,57 @@ set -e set -x -COLLECTOR_IP=${COLLECTOR_IP:-127.0.0.1} -COLLECTOR_TCP_PORT=${COLLECTOR_TCP_PORT:-9994} -COLLECTOR_UDP_STAT_LISTEN_PORT=${COLLECTOR_UDP_STAT_LISTEN_PORT:-9995} -COLLECTOR_UDP_SPAN_LISTEN_PORT=${COLLECTOR_UDP_SPAN_LISTEN_PORT:-9996} +PINPOINT_AGENT_HOME=${PINPOINT_AGENT_HOME:-/opt/pinpoint-agent} + +COLLECTOR_IP=${COLLECTOR_IP:-} +COLLECTOR_TCP_PORT=${COLLECTOR_TCP_PORT:-} +COLLECTOR_UDP_STAT_LISTEN_PORT=${COLLECTOR_UDP_STAT_LISTEN_PORT:-} +COLLECTOR_UDP_SPAN_LISTEN_PORT=${COLLECTOR_UDP_SPAN_LISTEN_PORT:-} + +PROFILER_SAMPLING_RATE=${PROFILER_SAMPLING_RATE:-} + +PROFILER_APPLICATIONSERVERTYPE=${PROFILER_APPLICATIONSERVERTYPE:-} +PROFILER_TOMCAT_CONDITIONAL_TRANSFORM=${PROFILER_TOMCAT_CONDITIONAL_TRANSFORM:-} + +PROFILER_JSON_GSON=${PROFILER_JSON_GSON:-} +PROFILER_JSON_JACKSON=${PROFILER_JSON_JACKSON:-} +PROFILER_JSON_JSONLIB=${PROFILER_JSON_JSONLIB:-} DISABLE_DEBUG=${DISABLE_DEBUG:-true} -cp -f /assets/pinpoint.config /assets/pinpoint-agent/pinpoint.config - -sed -i "s/profiler.collector.ip=127.0.0.1/profiler.collector.ip=${COLLECTOR_IP}/g" /assets/pinpoint-agent/pinpoint.config - -sed -i "s/profiler.collector.tcp.port=9994/profiler.collector.tcp.port=${COLLECTOR_TCP_PORT}/g" /assets/pinpoint-agent/pinpoint.config -sed -i "s/profiler.collector.stat.port=9995/profiler.collector.stat.port=${COLLECTOR_UDP_STAT_LISTEN_PORT}/g" /assets/pinpoint-agent/pinpoint.config -sed -i "s/profiler.collector.span.port=9996/profiler.collector.span.port=${COLLECTOR_UDP_SPAN_LISTEN_PORT}/g" /assets/pinpoint-agent/pinpoint.config - -if [ "$DISABLE_DEBUG" == "true" ]; then - sed -i 's/level value="DEBUG"/level value="INFO"/' /assets/pinpoint-agent/lib/log4j.xml +if [ "$COLLECTOR_IP" != "" ]; then + sed -i "/profiler.collector.ip=/ s/=.*/=${COLLECTOR_IP}/" ${PINPOINT_AGENT_HOME}/pinpoint.config +fi +if [ "$COLLECTOR_TCP_PORT" != "" ]; then + sed -i "/profiler.collector.tcp.port=/ s/=.*/=${COLLECTOR_TCP_PORT}/" ${PINPOINT_AGENT_HOME}/pinpoint.config +fi +if [ "$COLLECTOR_UDP_STAT_LISTEN_PORT" != "" ]; then + sed -i "/profiler.collector.stat.port=/ s/=.*/=${COLLECTOR_UDP_STAT_LISTEN_PORT}/" ${PINPOINT_AGENT_HOME}/pinpoint.config +fi +if [ "$COLLECTOR_UDP_SPAN_LISTEN_PORT" != "" ]; then + sed -i "/profiler.collector.span.port=/ s/=.*/=${COLLECTOR_UDP_SPAN_LISTEN_PORT}/" ${PINPOINT_AGENT_HOME}/pinpoint.config +fi +if [ "$PROFILER_SAMPLING_RATE" != "" ]; then + sed -i "/profiler.sampling.rate=/ s/=.*/=${PROFILER_SAMPLING_RATE}/" ${PINPOINT_AGENT_HOME}/pinpoint.config +fi +if [ "$PROFILER_APPLICATIONSERVERTYPE" != "" ]; then + sed -i "/#profiler.applicationservertype=/ s/=.*/=${PROFILER_APPLICATIONSERVERTYPE}/" ${PINPOINT_AGENT_HOME}/pinpoint.config +fi +if [ "$PROFILER_TOMCAT_CONDITIONAL_TRANSFORM" != "" ]; then + sed -i "/profiler.tomcat.conditional.transform=/ s/=.*/=${PROFILER_TOMCAT_CONDITIONAL_TRANSFORM}/" ${PINPOINT_AGENT_HOME}/pinpoint.config +fi +if [ "$PROFILER_JSON_GSON" != "" ]; then + sed -i "/profiler.json.gson=/ s/=.*/=${PROFILER_JSON_GSON}/" ${PINPOINT_AGENT_HOME}/pinpoint.config +fi +if [ "$PROFILER_JSON_JACKSON" != "" ]; then + sed -i "/profiler.json.jackson=/ s/=.*/=${PROFILER_JSON_JACKSON}/" ${PINPOINT_AGENT_HOME}/pinpoint.config +fi +if [ "$PROFILER_JSON_JSONLIB" != "" ]; then + sed -i "/profiler.json.jsonlib=/ s/=.*/=${PROFILER_JSON_JSONLIB}/" ${PINPOINT_AGENT_HOME}/pinpoint.config fi -exec tail -f /dev/null \ No newline at end of file +if [ "$DISABLE_DEBUG" == "true" ]; then + sed -i 's/level value="DEBUG"/level value="INFO"/' ${PINPOINT_AGENT_HOME}/lib/log4j.xml +fi + +exec "$@" \ No newline at end of file diff --git a/pinpoint-collector/start-collector.sh b/pinpoint-collector/start-collector.sh index 05d40b2..e357776 100644 --- a/pinpoint-collector/start-collector.sh +++ b/pinpoint-collector/start-collector.sh @@ -4,6 +4,8 @@ set -x CLUSTER_ENABLE=${CLUSTER_ENABLE:-false} CLUSTER_ZOOKEEPER_ADDRESS=${CLUSTER_ZOOKEEPER_ADDRESS:-localhost} +CLUSTER_LISTEN_IP=${CLUSTER_LISTEN_IP:-} +CLUSTER_LISTEN_PORT=${CLUSTER_LISTEN_PORT:-} COLLECTOR_TCP_PORT=${COLLECTOR_TCP_PORT:-9994} COLLECTOR_UDP_STAT_LISTEN_PORT=${COLLECTOR_UDP_STAT_LISTEN_PORT:-9995} @@ -19,6 +21,12 @@ cp /assets/hbase.properties /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/hbase sed -i "s/cluster.enable=true/cluster.enable=${CLUSTER_ENABLE}/g" /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties sed -i "s/cluster.zookeeper.address=localhost/cluster.zookeeper.address=${CLUSTER_ZOOKEEPER_ADDRESS}/g" /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties +if [ "$CLUSTER_LISTEN_IP" != "" ]; then + sed -i "/cluster.listen.ip=/ s/=.*/=${CLUSTER_LISTEN_IP}/" /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties +fi +if [ "$CLUSTER_LISTEN_PORT" != "" ]; then + sed -i "/cluster.listen.port=/ s/=.*/=${CLUSTER_LISTEN_PORT}/" /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties +fi sed -i "s/collector.tcpListenPort=9994/collector.tcpListenPort=${COLLECTOR_TCP_PORT}/g" /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties sed -i "s/collector.udpStatListenPort=9995/collector.udpStatListenPort=${COLLECTOR_UDP_STAT_LISTEN_PORT}/g" /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties diff --git a/pinpoint-web/Dockerfile b/pinpoint-web/Dockerfile index 7a7e8e8..1709e07 100644 --- a/pinpoint-web/Dockerfile +++ b/pinpoint-web/Dockerfile @@ -7,16 +7,21 @@ FROM tomcat:8-jre8 ENV PINPOINT_VERSION=1.6.2 ADD start-web.sh /usr/local/bin/ +ADD mail.zip /assets/mail.zip RUN chmod a+x /usr/local/bin/start-web.sh \ && mkdir -p /assets/ \ && curl -SL https://raw.githubusercontent.com/naver/pinpoint/$PINPOINT_VERSION/web/src/main/resources/pinpoint-web.properties -o /assets/pinpoint-web.properties \ && curl -SL https://raw.githubusercontent.com/naver/pinpoint/$PINPOINT_VERSION/web/src/main/resources/hbase.properties -o /assets/hbase.properties \ && curl -SL https://github.com/naver/pinpoint/releases/download/$PINPOINT_VERSION/pinpoint-web-$PINPOINT_VERSION.war -o pinpoint-web.war \ + && curl -SL https://maven.java.net/content/repositories/releases/com/sun/mail/javax.mail/1.5.2/javax.mail-1.5.2.jar -o javax.mail-1.5.2.jar \ && rm -rf /usr/local/tomcat/webapps \ && mkdir -p /usr/local/tomcat/webapps \ && unzip pinpoint-web.war -d /usr/local/tomcat/webapps/ROOT \ - && rm -rf pinpoint-web.war + && rm -rf pinpoint-web.war \ + && mv javax.mail-1.5.2.jar /usr/local/tomcat/webapps/ROOT/WEB-INF/lib/ \ + && unzip /assets/mail.zip -d /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/ \ + && rm -rf /assets/mail.zip EXPOSE 8080 diff --git a/pinpoint-web/mail.zip b/pinpoint-web/mail.zip new file mode 100644 index 0000000..851516b Binary files /dev/null and b/pinpoint-web/mail.zip differ diff --git a/pinpoint-web/start-web.sh b/pinpoint-web/start-web.sh index 4aedf1f..f55c4db 100644 --- a/pinpoint-web/start-web.sh +++ b/pinpoint-web/start-web.sh @@ -4,11 +4,16 @@ set -x CLUSTER_ENABLE=${CLUSTER_ENABLE:-false} CLUSTER_ZOOKEEPER_ADDRESS=${CLUSTER_ZOOKEEPER_ADDRESS:-localhost} +CLUSTER_WEB_TCP_PORT=${CLUSTER_WEB_TCP_PORT:-9997} +CLUSTER_CONNECT_ADDRESS=${CLUSTER_CONNECT_ADDRESS:-} + ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin} HBASE_HOST=${HBASE_HOST:-localhost} HBASE_PORT=${HBASE_PORT:-2181} +CONFIG_SENDUSAGE=${CONFIG_SENDUSAGE:-true} + DISABLE_DEBUG=${DISABLE_DEBUG:-true} JDBC_DRIVER=${JDBC_DRIVER:-com.mysql.jdbc.Driver} @@ -23,19 +28,104 @@ jdbc.username=${JDBC_USERNAME} jdbc.password=${JDBC_PASSWORD} " > /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/jdbc.properties -cp /assets/pinpoint-web.properties /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-web.properties -cp /assets/hbase.properties /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/hbase.properties +BATCH_ENABLE=${BATCH_ENABLE:-false} +BATCH_SERVER_IP=${BATCH_SERVER_IP:-127.0.0.1} +MAIL_HOST=${MAIL_HOST:-} +MAIL_PORT=${MAIL_PORT:-} +MAIL_USERNAME=${MAIL_USERNAME:-} +MAIL_PASSWORD=${MAIL_PASSWORD:-} +MAIL_PROPERTIES_MAIL_TRANSPORT_PROTOCOL=${MAIL_PROPERTIES_MAIL_TRANSPORT_PROTOCOL:-smtp} +MAIL_PROPERTIES_MAIL_SMTP_AUTH=${MAIL_PROPERTIES_MAIL_SMTP_AUTH:-true} +MAIL_PROPERTIES_MAIL_SMTP_PORT=${MAIL_PROPERTIES_MAIL_SMTP_AUTH:-} +MAIL_PROPERTIES_MAIL_SMTP_FROM=${MAIL_PROPERTIES_MAIL_SMTP_FROM:-} +MAIL_PROPERTIES_MAIL_STARTTLS_ENABLE=${MAIL_PROPERTIES_MAIL_STARTTLS_ENABLE:-true} +MAIL_PROPERTIES_MAIL_STARTTLS_REQUIRED=${MAIL_PROPERTIES_MAIL_STARTTLS_REQUIRED:-} +MAIL_PROPERTIES_MAIL_DEBUG=${MAIL_PROPERTIES_MAIL_DEBUG:-} -sed -i "s/cluster.enable=true/cluster.enable=${CLUSTER_ENABLE}/g" /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-web.properties -sed -i "s/cluster.zookeeper.address=localhost/cluster.zookeeper.address=${CLUSTER_ZOOKEEPER_ADDRESS}/g" /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-web.properties +#Manipuled files with SED +WEB_INF_CLASSES_DIR=/usr/local/tomcat/webapps/ROOT/WEB-INF/classes +BATCH_PROPERTIES_FILE=${WEB_INF_CLASSES_DIR}/batch.properties +HBASE_PROPERTIES_FILE=${WEB_INF_CLASSES_DIR}/hbase.properties +PINPOINT_WEB_PROPERTIES_FILE=${WEB_INF_CLASSES_DIR}/pinpoint-web.properties +APPLICATION_CONTEXT_WEB_FILE=${WEB_INF_CLASSES_DIR}/applicationContext-web.xml +APPLICATION_CONTEXT_MAIL_FILE=${WEB_INF_CLASSES_DIR}/applicationContext-mail.xml +LOG4J_FILE=${WEB_INF_CLASSES_DIR}/log4j.xml -sed -i "s/admin.password=admin/admin.password=${ADMIN_PASSWORD}/g" /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-web.properties +cp /assets/pinpoint-web.properties ${PINPOINT_WEB_PROPERTIES_FILE} +cp /assets/hbase.properties ${HBASE_PROPERTIES_FILE} -sed -i "s/hbase.client.host=localhost/hbase.client.host=${HBASE_HOST}/g" /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/hbase.properties -sed -i "s/hbase.client.port=2181/hbase.client.port=${HBASE_PORT}/g" /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/hbase.properties +sed -i "s/cluster.enable=true/cluster.enable=${CLUSTER_ENABLE}/g" ${PINPOINT_WEB_PROPERTIES_FILE} +sed -i "s/cluster.zookeeper.address=localhost/cluster.zookeeper.address=${CLUSTER_ZOOKEEPER_ADDRESS}/g" ${PINPOINT_WEB_PROPERTIES_FILE} +if [ "$CLUSTER_WEB_TCP_PORT" != "" ]; then + sed -i "/cluster.web.tcp.port=/ s/=.*/=${CLUSTER_WEB_TCP_PORT}/" ${PINPOINT_WEB_PROPERTIES_FILE} +fi +if [ "$CLUSTER_CONNECT_ADDRESS" != "" ]; then + sed -i "/cluster.connect.address=/ s/=.*/=${CLUSTER_CONNECT_ADDRESS}/" ${PINPOINT_WEB_PROPERTIES_FILE} +fi + +sed -i "s/admin.password=admin/admin.password=${ADMIN_PASSWORD}/g" ${PINPOINT_WEB_PROPERTIES_FILE} + +sed -i "s/hbase.client.host=localhost/hbase.client.host=${HBASE_HOST}/g" ${HBASE_PROPERTIES_FILE} +sed -i "s/hbase.client.port=2181/hbase.client.port=${HBASE_PORT}/g" ${HBASE_PROPERTIES_FILE} + +if [ "$CONFIG_SENDUSAGE" != "" ]; then + sed -i "/config.sendUsage=/ s/=.*/=${CONFIG_SENDUSAGE}/" ${PINPOINT_WEB_PROPERTIES_FILE} +fi if [ "$DISABLE_DEBUG" == "true" ]; then - sed -i 's/level value="DEBUG"/level value="INFO"/' /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/log4j.xml + sed -i 's/level value="DEBUG"/level value="INFO"/' ${LOG4J_FILE} +fi + +if [ "$BATCH_ENABLE" == "true" ]; then + sed -i "/batch.enable=/ s/=.*/=${BATCH_ENABLE}/" ${BATCH_PROPERTIES_FILE} + + if [ "$BATCH_SERVER_IP" != "" ]; then + sed -i "/batch.server.ip=/ s/=.*/=${BATCH_SERVER_IP}/" ${BATCH_PROPERTIES_FILE} + fi + + sed -i 's/<\/beans>/<\/beans>/' ${APPLICATION_CONTEXT_WEB_FILE} + + if [ "$MAIL_HOST" != "" ]; then + sed -i "s/smtp.gmail.com/${MAIL_HOST}/" ${APPLICATION_CONTEXT_MAIL_FILE} + fi + if [ "$MAIL_PORT" != "" ]; then + sed -i "s/587/${MAIL_PORT}/" ${APPLICATION_CONTEXT_MAIL_FILE} + fi + if [ "$MAIL_USERNAME" != "" ]; then + sed -i "s/UserName/${MAIL_USERNAME}/" ${APPLICATION_CONTEXT_MAIL_FILE} + fi + if [ "$MAIL_PASSWORD" != "" ]; then + sed -i "s/PassWord/${MAIL_PASSWORD}/" ${APPLICATION_CONTEXT_MAIL_FILE} + fi + if [ "$MAIL_PROPERTIES_MAIL_TRANSPORT_PROTOCOL" != "" ]; then + PATTERN="mail.transport.protocol" + sed -i "/${PATTERN}/ s/<\!-- \| -->//g;/${PATTERN}/ s/>.*${MAIL_PROPERTIES_MAIL_TRANSPORT_PROTOCOL}//g;/${PATTERN}/ s/>.*${MAIL_PROPERTIES_MAIL_SMTP_PORT}//g;/${PATTERN}/ s/>.*${MAIL_PROPERTIES_MAIL_SMTP_AUTH}//g;/${PATTERN}/ s/>.*${MAIL_PROPERTIES_MAIL_SMTP_FROM}//g;/${PATTERN}/ s/>.*${MAIL_PROPERTIES_MAIL_STARTTLS_ENABLE}//g;/${PATTERN}/ s/>.*${MAIL_PROPERTIES_MAIL_STARTTLS_REQUIRED}//g;/${PATTERN}/ s/>.*${MAIL_PROPERTIES_MAIL_DEBUG}