基于farseer-go的开源监控部署平台fops
1、监控部署平台介绍#
fops 是一款包含:Docker 集群管理、自动化部署、调度中心管理(FSchedule2.x)、日志采集、链路追踪、健康检查一体的小型轻量平台
基于 docker 环境进行部署和管理,通过简单的 button click 快速发布您的应用和监控应用的健康状态。
2、功能#
- 集群管理:实时检查集群所有节点的健康状态。
- 监控预警:满足预警条件后,将告警信息触达到目地的。(如钉钉、邮件等)
- 远程终端:提供简易的 linux web ssh。
- 应用部署:将 Git 仓库的代码、编译打包成 docker 镜像并发布到 DockerSwarm 集群(本地或远程集群)。
- 健康状态:实时检测应用的运行状态。
- 日志采集:实时查询 Docker 日志,以及通过 farseer-go 框架接入的应用,提供更精准的日志查询。
- 调度中心:提供 FSchedule2.0 的任务管理、监控、日志的 Dashboard。
- 链路追踪:通过 farseer-go 框架接入的链路追踪,提供数据查询。
- 慢查询:支持 db、Redis、http、es、mq 详细调用报告。
- 配置中心:提供应用的配置管理(应用可通过 FOPS 拉取配置信息)
- 访问统计:提供各个链路的性能统计
3、自动化部署#
3.1 在 fops 中心新建你的应用,并配置好 git 仓库#
3.2 配置工作流文件#
工作流文件默认在应用的根目录:.fops/workflows/build.yml
, 如:
name: build
fopsName: # 设置后,该工作流文件只对在fops中应用名称为指定名称的才显示,默认不填便可
jobs:
build:
runs-on: steden88/cicd:3.0 # 工作流运行的容器镜像
proxy: "192.168.1.123:7890" # 配置工作环境的代理
with: # 全局参数
a: "可用于steps内,如{{a}}"
env:
GO111MODULE: on # 配置构建容器环境变量
GOPROXY: https://goproxy.cn # 配置构建容器环境变量
steps:
- name: 开启Git代理
uses: gitProxy@v1
with:
proxy: "socks5://192.168.1.123:7890"
- name: 拉取应用Git
uses: checkout@v1 # 在fops配置了依赖时,将自动拉取所有依赖Git
with:
branch: main # 支持不同工作流,切换到不同分支
# - name: 拉取框架fs
# uses: checkout@v1
# with:
# gitHub: https://github.com/farseer-go/fs.git
# gitBranch: main
# gitUserName: test
# gitUserPwd: 123456
# gitPath: farseer-go/fs
- name: 安装go
uses: setup-go@v1
with:
goVersion: go1.22.5
goDownload:
- name: 编译
run:
- rm -rf ./go.work
- go work init ./
- go work edit -replace github.com/farseer-go/fs=../farseer-go/fs
- go mod download
- GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o ./fops -ldflags="-w -s" .
- name: 安装npm
uses: setup-npm@v1
- name: 编译前端
run:
- mkdir wwwroot
- cd ./wwwsrc
- npm install
- npm run build
- cp -r dist/* ../wwwroot/
- name: 打包镜像
uses: dockerBuild@v1
- name: 上传镜像
uses: dockerPush@v1
- name: 更新镜像
uses: dockerswarmUpdateVer@v1
3.3 jobs.build.runs-on = steden88/cicd:3.0-npm#
fops 在构建时会启动 jobs.build.runs-on 指定的镜像,后续构建步骤将在该环境中执行。
目前 fops 官方提供:steden88/cicd:3.0-npm 镜像。该镜像基于 alpine:latest,在其中安装了 git、docker 等基础工具
3.4 jobs.build.steps#
为定义的构建步骤,根据该顺序逐个执行。
- jobs.build.steps.name:自定义的步骤名称
- jobs.build.steps.uses:使用的 action 名称,规则为:名称 @版本。也可自定义实现 action。
- jobs.build.steps.with:定义参数,参数由 action 要求定义
- jobs.build.steps.run:运行 shell 脚本
3.5 Action#
fops 目前为大家提供了 8 个常用的 action 程序:点这里查看
3.5.1 gitProxy: git 代理#
配置通过代理来拉取 git 仓库时,因为我们经常 github 无法访问。则可用这个 action。 需要你自己提供 proxy
3.5.2 checkout: 拉取 git#
如果你在 fops 中定义了依赖仓库,则会同时把这些依赖仓库一同拉取下来。
同时,如果你需要拉取未配置在 fops 的 git。可通过 with 参数来指定仓库地址,如:
- name: 拉取框架fs
uses: checkout@v1
with:
gitHub: https://github.com/farseer-go/fs.git
gitBranch: main
gitUserName: test
gitUserPwd: 123456
gitPath: farseer-go/fs
如果你需要拉取多个,则定义多次该 action 即可。
gitPath 用于你希望存储到本地相对路径下的哪个目录。用于后续打包时使用。
3.5.4 setup-go:安装 go#
- name: 安装go
uses: setup-go@v1
with:
goVersion: go1.22.5 #指定版本
goDownload: # 自定义下载链接,可不填
3.5.5 run:运行 shell#
通过 run 配置,可自定义要执行的 shell 脚本,
- name: 编译
run:
- rm -rf ./go.work
- go mod download
- GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o ./fops -ldflags="-w -s" .
3.5.6 setup-npm:安装 npm#
也可搭配 run,在执行完 setup-npm 后,运行 run 定义的 shell 脚本
- name: 安装npm
uses: setup-npm@v1
run: # 安装cnpm
- npm install -g cnpm --registry=https://registry.npmmirror.com/
3.5.7 dockerBuild:打包镜像#
将根据集群中定义的 docker 配置,对编译完的程序进行打包。
默认情况下,Dockerfile 文件定义在应用的仓库根目录中 如需更改路径,请到应用中心修改
- name: 打包镜像
uses: dockerBuild@v1
3.5.8 dockerPush:上传镜像#
上传到集群定义的镜像 hub,将在镜像打包成功后上传。
可以配置 docker 官网 hub 或私有 hub,配置请到集群中修改
- name: 上传镜像
uses: dockerPush@v1
3.5.9 dockerswarmUpdateVer:更新镜像#
将镜像部署到当前集群
- name: 更新镜像
uses: dockerswarmUpdateVer@v1
如果需要更新到远程集群,可以使用 remoteClusterId 参数:
- name: 更新镜像
uses: dockerswarmUpdateVer@v1
with:
remoteClusterId: 1
fops 是如何知道远程集群的地址,这需要在远程集群中安装好 fops。同时在本地的集群配置中设置好远程 fops 地址。
4 容器角色#
角色主要是为了应用在集群中运行时,部署的位置限制。
manager
:只运行到 master 节点worker
:只运行到非 master 节点global
:所有节点都会运行一个实例。不限制
:任意节点都可以运行
推荐文章: