Jpom Jpom
🔖首页
  • 一键安装教程
  • Docker 容器安装教程
  • 离线安装教程
  • v2.9.X迁移到v2.10.X指南
  • v2.8.X迁移到v2.9.X指南
  • 数据库迁移到 mysql
  • 实践案例目录
  • 名词解释
  • 什么是 DSL
  • 权限说明
💡DSL说明
  • 加入社区讨论
  • 如何贡献
  • 贡献者们
🤝用户
  • 下载中心
  • Gitee (opens new window)
  • Github (opens new window)
🔖首页
  • 一键安装教程
  • Docker 容器安装教程
  • 离线安装教程
  • v2.9.X迁移到v2.10.X指南
  • v2.8.X迁移到v2.9.X指南
  • 数据库迁移到 mysql
  • 实践案例目录
  • 名词解释
  • 什么是 DSL
  • 权限说明
💡DSL说明
  • 加入社区讨论
  • 如何贡献
  • 贡献者们
🤝用户
  • 下载中心
  • Gitee (opens new window)
  • Github (opens new window)
❤️成为赞助商
  • 解决方案

    • 如何使用 Jpom 的在线构建为 Jpom 发版
    • 万能的 DSL 项目模板(Java)
    • 基于 Jpom 搭建应用部署系统
    • 一键安装实践
    • Docker 容器安装实践
    • 离线安装实践
    • 自定义第三方通知
  • 在线构建

    • 本地构建 + SSH 发布 java 项目
    • 本地构建 + Jpom Server 使用 SCP 发布项目
    • 本地构建 + 项目发布 node 项目
    • 本地构建 + SSH 发布 node 项目
    • 本地构建 + 自定义管理 python 项目
    • 容器构建 + 项目发布 java 项目
    • Gitee 提交代码后自动执行构建
    • 使用 gradle 本地构建打包项目并发布到节点
    • GitLab 提交代码后自动执行构建
    • 通过私人令牌导入仓库
  • docker

    • 管理 docker
    • 在线构建 docker 镜像
    • 在线构建 docker 镜像并推送至远程仓库
    • docker 安装 redis 流程
  • 节点管理

    • 管理编译安装的 nginx
  • 项目管理

    • 自定义管理 java 项目
    • DSL项目接口探活
      • 前言
      • 需要准备的环境
        • 安装插件端推荐命令
        • 安装服务端推荐命令
      • 配置 DSL 脚本
        • 脚本内容
        • 关于脚本的几个说明
      • 配置项目
        • 配置项目白名单
        • 创建项目
      • 配置构建并发布到当前项目
      • 查看项目状态
    • 在 Jpom 中如何使用 DSL 项目来管理 TOMCAT
    • 在 Jpom 中如何使用 DSL 项目来管理 elasticsearch
  • 项目监控

    • 监控项目 + 邮件报警通知
    • DSL 项目接口探活监控报警
  • 在线脚本

    • 使用节点脚本定时备份 docker 中的 mysql 数据库
  • SSH管理

    • 在线管理 SSH 终端以及上传文件(SFTP)和执行命令历史
  • 日常管理

    • 如何开启 h2-console web 访问功能
  • 实践案例
  • 项目管理
bwcx_jzy
2022-10-21
目录

DSL项目接口探活

# 前言

本文主要介绍如果使用 DSL 模式的项目来实现接口探活管理项目运行状态

本文中服务端和插件端是安装在同一个服务器中的,实际操作时根据业务情况来安装

文中使用到的依赖环境版本仅供参考,实际使用中请根据业务情况来安装对应的版本

注意:本文采用一键安装同时基于 2.9.13 版本讲解,系统为 centos

# 需要准备的环境

  1. Jpom 服务端
    1. 安装 jpom 需要 java 环境
    2. 构建需要 maven 环境
  2. Jpom 插件端
    1. 安装 jpom 需要 java 环境
  3. 一个代码仓库(案例中使用 java 项目)

# 安装插件端推荐命令

推荐命令会自动检查环境中是否存在 jdk 如果不存在将自动安装 jdk

一般情况建议自行安装,如果不需要自动安装删除命令最后的 jdk 即可

# 安装插件端和 jdk 环境
yum install -y wget && \
wget -O install.sh https://jpom.top/docs/install.sh && \
bash install.sh Agent jdk
1
2
3
4

# 安装服务端推荐命令

推荐命令会自动检查环境中是否存在 jdk 和 maven 如果不存在将自动安装 jdk 和 maven

一般情况建议自行安装,如果不需要自动安装删除命令最后的 jdk+mvn 即可

# 安装服务端和 jdk、maven 环境
yum install -y wget && \
wget -O install.sh https://jpom.top/docs/install.sh && \
bash install.sh Server jdk+mvn
1
2
3
4

😋

案例就默认您已经安装好上述环境(jpom 插件端、jpom 服务端、maven 插件)

😋

案例就默认您已经初始好服务端并且配置了节点

😋

如果对安装流程和初始化流程不是了解有疑问的可以参考其他实践案例和安装说明文档

# 配置 DSL 脚本

这里的脚本是为了能控制项目的启动、停止、获取项目状态

img.png

img_1.png

# 脚本内容

#!/bin/bash
Tag="Application_${PROJECT_ID}"
MainClass="org.springframework.boot.loader.JarLauncher"
Lib="${PROJECT_PATH}"
Log="${PROJECT_PATH}/run.log"
JVM="-server -Xms128m -Xmx128m -XX:PermSize=32M -XX:MaxNewSize=64m -XX:MaxPermSize=64m -Djava.awt.headless=true -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"
echo $Tag
RETVAL="0"

# See how we were called.
function start() {
    echo  $Log 
    if [ ! -f $Log ]; then
        touch $Log
    fi
    nohup java $JVM -Dappliction=$Tag -Djava.ext.dirs=$Lib":${JAVA_HOME}/jre/lib/ext" $MainClass > $Log 2>&1 &
	sleep 3
    head -n 10 $Log
}


function stop() {
    pid=$(ps -ef | grep -v 'grep' | egrep $Tag| awk '{printf $2 " "}')
    if [ "$pid" != "" ]; then      
        echo -n "boot ( pid $pid) is running" 
        echo 
        echo -n $"Shutting down boot: "
        pid=$(ps -ef | grep -v 'grep' | egrep $Tag| awk '{printf $2 " "}')
        if [ "$pid" != "" ]; then
            echo "kill boot process"
            kill -9 "$pid"
        fi
        else 
             echo "boot is stopped" 
        fi

    status
}

function get_json_value()
{
  local json=$1
  local key=$2
  local value=$(echo "${json}" | awk -F "[{,:}]" '{for(i=1;i<=NF;i++){if($i~"'${key}'"){print $(i+1)}}}' | sed 's/\"//g') 
  echo ${value}
}

function status()
{
   #  这里的端口或者url 路径需要跟进你的项目端口和获取项目状态的接口来定
    result_msg=$(curl -s -X GET --header 'Accept: application/json' --connect-timeout 1 -m 1 'http://127.0.0.1:8084')
    echo "running:`get_json_value "${result_msg}" "pid"`"
}

# See how we were called.
RETVAL="0"
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status
        ;;
    *)
      usage
      ;;
esac

exit $RETVAL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

# 关于脚本的几个说明

可以查阅 DSL 脚本的基础介绍了解基础使用规则

  1. 案例中是管理 Java 项目,实际中可以跟进自己的需求调整脚本内容来管理其他项目
  2. 注意在使用过 status 方法中修改为当前项目的端口号,url 地址。
  3. status 请求项目的 url 地址中建议返回当前项目的进程号(pid)
  4. curl 请求超时时间不要过长,建议控制在 1 秒。因为获取项目状态是串行执行,如果单个项目 status 执行耗时过大会影响查看节点项目状态相关功能

# 配置项目

# 配置项目白名单

用于控制项目存储的目录,更多说明

img_3.png

# 创建项目

img_2.png

img_4.png

img_5.png

DSL 配置内容:

# scriptId 可以是项目路径下脚本文件名或者系统中的脚本模版ID
description: 测试
run:
  start:
#    scriptId: project.sh
    scriptId: ddda4421102c4a1287718fd939cd31d7
    scriptArgs: start
  status:
#    scriptId: project.sh
    scriptId: ddda4421102c4a1287718fd939cd31d7
    scriptArgs: status
  stop:
#    scriptId: project.sh
    scriptId: ddda4421102c4a1287718fd939cd31d7
    scriptArgs: stop
file:
# 备份文件保留个数
#  backupCount: 5
# 限制备份指定文件后缀(支持正则)
#  backupSuffix: [ '.jar','.html','^.+\.(?i)(txt)$' ]
config:
# 是否开启日志备份功能
#  autoBackToFile: true

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

注意:scriptId 需要修改您创建对应的脚本的ID,在编辑弹窗中可以查看到对应脚本的ID

img_6.png

# 配置构建并发布到当前项目

😋

案例就默认您已经会使用构建和项目发布了(不会的可以参考其他实践案例中的说明来操作)

img_7.png

img_8.png

# 查看项目状态

img_9.png

img_10.png

这样就实现使用接口来探活监控项目状态了

帮助我们改善此文档 (opens new window)
上次更新: 2022/12/02, 13:53:34
自定义管理 java 项目
在 Jpom 中如何使用 DSL 项目来管理 TOMCAT

← 自定义管理 java 项目 在 Jpom 中如何使用 DSL 项目来管理 TOMCAT→

最近更新
01
2023年
03-31
02
2022年
03-31
03
2021年
03-31
更多文章>
Theme by Vdoing | Copyright © 2017-2023 MIT License  京ICP备17044819号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×