简介

这里直接引用官方的介绍:

面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。

安装

官方推荐使用docker方式安装:

$ docker pull registry.aliyuncs.com/openspug/spug

$ docker run -d --restart=always --name=spug -p 80:80 registry.aliyuncs.com/openspug/spug

# 持久化存储启动命令:
# mydata指的是本地磁盘路径,也可以是其他目录,但需要保证映射的本地磁盘路径已经存在,/data是容器内代码和数据初始化存储的路径
$ docker run -d --restart=always --name=spug -p 80:80 -v /mydata/:/data registry.aliyuncs.com/openspug/spug

# 以下操作会创建一个用户名为 admin 密码为 spug.dev 的管理员账户,可自行替换管理员账户。
$ docker exec spug init_spug admin spug.dev

# 执行完毕后需要重启容器
$ docker restart spug

最后,在浏览器中输入 http://localhost:80 访问。

用户名: admin  
密码: spug.dev

主机管理

对于开发和维护服务的人员来说,这里要解决如何远程登录到目标服务器的问题。

spug相对jumpserver来说实现的比较简单,只要配置号登录账号就可以登录了,而且登录操作体验比较流畅。

发布管理

创建发布

创建发布流程:创建环境-> 创建应用-> 创建发布

创建发布前需要先添加应用,基于应用才能创建发布。这里的应用可以理解为一个独立运行的web服务。

一旦应用创建完成后,就可以创建发布了,发布依赖发布环境,例如:生产环境,开发环境等。

注意:每个应用在每个环境只能创建一个发布任务。

发布配置

应用发布 --> 应用管理 --> 新建发布 --> 自定义发布 --> 编辑自定义发布 --> 提交

MAVEN项目示例

本地动作1:拉取代码——构建——发布

repourl="http://gitea.51trust.com/server/ywx-parent.git"
branch="test"
buildcmd="mvn clean compile install -pl ywq-api/ywq-api-am -am -P test"

source_dir=ywq-api/ywq-api-am/target
app_name=am.jar
dest_ip=192.168.126.39
dest_dir=test/ywq/ywq-api-am/build-${SPUG_RELEASE}

EXIST=`curl -s http://${dest_ip}:8082/shared/${dest_dir};echo $?`

if [ "$SPUG_RELEASE" = "" ]; then
    echo '[ERROR] "SPUG_RELEASE"字段为版本号,不能为空!'
    exit -1
elif [ "$EXIST" = "0" ]; then
    echo "`date +%T` 该版本的部署包(${SPUG_RELEASE})已存在,跳过此步骤"
    exit 0
elif [ "$SPUG_DEPLOY_TYPE" = "2" ]; then
    echo "`date +%T` 回滚操作,跳过此步骤 ..."
    exit 0
fi

/bin/rm repo -fr
git clone -b $branch http://deploy:deploy2020%40Gitea@${repourl#*//} repo

cd repo
$buildcmd

wget http://$dest_ip:8082/shared//devops/upload_spug.sh -O upload.sh
sh upload.sh $source_dir $app_name $dest_ip $dest_dir

目标主机动作1:部署

source_ip=192.168.126.39
source_dir=test/ywq/ywq-api-am/build-${SPUG_RELEASE}
app_name=am.jar
app_type=maven
dest_dir=/opt/am

if [ "$SPUG_HOST_NAME" = "$source_ip" ]; then
    echo "`date +%T` 跳过部署步骤"
    exit 0
fi

wget http://$source_ip:8082/shared//devops/deploy_spug.sh -O deploy.sh
sh deploy.sh $source_ip $source_dir $app_name $app_type $dest_dir

NPM项目示例

本地动作1:拉取代码——构建——发布

目标主机动作1:部署

这里有一点需要注意一下,spug的发布是基于发布任务的,也就是没有发布任务就不能发布。如果在开发环境这样部署服务的话,效率太低了。希望作者可以增加一个可以基于发布任务直接执行的方式,这样对于开发环境就比较友好了。

以上发布配置支持以下几种方式的发布:

  • 构建+部署
  • 只构建,不部署
  • 只部署,不构建

构建+部署

发布版本未成功构建过,文件服务器上没有对应版本的部署包,同时选中目标服务器(文件服务器除外)。

只构建,不部署

发布版本未成功构建过,文件服务器上没有对应版本的部署包,同时只选中文件服务器。

只部署,不构建

发布版已成功构建,文件服务器上有对应版本的部署包,同时选中目标服务器(文件服务器除外)。

监控告警

告警配置

这里以企业微信为例,介绍一下告警配置。

配置流程:spug告警配置是基于联系组的,因此,首先添加告警联系人,然后将联系人添加到联系组,最后在监控任务中配置报警联系人组即可。

由于企业微信的告警是基于webhook机器人实现的,而机器人的消息在组内都可见,因此一个告警机器人产生的告警,组内的人都可见,因此在spug中只需要添加一个联系人即可。

  1. 添加报警联系人

企业微信的webhook机器人和其他IM工具类似,都是在在群组中添加。

1.1 创建群组,只有管理员才能添加机器人

1.2 添加机器人,复制webhook地址

1.3 把机器人的URL地址粘贴到“企业微信”的字段上

  1. 添加报警联系组

至此,告警配置完成。

添加监控项

spug内置了4种最常见的服务健康相关的监控项:

  • PING检测
  • 进程检测
  • 端口检测
  • 站点检测

此外,spug还支持自定义脚本,脚本执行退出状态码为 0 则判定为正常,其他为异常。

因此可以说spug提供的监控项还是非常实用的,都是服务维护者关心的指标。至于基础资源监控,还是让运维同学关注吧。

这里以端口检测为例,介绍一下监控的配置。

告警配置页面包括以下几方面内容:

  • 监控频率
  • 报警阀值
  • 报警联系人组
  • 报警方式
  • 通道沉默时间

这里分别解释一下:

监控频率:系统执行检测脚本的间隔时间,时间越短,报警越及时

报警阀值:发现异常几次才会报警

通道沉默:相同的告警信息,无论触发报警多少次,沉默期内只发送一次

一旦监控配置完成,就可以测试一下告警了

这里是监控项的列表

这里是告警历史列表

角色权限

SPUG的权限控制比较全面,包括三个维度:

  • 功能权限
  • 发布权限
  • 主机权限

功能权限就是按照左侧菜单进行管理的。

发布权限按照发布环境和应用的维度进行配置

主机权限就是单个主机进行配置。

基本可以满足任何权限配置的要求。

工作台

最后看一下工作台的展示页面:

总结

整体来看,spug提供的功能都是中小企业服务管理所需要的,就是作者自己说的那样:“麻雀虽小,五脏俱全”,如果能够进一步提供用户登录的双因子认证,以及操作日志审计功能就更好了。