🐝
蜂巢OPENAPI
  • 蜂巢TNest
  • 产品介绍
    • 产品概述
    • 产品功能
    • 产品优势
    • 应用场景
  • 快速入门
    • 入门概述
    • 部署
    • 快速接入
    • 应用开发及编译
    • 应用部署
  • API
    • 接口规范
    • 终端数据查询
      • 系统基本信息上报
      • 系统运行数据上报
        • 采样频率、上报频率设置
        • CPU温度定时上报
        • CPU使用率定时上报
        • 内存使用率定时上报
        • 磁盘使用率定时上报
        • 4G模组信息定时上报
        • 有线网卡流量信息定时上报
      • 容器数据上报
      • 微应用数据上报
      • 进程数据上报
      • 服务数据上报
      • 网络端口数据上报
      • 终端在线状态
      • 链路跟踪
    • 终端告警
      • 告警规则下发
      • CPU使用率告警
      • 内存使用率告警
      • 磁盘使用率告警
      • CPU温度告警
      • 证书过期告警
      • 证书修改告警
      • 插入网线告警
      • 网线拔出告警
      • 网络链路时延告警
      • 网络链路中断告警
      • 网络链路丢包率告警
    • 运行诊断
      • 网络诊断
      • 工况诊断
      • 系统诊断
      • 进程诊断
    • 容器管理
      • 下载容器
      • 安装容器
      • 启动容器
      • 停止容器
      • 替换容器
      • 卸载容器
      • 克隆容器
    • 应用管理
      • 下载微应用
      • 安装微应用
      • 启动微应用
      • 停止微应用
      • 卸载微应用
      • 使能微应用
      • 去使能微应用
      • 微应用升级
    • 设备管理
      • 物理接口管理
        • 网口管理
      • 终端校时
      • 终端重启
      • 命令行
      • 网络访问黑名单
      • 网络访问白名单
      • 网络接口封堵
    • 连接管理
      • 网络访问黑名单
      • 网络访问白名单
    • 系统更新
      • 下载固件
      • 固件升级
      • 下载补丁包
      • 安装补丁包
      • 下载配置文件
      • 部署配置文件
    • 日志管理
      • 日志提取
      • 日志监控
        • 监控规则下发
        • 监控日志上报
        • 系统操作日志上报(审计日志)
  • 用户指南
    • 蜂巢部署
    • 安全接入
    • 可观测性
      • 系统基本信息上报
      • 运行数据监控
      • 终端告警
      • 运行诊断
    • 设备管理
      • 网络接口封堵
      • 终端校时
      • 终端重启
      • 命令行
    • 日志管理
      • 日志提取
      • 监控日志上报
      • 系统操作日志审计
    • 连接管理
      • 访问黑名单
      • 访问白名单
    • 容器管理
      • 容器下载
      • 容器安装/卸载
      • 容器启动/停止
      • 容器替换
      • 容器克隆
    • 应用管理
      • 应用下载
      • 应用安装/卸载
      • 应用使能/去使能
      • 应用启动/停止
      • 应用升级
    • 系统更新
      • 固件升级
      • 补丁包安装
      • 配置更新
  • 常见问题
    • 蜂巢部署相关问题
    • 设备注册相关问题
    • API调用相关问题
    • 应用编译相关问题
由 GitBook 提供支持
在本页
  • 1. 微应用管理规范
  • 1.1. 微应用安装
  • 1.2. 微应用启动
  • 1.3. 微应用停止
  • 1.4. 微应用卸载
  • 1.5. 微应用升级
  • 1.6. 微应用安装包格式规定
  • 1.7 脚本说明及示例:
  • 1.8 补充说明:
  • 2. 微应用管理错误码
  • 公共错误码
  • 业务错误码
  1. API

应用管理

1. 微应用管理规范

1.1. 微应用安装

需要指定安装路径,这个安装路径可能包括配置文件放哪里,可执行程序放哪里,也可能还有些文件夹需要提前创建,也有些需要提前做的工作,不是简单的几个字段可以描述清楚的。所以我们需要微应用的开发者提供安装脚本: install.sh

1.2. 微应用启动

一般程序启动可能需要带些参数,比如指定配置文件路径,或者其他,加入是个jar包,那可能就需要用java虚拟机启动了。也是个比较复杂的操作,所以,我们需要微应用的开发者提供启动脚本,start.sh

1.3. 微应用停止

在一个微应用需要停止的时候,我们直接将微应用的进程kill 掉是非常不文明的做法。因为他可能有一些收尾工作需要做。所以由微应用的开发者提供一个停止脚本stop.sh是非常合理的

1.4. 微应用卸载

由于不知道微应用在安装的时候到底在什么地方放了些什么文件,那么我们还是需要开发者提供一个 uninstall.sh的脚本,便于将微应用清理干净。

1.5. 微应用升级

如果只是stop -> uninstall -> install -> start ,那么就没什么问题了。如果不是的话,最好能给个升级脚本。

另外,因为我们想要监控微应用是否正常工作的话,由微应用的开发者提供一个 check_state.sh的脚本来判断运行状态是最好的解决方案,否则,我们只能去判断相关的进程是否存活了。

最后,能再给个获取当前微应用版本的脚本get_version.sh那就更完美了。

嗯,把这些脚本,以及微应用的可执行文件,以及相关的配置文件打包压缩,微应用的管理才能够跑的更加丝滑。

为了保证我们能够成功解压,那么请参考接下来的打包说明:

1.6. 微应用安装包格式规定

自定义安装包,自定义安装包只支持tar 打包,不支持zip以及其他打包工具,打包应用的命令统一为:

tar -czvf DataCenter.tar.gz DataCenter/

统一使用gzip的compress方式,暂不支持xz的compress

应用目录树结构示例:

DataCenter
├── bin
│   ├── DataCenter
│   ├── egw_config.json
│   └── egw_db-20210707.db
├── daemon.conf
├── get_version.sh
├── lib
│   ├── PATCHpaho-mqtt3a.so
│   ├── PATCHpaho-mqtt3a.so.1
│   ├── PATCHpaho-mqtt3a.so.1.3.6
│   ├── PATCHpaho-mqtt3c.so
│   ├── PATCHpaho-mqtt3c.so.1
│   └── PATCHpaho-mqtt3c.so.1.3.6
├── logrotate.conf
├── rsyslog.conf
├── install.sh
├── start.sh
├── stop.sh
├── check_state.sh
└── uninstall.sh

1.7 脚本说明及示例:

start.sh,stop.sh,install.sh, uninstall.sh, check_state.sh为必不可少脚本,由应用开发人员自己封装。

脚本权限需更改为rwx(可读可写可执行),若无特殊限定在应用打包前可使用chmod 777 start.sh将 start.sh的权限设定为-rwxrwxrwx。

现以openwrt ssh服务的dropbear进行相关脚本示例:

start.sh 示例

#!/bin/bash
APPNAME=dropbear
APP_PID=ps -ef |grep $APPNAME |grep -v "grep" |awk '{printf "%s ",$2}'
if [ "$APP_PID" ]; then
  echo "$APNAME already started..."
else
  /usr/sbin/dropbear -F -P /var/run/dropbear.1.pid -g -p 35520 -K 300 -T 3
fi

stop.sh 示例

Bash
#!/bin/bash
APPNAME=dropbear
APP_PID=ps -ef |grep $APPNAME |grep -v "grep" |awk '{printf "%s ",$2}'
if [ "$APP_PID" ]; then
kill -9 $APP_PID
fi

check_state.sh 示例

Bash
#!/bin/bash
APPNAME=dropbear
APP_PID=ps -ef |grep $APPNAME |grep -v "grep" |awk '{printf "%s ",$2}'
if [ "$APP_PID" ]; then
echo "running"
else
echo "stopped"
fi

1.8 补充说明:

上述示例只为一个example, 如何获取本应用运行的pid由应用开发人员自己来定。

如果使用kill -9来停止应用时,请确保APPNAME唯一性,不会kill其他应用进程,如APPNAME 不可以单纯为python,这样会杀掉所有python相关进程。应用开发人员若用kill来停掉进程时,请确保grep $filter 中$filter为该应用唯一的过滤条件。

check_state.sh用来检测app是否正常运行,由开发人员提供本应用运行状态检测。若为运行状态,将"running"输出到标准输出(stdout)。如果为未运行状态,将"stopped"输出到标准输出。网关远程运维管理程序将获取标准输出,以判断该应用运行状态。

2. 微应用管理错误码

公共错误码

错误码
错误描述
解决方案

400

请求消息错误,例如消息格式错误等

404

不支持该操作

429

请求太多

500

服务端内部错误,由应用定义

业务错误码

错误码
错误描述
解决方案

50x – 51x

为App相关指令执行失败的错误码

501

为App文件下载失败状态码

下载链接错误或者网络故障导致文件未下载完成

502

为App文件校验失败状态码

文件下载完成,但执行校验时不匹配,导致校验不通过

503

为App文件解压缩失败,文件未安装规定进行压缩发布

504

为App 安装失败状态码

505

为App 启动失败状态码

506

为App 停止失败状态码

507

为App 重启失败状态码

508

为获取App运行状态失败状态码

一般发生在app应用提供的状态检测脚本不正确

509

为App卸载失败状态码

上一页克隆容器下一页下载微应用

最后更新于1年前