YashanDB Cloud Manager(YCM)
崖山数据库云管平台(YCM)是一款针对YashanDB的云管理平台,提供了可视化部署、管理和运维YashanDB,以及监控预警等功能。默认使用SQLite作为后端数据库
功能
- 支持数据库全生命周期管理(安装部署、数据库巡检、数据库日常管理、监控告警等)
- 备份恢复
- 数据库诊断优化
架构

- Cod_domor和Cod_agent是服务端和客户端的核心进程。
- 服务端通过RPC或者SSH方式对客户端进行管理。
- Monit进程监视本机各个模块运行状态。
- YashanDB expor ter远程收集数据库信息并返回给Prometheus。
- node_exporter采集主机监控指标并返回给Prometheus。
- Promtail收集日志信息并返回给Loki。
组件
YCM服务端主要组件
-
cod-domor
- 是整个YCM的后台服务,前端通过对接其所提供的API接口完成交互。
- 除了cod-domor自己的API外,cod-domor会代理prometheus、loki、docker-manager等服务提供的相应
的API,前端不和这些服务直接交互,而是访问cod-domor的代理。
-
monit
- 负责监控以及自动拉起服务端的进程。
-
prometheus
- 采集汇总所有监控指标
- 提供监控查询API
- 提供指标告警能力
-
yashandb_exporter
- 通过SQL远程采集YashanDB相关指标
-
loki
- 接收汇总日志推送
- 提供日志查询API
- 提供日志告警能力
-
Promtail
- 采集服务端的相关日志
- 推送相关日志到loki
YCM客户端组件
- cod-agent
- 是YCM的客户端进程,远程调度的基础。
- cod-domor可以通过RPC远程连接cod-agent,执行指定任务
- monit
- 负责监控以及自动拉起客户端的进程
- node_exporter
- 负责采集主机相关监控指标(开源自带)
- 负责采集监控相关监控指标(获取Monit的指标,暴露到指标采集接口)
- 负责主机网络相关监控指标(读取网络配置,执行Ping操作获取连通性指标,获取主机IP是否存在指标,并将结果暴露到采集接口)
- Promtail
- 采集客户端的相关日志
- 推送相关日志到loki
安装部署
软件下载地址
https://download.yashandb.com/download
环境说明
所需资源
| 管理数据库实例数量 | 最低服务器配置规格 |
|---|---|
| 低于10实例 | 双核,2G内存,50G硬盘 |
| 10-100实例 | 双核,4G内存,100G硬盘 |
| 100实例以上 | 双核,8G内存,500G硬盘 |
网络端口
- YCM 服务器需9060至9064端口可用
- 数据库需9070和9071端口可用
系统环境配置
安装操作系统依赖包
# 安装 libnsl 包
yum install libnsl
#检查确认
ldconfig -p | grep libnsl
创建软件目录
mkdir -p /ups/app/yashandb/ycm/{server,agent}
#mkdir -p /ups/data/yashandb/ycmdata
chown -R yashan:yashan /ups/app/yashandb/ycm
修改rc.local文件可执行权限
chmod u+x /etc/rc.local
否则,部署时抛出以下异常信息ERROR execer/exec.go:31 exec /usr/bin/test wait failed, exit status 1,而终止部署ycm

执行安装
1. root用户登陆
2.解压软件
cd /ups/soft
tar -xf yashandb-cloud-manager-23.2.1.103-linux-x86_64.tar.gz --no-same-owner --owner=yashan --group=yashan
cd ./ycm
3.运行安装工具ycm-init
# 运行 安装工具ycm-init
]# ./ycm-init --help
usage: ycm-init [<flags>] <command> [<args> ...]
init ycm or ycm-agent tools
Flags:
--help Show context-sensitive help (also try --help-long and --help-man).
-F, --force force deploy ycm, when residual data existed
Commands:
help [<command>...]
Show help.
web [<flags>]
run as web server
deploy [<flags>]
deploy server
agent deploy --ycp-addr=YCP-ADDR [<flags>]
agent deploy
部署ycm server
用法
# 部署ycm
]# ./ycm-init deploy --help
usage: ycm-init deploy [<flags>]
deploy server
Flags:
--help Show context-sensitive help (also try --help-long and --help-man).
-F, --force force deploy ycm, when residual data existed
--conf="etc/deploy.yml" ycm deploy config path
配置文件(deploy.yml)
server:
# 可以配置以下名称
ycm_name: 崖山监控运维平台 # 产品名称
ycm_name_en: YashanDB Cloud Manager # 产品英文名称
product_short_name: 管理平台 # 产品简称,不推荐修改
product_short_name_en: Management platform # 产品英文简称,不推荐修改
# ycm server 安装路径
install_path: /ups/app/yashandb/ycm/server
# 运行ycm server 相关服务的用户
system_user: yashan
# ycm server监听端口
ycm_port: 9060
# ycm 监控端监听端口
prometheus_port: 9061
# 日志分析http服务端口
loki_http_port: 9062
# 日志分析grpc服务端口
loki_grpc_port: 9063
# 数据库信息采集端口
yasdb_exporter_port: 9064
# ycm 监控采集频率,范围1~43200
prometheus_collect_interval: 10
# ycm 监控数据保存天数,范围1~360
prometheus_data_expired: 180
# ycm server是否开启monit
monit_enable: true
# ycm server与主机通信使用tls
grpc_tls_enable: true
# ycm server使用https监听
http_tls_enable: false
# ycm的弹性ip,vpc间网络不通时需要配置该值
manage_ip: ""
# ycm后端数据库信息
dbconfig:
driver: "sqlite3" # 后端数据库类型,可填参数:sqlite3或yashandb,默认是sqlite3
url: "" # driver为yashandb时,该参数必填。单IP:ip:port,HA多IP:ip:port,ip:port,ip:port 或者 primary:ip:port,ip:port,ip:port。支持使用远端YashanDB作为后端数据库,即IP地址可以不是本机
libPath: "" # driver为yashandb时,默认为{YCM_INSTALL_PATH}/ycm/tool/yashandb-client/lib
# 以下参数为添加新主机时被应用的默认参数,可在添加时重新修改
client:
# ycm agent 默认安装路径
install_path: /ups/app/yashandb/ycm/agent
# ycm agent 默认运行用户,添加新主机时应用,可修改
system_user: yashan
# ycm agent 默认运行用户组,添加新主机时应用,可修改
system_group: yashan
# ycm agent 默认端口
agent_port: 9070
# ycm 采集器 默认端口
export_port: 9071
user:
# 配置超级管理员信息
superadmin:
# 用户和密码为admin,以下为加密后的密文,建议在部署成功后修改密码
password: "17521182513677377011312139512002239872235871971452391332822116097549121243198103"
nickname: superman
email:
phone:
# 生成登录token时的加密串,用于混淆加密。
token_key: "cod-base-yasom-auth-token-key1"
# token非活跃过期时间,单位为分钟,范围1~1440
token_expired: 30
# 密码有效期,单位为天。到期后强制修改密码,范围1~365
password_expired: 60
# 密码输入错误后可重试的次数,范围5~30
retry_times: 5
# 输入错误被锁定后等待时间,单位为分钟,范围3~10080
lock_expired: 3
log:
# 日志打印
console: true
# 日志级别含有:DEBUG, INFO, WARN, ERROR
level: "INFO"
# 日志保存时间,单位:天,小于等于0表示不过期
rotationTime: 7
# 每个日志文件最大大小,单位:M,最小值为10
rotationSize: 10
# 日志备份最多保存数量,小于等于0表示不限个数
maxBackupNum: 30
执行部署
默认使用sqlite作为后端数据库
sudo ./ycm-init deploy --conf etc/deploy.yml
]# ./ycm-init deploy --conf etc/deploy.yml 2024-07-19 09:33:03 INFO deploy/manage.go:36 conf manager starting... 2024-07-19 09:33:03 INFO execer/exec.go:29 exec: test -x /etc/rc.local starting 2024-07-19 09:33:03 INFO execer/exec.go:29 exec: bash -c cat /etc/rc.local | grep '^#!\/' starting 2024-07-19 09:33:03 INFO filectl/filectl.go:210 get dir owner uid: 54334 success 2024-07-19 09:33:03 INFO execer/exec.go:29 exec: bash -c id -u yashan starting 2024-07-19 09:33:03 INFO filectl/filectl.go:220 get agent uid: 54334 success 2024-07-19 09:33:03 INFO deploy/deploy.go:114 check residual data success, progress:17 2024-07-19 09:33:03 INFO deploy/deploy.go:114 mkdir installpath success, progress:20 2024-07-19 09:33:03 INFO execer/exec.go:29 exec: bash /ups/app/yashandb/install/ycm/scripts/install.sh ycm yashan /ups/app/yashandb/ycm/server/ycm starting 2024-07-19 09:33:08 INFO deploy/deploy.go:127 unzip packages success, progress:35 2024-07-19 09:33:08 INFO deploy/deploy.go:114 generate ycm.yaml success, progress:45 2024-07-19 09:33:08 INFO deploy/deploy.go:114 generate config.ini success, progress:47 2024-07-19 09:33:08 INFO deploy/deploy.go:114 generate prometheus.yml success, progress:48 2024-07-19 09:33:08 INFO deploy/deploy.go:114 generate loki-local-config.yaml success, progress:49 2024-07-19 09:33:08 INFO deploy/deploy.go:114 generate promtail-local-config.yaml success, progress:51 2024-07-19 09:33:08 INFO deploy/deploy.go:114 generate yasdbpasswd.ini success, progress:53 2024-07-19 09:33:09 INFO model/auto_migrate.go:232 auto migrate all of 82 tables success 2024-07-19 09:33:09 WARN alarm/add_default.go:332 query alarm notify strategy is incorrect, just add default, allns: [], err: <nil> 2024-07-19 09:33:09 INFO execer/exec.go:29 exec: cp -f /ups/app/yashandb/ycm/server/ycm/loki/rules/fake/loki-rules.yaml /ups/app/yashandb/ycm/server/ycm/loki/loki-rules.yaml.bak starting 2024-07-19 09:33:09 INFO execer/exec.go:29 exec: cp -f /ups/app/yashandb/ycm/server/ycm/prometheus-2.28.1/rules.yml /ups/app/yashandb/ycm/server/ycm/prometheus-2.28.1/rules.yml.bak starting 2024-07-19 09:33:09 INFO deploy/deploy.go:114 set conf success, progress:64 2024-07-19 09:33:09 INFO deploy/deploy.go:114 set conf success, progress:65 2024-07-19 09:33:09 INFO deploy/deploy.go:114 init db success, progress:70 2024-07-19 09:33:09 INFO deploy/deploy.go:114 mkdir cert path success, progress:75 2024-07-19 09:33:09 INFO deploy/deploy.go:114 generate self signed cert key success, progress:76 2024-07-19 09:33:09 INFO execer/exec.go:29 exec: chown -R yashan:yashan /ups/app/yashandb/ycm/server/ycm starting 2024-07-19 09:33:09 INFO deploy/deploy.go:127 chown path success, progress:70 2024-07-19 09:33:09 INFO execer/exec.go:29 exec: chmod 0755 /ups/app/yashandb/ycm/server starting 2024-07-19 09:33:09 INFO deploy/deploy.go:127 chmod path success, progress:75 2024-07-19 09:33:09 INFO execer/exec.go:29 exec: bash /ups/app/yashandb/ycm/server/ycm/scripts/ycm.sh start starting 2024-07-19 09:33:10 INFO deploy/deploy.go:127 start server success, progress:80 2024-07-19 09:33:10 INFO execer/exec.go:29 exec: bash /ups/app/yashandb/ycm/server/ycm/scripts/yashandb_exporter.sh start starting 2024-07-19 09:33:11 INFO deploy/deploy.go:127 start yashandb_exporter success, progress:85 2024-07-19 09:33:11 INFO execer/exec.go:29 exec: bash /ups/app/yashandb/ycm/server/ycm/scripts/prometheus.sh start starting 2024-07-19 09:33:12 INFO deploy/deploy.go:127 start monitor success, progress:88 2024-07-19 09:33:12 INFO execer/exec.go:29 exec: bash /ups/app/yashandb/ycm/server/ycm/scripts/loki.sh start starting 2024-07-19 09:33:13 INFO deploy/deploy.go:127 start loki success, progress:90 2024-07-19 09:33:13 INFO execer/exec.go:29 exec: bash /ups/app/yashandb/ycm/server/ycm/scripts/promtail.sh start starting 2024-07-19 09:33:15 INFO deploy/deploy.go:127 start promtail success, progress:91 2024-07-19 09:33:15 INFO execer/exec.go:29 exec: bash /ups/app/yashandb/ycm/server/ycm/monit/monitctl reload starting 2024-07-19 09:33:15 INFO deploy/deploy.go:127 reload monit success, progress:95 2024-07-19 09:33:15 INFO deploy/deploy.go:312 success, progress:100
使用单机部署模式yashandb作为后端数据库
修改部署配置文件./etc/deploy.yml,设置后端数据库为yashandb相关配置
dbconfig:
driver: "yashandb" # 可填参数:sqlite3,yashandb。默认是sqlite3
url: "192.168.10.180:1688" # driver为yashandb时,该参数必填。单IP:user/password@ip:port,HA多ip:user/password@ip:port,ip:port,ip:port
libPath: "/ups/app/yashandb/yashandb/23.2.1.100/lib" # driver为yashandb时,默认为{YCM_INSTALL_PATH}/YCM/tool/yashandb-client/lib
autoMigrate: true
maxOpenConns: 1
部署ycm
# 后端数据库为yashandb
sudo ./ycm-init deploy --conf ./etc/deploy.yml --username sys --password sys
部署ycm agent
用法
./ycm-init agent deploy --help
配置文件(deploy-agent.yml)
# agent 服务配置
agent_server:
# 安装用户名
system_user: yashan
# 安装用户组
system_group: yashan
# 安装路径
install_path: /ups/app/yashandb/ycm/agent
# ycm-agent服务端口
agent_port: 9070
# node_exporter服务端口
node_exporter_port: 9071
# 指定当前主机IP,可以不填,不填则自动获取
host_ip: ""
# 目标YCM配置
target_YCM:
# YCM交互密钥,不用修改
YCM_secret: TH1TkOFuUVrjlMBVeB28bsO9JLiFafY5
# YCM是否开启tls,默认不开启
http_tls_enable: false
执行部署
# ./ycm-init agent deploy --conf etc/deploy-agent.yml -a <YCM_ip>:9060 -u <dba_user> -p <dba_pwd> -c yashandb
./ycm-init agent deploy --conf etc/deploy-agent.yml -a 192.168.10.181:9060 -u sys -p sys -c yashandb
- 可选参数 --conf,根据配置文件初始化YCM-AGENT服务,默认为
etc/deploy-agent.yml- 必传参数 -a,–YCM-addr,目标YCM地址,格式为 “{IP地址}:{端口号}”
- 可选参数 -u,–dba-user,当前主机yashandb的dba权限用户名
- 可选参数 -p,–dba-pwd,当前主机yashandb的dba权限用户密码
- 可选参数 -c,–cluster,指定yashandb名称,当前主机有多个yashandb时可指定某一个
- 可选参数 --skip-create-user,跳过创建yasom用户,当指定该参数时可以不传–dba-user以及–dba-pwd
后期配置
开机自启动服务
chmod +x /etr/rc.local
# su {安装用户} -c '{安装路径}/ycm/monit/bin/monit -c {安装路径}/ycm/monit/data/monitrc'
su yashan -c '/ups/app/yashandb/ycm/server/ycm/monit/bin/monit -c /ups/app/yashandb/ycm/server/ycm/monit/data/monitrc'
服务管理
检查服务状态
su - yashan
# 检查YCM的进程 /ups/app/yashandb/ycm/server/ycm/monit/monitctl run
/ups/app/yashandb/ycm/server/ycm/monit/monitctl
# 检查ycm-agent的进程
/ups/app/yashandb/ycm/agent/ycm/monit/monitctl run

启动ycm
su - yashan
# 在服务端执行以下命令, ${ycm安装路径}默认为/opt/ycm/ycm
/ups/app/yashandb/ycm/server/ycm/monit/monitctl start
/ups/app/yashandb/ycm/server/ycm/monit/monitctl run start -g ycm
/ups/app/yashandb/ycm/server/ycm/monit/monitctl run start -g prometheus
/ups/app/yashandb/ycm/server/ycm/monit/monitctl run start -g loki
/ups/app/yashandb/ycm/server/ycm/monit/monitctl run start -g promtail
/ups/app/yashandb/ycm/server/ycm/monit/monitctl run start -g yashandb_exporter
# 在客户端执行以下命令,${ycm管理的主机安装路径}默认为/opt/ycm/ycm-agent
/ups/app/yashandb/ycm/agent/ycm/monit/monitctl start
/ups/app/yashandb/ycm/agent/ycm/monit/monitctl run start -g ycm-agent
/ups/app/yashandb/ycm/agent/ycm/monit/monitctl run start -g node_exporter
/ups/app/yashandb/ycm/agent/ycm/monit/monitctl run start -g promtail
停止ycm
su - yashan
# 在服务端执行以下命令, ${ycm安装路径}默认为/opt/ycm/ycm
/ups/app/yashandb/ycm/server/ycm/monit/monitctl run stop -g ycm
/ups/app/yashandb/ycm/server/ycm/monit/monitctl run stop -g prometheus
/ups/app/yashandb/ycm/server/ycm/monit/monitctl run stop -g loki
/ups/app/yashandb/ycm/server/ycm/monit/monitctl run stop -g promtail
/ups/app/yashandb/ycm/server/ycm/monit/monitctl run stop -g yashandb_exporter
/ups/app/yashandb/ycm/server/ycm/monit/monitctl stop
# 在客户端执行以下命令,${ycm管理的主机安装路径}默认为/opt/ycm/ycm-agent
/ups/app/yashandb/ycm/agent/ycm/monit/monitctl run stop -g ycm-agent
/ups/app/yashandb/ycm/agent/ycm/monit/monitctl run stop -g node_exporter
/ups/app/yashandb/ycm/agent/ycm/monit/monitctl run stop -g promtail
/ups/app/yashandb/ycm/agent/ycm/monit/monitctl stop
登陆web UI界面
浏览器打开YCM的Web页面(默认9060端口),如:192.168.10.181:9060。初始管理员账户密码:admin/admin
如果开启了http_tls_enable为true,则需要访问https://IP:9060

首次登陆后,需修改账户密码(kube#1356)

修改账户密码后,就可以看到如下页面

纳管主机
输入ip,账户,密码后扫描



这样,就完成。
纳管YashanDB数据库实例

卸载清理YCM环境
移除管理的数据库
# 使用工具yasadm的yasadm yasdb remove命令将YCM管理的数据库进行解除托管
yasadm yasdb remove
移除主机
以root登陆并执行卸载命令集
su - root
cd /ups/app/yashandb/ycm/server/ycm/scripts
# 根据提示,确认是否卸载,确需卸载输入yes
sh ./clean.sh
rm -rf cd /ups/app/yashandb/ycm/server/ycm
附录
YCA官方报名链接:https://www.yashandb.com/YCA_courses
参考文档
https://doc.yashandb.com/ycm/23.2/zh/%E5%AE%89%E8%A3%85%E5%92%8C%E5%8D%87%E7%BA%A7/%E5%AE%89%E8%A3%85%E4%B8%8E%E5%8D%B8%E8%BD%BD.html
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




