diff --git a/assembly/collector/assembly.xml b/assembly/collector/assembly.xml
new file mode 100644
index 0000000..5978e38
--- /dev/null
+++ b/assembly/collector/assembly.xml
@@ -0,0 +1,44 @@
+
+
+ 1.0
+
+
+ tar.gz
+ zip
+
+
+
+
+
+
+ ../../assembly/collector/bin
+
+ true
+ bin
+
+
+
+
+ src/main/resources
+
+ application.yml
+ logback-spring.xml
+
+
+ true
+ ${file.separator}config
+
+
+
+
+ target
+ /
+
+ *executable.jar
+
+
+
+
diff --git a/assembly/collector/bin/shutdown.sh b/assembly/collector/bin/shutdown.sh
new file mode 100644
index 0000000..28a5e2e
--- /dev/null
+++ b/assembly/collector/bin/shutdown.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# 项目名称
+APPLICATION="${project.artifactId}"
+
+# 项目启动jar包名称
+APPLICATION_JAR="${project.build.finalName}.jar"
+
+# 通过项目名称查找到PI,然后kill -9 pid
+PID=$(ps -ef | grep "${APPLICATION_JAR}" | grep -v grep | awk '{ print $2 }')
+if [[ -z "$PID" ]]
+then
+ echo ${APPLICATION} is already stopped
+else
+ echo kill ${PID}
+ kill -9 ${PID}
+ echo ${APPLICATION} stopped successfully
+fi
\ No newline at end of file
diff --git a/assembly/collector/bin/startup.sh b/assembly/collector/bin/startup.sh
new file mode 100644
index 0000000..f81450d
--- /dev/null
+++ b/assembly/collector/bin/startup.sh
@@ -0,0 +1,109 @@
+#!/bin/bash
+
+# 项目名称
+SERVER_NAME="${project.artifactId}"
+
+# jar名称
+JAR_NAME="${project.build.finalName}-executable.jar"
+
+# 进入bin目录
+cd `dirname $0`
+# bin目录绝对路径
+BIN_DIR=`pwd`
+# 返回到上一级项目根目录路径
+cd ..
+# 打印项目根目录绝对路径
+# `pwd` 执行系统命令并获得结果
+DEPLOY_DIR=`pwd`
+
+# 外部配置文件绝对目录,如果是目录需要/结尾,也可以直接指定文件
+# 如果指定的是目录,spring则会读取目录中的所有配置文件
+CONF_DIR=$DEPLOY_DIR/config
+# SERVER_PORT=`sed '/server.port/!d;s/.*=//' config/application.properties | tr -d '\r'`
+# 获取应用的端口号
+SERVER_PORT=`sed -nr '/port: [0-9]+/ s/.*port: +([0-9]+).*/\1/p' config/application.yml`
+
+PIDS=`ps -f | grep java | grep "$CONF_DIR" |awk '{print $2}'`
+if [ "$1" = "status" ]; then
+ if [ -n "$PIDS" ]; then
+ echo "The $SERVER_NAME is running...!"
+ echo "PID: $PIDS"
+ exit 0
+ else
+ echo "The $SERVER_NAME is stopped"
+ exit 0
+ fi
+fi
+
+if [ -n "$PIDS" ]; then
+ echo "ERROR: The $SERVER_NAME already started!"
+ echo "PID: $PIDS"
+ exit 1
+fi
+
+if [ -n "$SERVER_PORT" ]; then
+ SERVER_PORT_COUNT=`netstat -tln | grep $SERVER_PORT | wc -l`
+ if [ $SERVER_PORT_COUNT -gt 0 ]; then
+ echo "ERROR: The $SERVER_NAME port $SERVER_PORT already used!"
+ exit 1
+ fi
+fi
+
+# 项目日志输出绝对路径
+LOGS_DIR=$DEPLOY_DIR/logs
+# 如果logs文件夹不存在,则创建文件夹
+if [ ! -d $LOGS_DIR ]; then
+ mkdir $LOGS_DIR
+fi
+STDOUT_FILE=$LOGS_DIR/catalina.log
+
+# JVM Configuration
+JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true "
+JAVA_DEBUG_OPTS=""
+if [ "$1" = "debug" ]; then
+ JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
+fi
+
+JAVA_JMX_OPTS=""
+if [ "$1" = "jmx" ]; then
+ JAVA_JMX_OPTS=" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "
+fi
+
+JAVA_MEM_OPTS=""
+BITS=`java -version 2>&1 | grep -i 64-bit`
+if [ -n "$BITS" ]; then
+ JAVA_MEM_OPTS=" -server -Xmx512m -Xms512m -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "
+else
+ JAVA_MEM_OPTS=" -server -Xms512m -Xmx512m -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC "
+fi
+
+# 加载外部log4j2文件的配置
+LOG_IMPL_FILE=log4j2.xml
+LOGGING_CONFIG=""
+if [ -f "$CONF_DIR/$LOG_IMPL_FILE" ]
+then
+ LOGGING_CONFIG="-Dlogging.config=$CONF_DIR/$LOG_IMPL_FILE"
+fi
+CONFIG_FILES=" -Dlogging.path=$LOGS_DIR $LOGGING_CONFIG -Dspring.config.location=$CONF_DIR/ "
+echo -e "Starting the $SERVER_NAME ..."
+nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS $CONFIG_FILES -jar $DEPLOY_DIR/lib/$JAR_NAME > $STDOUT_FILE 2>&1 &
+
+COUNT=0
+while [ $COUNT -lt 1 ]; do
+ echo -e ".\c"
+ sleep 1
+ if [ -n "$SERVER_PORT" ]; then
+ COUNT=`netstat -an | grep $SERVER_PORT | wc -l`
+ else
+ COUNT=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}' | wc -l`
+ fi
+ if [ $COUNT -gt 0 ]; then
+ break
+ fi
+done
+
+
+echo "OK!"
+PIDS=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}'`
+echo "PID: $PIDS"
+echo "STDOUT: $STDOUT_FILE"
\ No newline at end of file
diff --git a/assembly/server/bin/shutdown.sh b/assembly/server/bin/shutdown.sh
index e69de29..28a5e2e 100644
--- a/assembly/server/bin/shutdown.sh
+++ b/assembly/server/bin/shutdown.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# 项目名称
+APPLICATION="${project.artifactId}"
+
+# 项目启动jar包名称
+APPLICATION_JAR="${project.build.finalName}.jar"
+
+# 通过项目名称查找到PI,然后kill -9 pid
+PID=$(ps -ef | grep "${APPLICATION_JAR}" | grep -v grep | awk '{ print $2 }')
+if [[ -z "$PID" ]]
+then
+ echo ${APPLICATION} is already stopped
+else
+ echo kill ${PID}
+ kill -9 ${PID}
+ echo ${APPLICATION} stopped successfully
+fi
\ No newline at end of file
diff --git a/assembly/server/bin/startup.sh b/assembly/server/bin/startup.sh
index e69de29..bd8e780 100644
--- a/assembly/server/bin/startup.sh
+++ b/assembly/server/bin/startup.sh
@@ -0,0 +1,109 @@
+#!/bin/bash
+
+# 项目名称
+SERVER_NAME="${project.artifactId}"
+
+# jar名称
+JAR_NAME="${project.build.finalName}.jar"
+
+# 进入bin目录
+cd `dirname $0`
+# bin目录绝对路径
+BIN_DIR=`pwd`
+# 返回到上一级项目根目录路径
+cd ..
+# 打印项目根目录绝对路径
+# `pwd` 执行系统命令并获得结果
+DEPLOY_DIR=`pwd`
+
+# 外部配置文件绝对目录,如果是目录需要/结尾,也可以直接指定文件
+# 如果指定的是目录,spring则会读取目录中的所有配置文件
+CONF_DIR=$DEPLOY_DIR/config
+# SERVER_PORT=`sed '/server.port/!d;s/.*=//' config/application.properties | tr -d '\r'`
+# 获取应用的端口号
+SERVER_PORT=`sed -nr '/port: [0-9]+/ s/.*port: +([0-9]+).*/\1/p' config/application.yml`
+
+PIDS=`ps -f | grep java | grep "$CONF_DIR" |awk '{print $2}'`
+if [ "$1" = "status" ]; then
+ if [ -n "$PIDS" ]; then
+ echo "The $SERVER_NAME is running...!"
+ echo "PID: $PIDS"
+ exit 0
+ else
+ echo "The $SERVER_NAME is stopped"
+ exit 0
+ fi
+fi
+
+if [ -n "$PIDS" ]; then
+ echo "ERROR: The $SERVER_NAME already started!"
+ echo "PID: $PIDS"
+ exit 1
+fi
+
+if [ -n "$SERVER_PORT" ]; then
+ SERVER_PORT_COUNT=`netstat -tln | grep $SERVER_PORT | wc -l`
+ if [ $SERVER_PORT_COUNT -gt 0 ]; then
+ echo "ERROR: The $SERVER_NAME port $SERVER_PORT already used!"
+ exit 1
+ fi
+fi
+
+# 项目日志输出绝对路径
+LOGS_DIR=$DEPLOY_DIR/logs
+# 如果logs文件夹不存在,则创建文件夹
+if [ ! -d $LOGS_DIR ]; then
+ mkdir $LOGS_DIR
+fi
+STDOUT_FILE=$LOGS_DIR/catalina.log
+
+# JVM Configuration
+JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true "
+JAVA_DEBUG_OPTS=""
+if [ "$1" = "debug" ]; then
+ JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
+fi
+
+JAVA_JMX_OPTS=""
+if [ "$1" = "jmx" ]; then
+ JAVA_JMX_OPTS=" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "
+fi
+
+JAVA_MEM_OPTS=""
+BITS=`java -version 2>&1 | grep -i 64-bit`
+if [ -n "$BITS" ]; then
+ JAVA_MEM_OPTS=" -server -Xmx512m -Xms512m -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "
+else
+ JAVA_MEM_OPTS=" -server -Xms512m -Xmx512m -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC "
+fi
+
+# 加载外部log4j2文件的配置
+LOG_IMPL_FILE=log4j2.xml
+LOGGING_CONFIG=""
+if [ -f "$CONF_DIR/$LOG_IMPL_FILE" ]
+then
+ LOGGING_CONFIG="-Dlogging.config=$CONF_DIR/$LOG_IMPL_FILE"
+fi
+CONFIG_FILES=" -Dlogging.path=$LOGS_DIR $LOGGING_CONFIG -Dspring.config.location=$CONF_DIR/ "
+echo -e "Starting the $SERVER_NAME ..."
+nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS $CONFIG_FILES -jar $DEPLOY_DIR/lib/$JAR_NAME > $STDOUT_FILE 2>&1 &
+
+COUNT=0
+while [ $COUNT -lt 1 ]; do
+ echo -e ".\c"
+ sleep 1
+ if [ -n "$SERVER_PORT" ]; then
+ COUNT=`netstat -an | grep $SERVER_PORT | wc -l`
+ else
+ COUNT=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}' | wc -l`
+ fi
+ if [ $COUNT -gt 0 ]; then
+ break
+ fi
+done
+
+
+echo "OK!"
+PIDS=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}'`
+echo "PID: $PIDS"
+echo "STDOUT: $STDOUT_FILE"
\ No newline at end of file
diff --git a/collector/server/pom.xml b/collector/server/pom.xml
index 8c4c42a..f22246b 100644
--- a/collector/server/pom.xml
+++ b/collector/server/pom.xml
@@ -94,6 +94,7 @@
+ hertz-beat-collector
com.alipay.sofa
@@ -118,6 +119,27 @@
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+ 3.3.0
+
+
+ make-zip
+
+ package
+
+
+ single
+
+
+
+ ../assembly/collector/assembly.xml
+
+
+
+
+