From ff38330f3102fe30eba28ae69ea301f30320f2bd Mon Sep 17 00:00:00 2001 From: tomsun28 Date: Sun, 26 Dec 2021 15:40:30 +0800 Subject: [PATCH] =?UTF-8?q?[monitor]=E9=87=87=E9=9B=86=E5=99=A8=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=89=93=E5=8C=85=E8=84=9A=E6=9C=AC=EF=BC=8C=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E5=85=B3=E9=97=AD=E8=84=9A=E6=9C=AC=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assembly/collector/assembly.xml | 44 ++++++++++++ assembly/collector/bin/shutdown.sh | 18 +++++ assembly/collector/bin/startup.sh | 109 +++++++++++++++++++++++++++++ assembly/server/bin/shutdown.sh | 18 +++++ assembly/server/bin/startup.sh | 109 +++++++++++++++++++++++++++++ collector/server/pom.xml | 22 ++++++ 6 files changed, 320 insertions(+) create mode 100644 assembly/collector/assembly.xml create mode 100644 assembly/collector/bin/shutdown.sh create mode 100644 assembly/collector/bin/startup.sh 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 + + + + +