diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d8fe4fa --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.project diff --git a/docker-compose.yml b/docker-compose.yml index b725d29..b36d926 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,69 +1,102 @@ -pinpoint-hbase: - container_name: pinpoint-hbase - hostname: hbase - image: wahyd4/pinpoint-hbase:1.6.2 - restart: always - expose: - - "2181" - - "16010" - ports: - - "2181:2181" - - "16010:16010" +version: '2' +services: + pinpoint-hbase: + container_name: pinpoint-hbase + image: wahyd4/pinpoint-hbase:1.6.2 + restart: always + expose: + - "2181" + - "16010" + ports: + - "2181:2181" + - "16010:16010" + environment: + TZ: "America/Recife" + volumes: + - hbase_data:/home/pinpoint/hbase + - hbase_zookeeper_data:/home/pinpoint/zookeeper -pinpoint-collector: - container_name: pinpoint-collector - hostname: collector - image: wahyd4/pinpoint-collector:1.6.2 - restart: always - expose: - - "9994" - - "9995" - - "9996" - ports: - - "9994:9994" - - "9995:9995/tcp" - - "9996:9996/tcp" - - "9995:9995/udp" - - "9996:9996/udp" - environment: - HBASE_HOST: hbase - HBASE_PORT: 2181 - COLLECTOR_TCP_PORT: 9994 - COLLECTOR_UDP_STAT_LISTEN_PORT: 9995 - COLLECTOR_UDP_SPAN_LISTEN_PORT: 9996 - CLUSTER_ENABLE: 'false' - DISABLE_DEBUG: 'true' - links: - - pinpoint-hbase:hbase + pinpoint-mysql: + container_name: pinpoint-mysql + restart: always + image: marcosamm/pinpoint-mysql:1.6.2 + ports: + - "13306:3306" + environment: + MYSQL_ROOT_PASSWORD: root123 + MYSQL_USER: admin + MYSQL_PASSWORD: admin + MYSQL_DATABASE: pinpoint + TZ: "America/Recife" + volumes: + - mysql_data:/var/lib/mysql + + pinpoint-collector: + depends_on: + - pinpoint-hbase + container_name: pinpoint-collector + image: wahyd4/pinpoint-collector:1.6.2 + restart: always + expose: + - "9994" + - "9995" + - "9996" + ports: + - "9994:9994" + - "9995:9995/tcp" + - "9996:9996/tcp" + - "9995:9995/udp" + - "9996:9996/udp" + environment: + HBASE_HOST: pinpoint-hbase + HBASE_PORT: 2181 + COLLECTOR_TCP_PORT: 9994 + COLLECTOR_UDP_STAT_LISTEN_PORT: 9995 + COLLECTOR_UDP_SPAN_LISTEN_PORT: 9996 + CLUSTER_ENABLE: 'true' + CLUSTER_ZOOKEEPER_ADDRESS: pinpoint-hbase + DISABLE_DEBUG: 'true' + TZ: "America/Recife" + + pinpoint-web: + depends_on: + - pinpoint-hbase + - pinpoint-mysql + container_name: pinpoint-web + image: wahyd4/pinpoint-web:1.6.2 + restart: always + expose: + - "8080" + ports: + - "28080:8080" + environment: + HBASE_HOST: pinpoint-hbase + HBASE_PORT: 2181 + CLUSTER_ENABLE: 'true' + CLUSTER_ZOOKEEPER_ADDRESS: pinpoint-hbase + 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 + TZ: "America/Recife" -pinpoint-web: - container_name: pinpoint-web - hostname: web - image: wahyd4/pinpoint-web:1.6.2 - restart: always - expose: - - "8080" - ports: - - "28080:8080" - environment: - HBASE_HOST: hbase - HBASE_PORT: 2181 - CLUSTER_ENABLE: 'false' - ADMIN_PASSWORD: admin123 - DISABLE_DEBUG: 'true' - links: - - pinpoint-hbase:hbase +volumes: + mysql_data: + hbase_data: + hbase_zookeeper_data: -# only example -#pinpoint-agent: -# image: wahyd4/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_TCP_PORT: 9994 -# COLLECTOR_UDP_STAT_LISTEN_PORT: 9995 -# COLLECTOR_UDP_SPAN_LISTEN_PORT: 9996 -# DISABLE_DEBUG: 'true' +# only example +# pinpoint-agent: +# 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_TCP_PORT: 9994 +# COLLECTOR_UDP_STAT_LISTEN_PORT: 9995 +# COLLECTOR_UDP_SPAN_LISTEN_PORT: 9996 +# DISABLE_DEBUG: 'true' diff --git a/pinpoint-agent/configure-agent.sh b/pinpoint-agent/configure-agent.sh index 711f882..b9a60a0 100644 --- a/pinpoint-agent/configure-agent.sh +++ b/pinpoint-agent/configure-agent.sh @@ -18,5 +18,7 @@ sed -i "s/profiler.collector.stat.port=9995/profiler.collector.stat.port=${COLLE 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/lib/log4j.xml + sed -i 's/level value="DEBUG"/level value="INFO"/' /assets/pinpoint-agent/lib/log4j.xml fi + +exec tail -f /dev/null \ No newline at end of file diff --git a/pinpoint-collector/Dockerfile b/pinpoint-collector/Dockerfile index 3449a3b..af34629 100644 --- a/pinpoint-collector/Dockerfile +++ b/pinpoint-collector/Dockerfile @@ -24,4 +24,4 @@ RUN chmod a+x /usr/local/bin/start-collector.sh \ EXPOSE 9994 9995 9996 -ENTRYPOINT ["/usr/local/bin/start-collector.sh"] +ENTRYPOINT ["/usr/local/bin/start-collector.sh"] \ No newline at end of file diff --git a/pinpoint-collector/start-collector.sh b/pinpoint-collector/start-collector.sh index bad7ba1..05d40b2 100644 --- a/pinpoint-collector/start-collector.sh +++ b/pinpoint-collector/start-collector.sh @@ -3,6 +3,7 @@ set -e set -x CLUSTER_ENABLE=${CLUSTER_ENABLE:-false} +CLUSTER_ZOOKEEPER_ADDRESS=${CLUSTER_ZOOKEEPER_ADDRESS:-localhost} COLLECTOR_TCP_PORT=${COLLECTOR_TCP_PORT:-9994} COLLECTOR_UDP_STAT_LISTEN_PORT=${COLLECTOR_UDP_STAT_LISTEN_PORT:-9995} @@ -17,6 +18,7 @@ cp /assets/pinpoint-collector.properties /usr/local/tomcat/webapps/ROOT/WEB-INF/ cp /assets/hbase.properties /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/hbase.properties 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 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-hbase/Dockerfile b/pinpoint-hbase/Dockerfile index 9759421..51cdb58 100644 --- a/pinpoint-hbase/Dockerfile +++ b/pinpoint-hbase/Dockerfile @@ -38,4 +38,4 @@ EXPOSE 60020 # HBase Regionserver web UI EXPOSE 16030 -ENTRYPOINT /opt/hbase/hbase-$HBASE_VERSION/bin/hbase master start +ENTRYPOINT /opt/hbase/hbase-$HBASE_VERSION/bin/hbase master start \ No newline at end of file diff --git a/pinpoint-mysql/CreateTableStatement-mysql.sql b/pinpoint-mysql/CreateTableStatement-mysql.sql new file mode 100644 index 0000000..a3bc6e5 --- /dev/null +++ b/pinpoint-mysql/CreateTableStatement-mysql.sql @@ -0,0 +1,56 @@ +CREATE TABLE `user_group` ( + `number` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `id` VARCHAR(30) NOT NULL, + PRIMARY KEY (`number`) +); +ALTER TABLE user_group ADD UNIQUE KEY id_idx (id); + +CREATE TABLE `user_group_member` ( + `number` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `user_group_id` VARCHAR(30) NOT NULL, + `member_id` VARCHAR(30) NOT NULL, + PRIMARY KEY (`number`) +); +ALTER TABLE user_group_member ADD UNIQUE KEY user_group_id_member_id_idx (`user_group_id`,`member_id`); + +CREATE TABLE `puser` ( + `number` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `user_id` VARCHAR(30) NOT NULL, + `name` VARCHAR(150) NOT NULL, + `department` VARCHAR(150) NOT NULL, + `phonenumber` VARCHAR(100), + `email` VARCHAR(100), + PRIMARY KEY (`number`) +); +ALTER TABLE puser ADD UNIQUE KEY user_id_idx (`user_id`); + +CREATE TABLE `alarm_rule` ( + `rule_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `application_id` VARCHAR(30) NOT NULL, + `service_type` VARCHAR(30) NOT NULL, + `checker_name` VARCHAR(50) NOT NULL, + `threshold` INT(10) DEFAULT NULL, + `user_group_id` VARCHAR(30) NOT NULL, + `sms_send` CHAR(1) DEFAULT NULL, + `email_send` CHAR(1) DEFAULT NULL, + `notes` VARCHAR(100) DEFAULT NULL, + PRIMARY KEY (`rule_id`) +); +ALTER TABLE alarm_rule ADD UNIQUE KEY application_id_checker_name_user_group_id_idx (application_id, user_group_id, checker_name); + +CREATE TABLE `alarm_history` ( + `history_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `application_id` VARCHAR(30) NOT NULL, + `checker_name` VARCHAR(50) NOT NULL, + `detected` CHAR(1) DEFAULT NULL, + `sequence_count` INT(10), + `timing_count` INT(10), + PRIMARY KEY (`history_id`) +); +ALTER TABLE alarm_history ADD UNIQUE KEY application_id_checker_name_idx (application_id, checker_name); + +CREATE TABLE `agent_statistics` ( + `agent_count` INT(10) UNSIGNED NOT NULL, + `date_val`DATETIME NOT NULL, + PRIMARY KEY (`date_val`) +); diff --git a/pinpoint-mysql/Dockerfile b/pinpoint-mysql/Dockerfile new file mode 100644 index 0000000..2f3f134 --- /dev/null +++ b/pinpoint-mysql/Dockerfile @@ -0,0 +1,4 @@ +FROM mysql:5.7 + +ADD CreateTableStatement-mysql.sql /docker-entrypoint-initdb.d +ADD SpringBatchJobReositorySchema-mysql.sql /docker-entrypoint-initdb.d \ No newline at end of file diff --git a/pinpoint-mysql/SpringBatchJobReositorySchema-mysql.sql b/pinpoint-mysql/SpringBatchJobReositorySchema-mysql.sql new file mode 100644 index 0000000..d6e61ba --- /dev/null +++ b/pinpoint-mysql/SpringBatchJobReositorySchema-mysql.sql @@ -0,0 +1,98 @@ +CREATE TABLE BATCH_JOB_INSTANCE ( + JOB_INSTANCE_ID BIGINT NOT NULL PRIMARY KEY , + VERSION BIGINT , + JOB_NAME VARCHAR(100) NOT NULL, + JOB_KEY VARCHAR(32) NOT NULL, + constraint JOB_INST_UN unique (JOB_NAME, JOB_KEY) +) ENGINE=InnoDB; + +CREATE TABLE BATCH_JOB_EXECUTION ( + JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY , + VERSION BIGINT , + JOB_INSTANCE_ID BIGINT NOT NULL, + CREATE_TIME DATETIME NOT NULL, + START_TIME DATETIME DEFAULT NULL , + END_TIME DATETIME DEFAULT NULL , + STATUS VARCHAR(10) , + EXIT_CODE VARCHAR(100) , + EXIT_MESSAGE VARCHAR(2500) , + LAST_UPDATED DATETIME, + constraint JOB_INST_EXEC_FK foreign key (JOB_INSTANCE_ID) + references BATCH_JOB_INSTANCE(JOB_INSTANCE_ID) +) ENGINE=InnoDB; + +CREATE TABLE BATCH_JOB_EXECUTION_PARAMS ( + JOB_EXECUTION_ID BIGINT NOT NULL , + TYPE_CD VARCHAR(6) NOT NULL , + KEY_NAME VARCHAR(100) NOT NULL , + STRING_VAL VARCHAR(250) , + DATE_VAL DATETIME DEFAULT NULL , + LONG_VAL BIGINT , + DOUBLE_VAL DOUBLE PRECISION , + IDENTIFYING CHAR(1) NOT NULL , + constraint JOB_EXEC_PARAMS_FK foreign key (JOB_EXECUTION_ID) + references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) +) ENGINE=InnoDB; + +CREATE TABLE BATCH_STEP_EXECUTION ( + STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY , + VERSION BIGINT NOT NULL, + STEP_NAME VARCHAR(100) NOT NULL, + JOB_EXECUTION_ID BIGINT NOT NULL, + START_TIME DATETIME NOT NULL , + END_TIME DATETIME DEFAULT NULL , + STATUS VARCHAR(10) , + COMMIT_COUNT BIGINT , + READ_COUNT BIGINT , + FILTER_COUNT BIGINT , + WRITE_COUNT BIGINT , + READ_SKIP_COUNT BIGINT , + WRITE_SKIP_COUNT BIGINT , + PROCESS_SKIP_COUNT BIGINT , + ROLLBACK_COUNT BIGINT , + EXIT_CODE VARCHAR(100) , + EXIT_MESSAGE VARCHAR(2500) , + LAST_UPDATED DATETIME, + constraint JOB_EXEC_STEP_FK foreign key (JOB_EXECUTION_ID) + references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) +) ENGINE=InnoDB; + +CREATE TABLE BATCH_STEP_EXECUTION_CONTEXT ( + STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY, + SHORT_CONTEXT VARCHAR(2500) NOT NULL, + SERIALIZED_CONTEXT TEXT , + constraint STEP_EXEC_CTX_FK foreign key (STEP_EXECUTION_ID) + references BATCH_STEP_EXECUTION(STEP_EXECUTION_ID) +) ENGINE=InnoDB; + +CREATE TABLE BATCH_JOB_EXECUTION_CONTEXT ( + JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY, + SHORT_CONTEXT VARCHAR(2500) NOT NULL, + SERIALIZED_CONTEXT TEXT , + constraint JOB_EXEC_CTX_FK foreign key (JOB_EXECUTION_ID) + references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID) +) ENGINE=InnoDB; + +CREATE TABLE BATCH_STEP_EXECUTION_SEQ ( + ID BIGINT NOT NULL, + UNIQUE_KEY CHAR(1) NOT NULL, + constraint UNIQUE_KEY_UN unique (UNIQUE_KEY) +) ENGINE=MYISAM; + +INSERT INTO BATCH_STEP_EXECUTION_SEQ values(0, '0'); + +CREATE TABLE BATCH_JOB_EXECUTION_SEQ ( + ID BIGINT NOT NULL, + UNIQUE_KEY CHAR(1) NOT NULL, + constraint UNIQUE_KEY_UN unique (UNIQUE_KEY) +) ENGINE=MYISAM; + +INSERT INTO BATCH_JOB_EXECUTION_SEQ values(0, '0'); + +CREATE TABLE BATCH_JOB_SEQ ( + ID BIGINT NOT NULL, + UNIQUE_KEY CHAR(1) NOT NULL, + constraint UNIQUE_KEY_UN unique (UNIQUE_KEY) +) ENGINE=MYISAM; + +INSERT INTO BATCH_JOB_SEQ values(0, '0'); diff --git a/pinpoint-web/Dockerfile b/pinpoint-web/Dockerfile index abbe54e..7a7e8e8 100644 --- a/pinpoint-web/Dockerfile +++ b/pinpoint-web/Dockerfile @@ -20,5 +20,4 @@ RUN chmod a+x /usr/local/bin/start-web.sh \ EXPOSE 8080 -ENTRYPOINT ["/usr/local/bin/start-web.sh"] - +ENTRYPOINT ["/usr/local/bin/start-web.sh"] \ No newline at end of file diff --git a/pinpoint-web/start-web.sh b/pinpoint-web/start-web.sh index 25198b8..4aedf1f 100644 --- a/pinpoint-web/start-web.sh +++ b/pinpoint-web/start-web.sh @@ -3,7 +3,7 @@ set -e set -x CLUSTER_ENABLE=${CLUSTER_ENABLE:-false} - +CLUSTER_ZOOKEEPER_ADDRESS=${CLUSTER_ZOOKEEPER_ADDRESS:-localhost} ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin} HBASE_HOST=${HBASE_HOST:-localhost} @@ -11,10 +11,23 @@ HBASE_PORT=${HBASE_PORT:-2181} DISABLE_DEBUG=${DISABLE_DEBUG:-true} +JDBC_DRIVER=${JDBC_DRIVER:-com.mysql.jdbc.Driver} +JDBC_URL=${JDBC_URL:-jdbc:mysql://localhost:13306/pinpoint?characterEncoding=UTF-8} +JDBC_USERNAME=${JDBC_USERNAME:-admin} +JDBC_PASSWORD=${JDBC_PASSWORD:-admin} + +echo -e " +jdbc.driverClassName=${JDBC_DRIVER} +jdbc.url=${JDBC_URL} +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 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 sed -i "s/admin.password=admin/admin.password=${ADMIN_PASSWORD}/g" /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/pinpoint-web.properties