StarRocks企业版License过期时间获取工具

【背景】关于在使用StarRocks企业版,由于license过期时间没有对应的提醒机制,导致发生一次生产事故,用户使用manager登陆不上,而历史SQL语句是保留在manager的,从而引发生产业务临时时间,虽然新的license在未来24小时内已经到位,于是目前先做一块介于license获取过期时间的监控工具。
【业务影响】 生产
【StarRocks版本】例如:2.2.12
【集群规模】例如:3fe + 19be(fe与be独立)

  • 开发思路
    通过首次登陆拿到response Cookies,再次根据时间戳提交旧Cookies以拿到manager页面信息

  • 语言
    Go

  • 开源代码与封装程序
    https://github.com/chengkenlee/StarRocks_License

  • 配置文件
    支持多个集群

yaml配置文件

starrocks:
  #集群名称: [manager登录地址,登录账号,登录密码]
  cluster1: [http://ip:port:19321,user,password]
  cluster2: [http://ip:port:19321,user,password]
  cluster3: [http://ip:port:19321,user,password]
  cluster4: [http://ip:port:19321,user,password]
  • 支持使用crontab模式挂在后台,把注释放开重新封装

go func() {
crontab := cron.New()
// 添加定时任务, * * * * * 是 crontab,表示每分钟执行一次
_, err := crontab.AddFunc(util.Config.GetString(“starrocks.license.crontab”), license)
if err != nil {
util.Logger.Error(err.Error())
return
}
// 启动定时器
crontab.Start()
// 定时任务是另起协程执行的,这里使用 select 简答阻塞.实际开发中需要
// 根据实际情况进行控制
select {}
}()

  • 运行结果
根据配置文件信息,获取license过期时间
2023-08-21T23:52:30.129+0800	info	log format is success.
2023-08-21T23:52:30.129+0800	info	license 检测
2023-08-21T23:52:30.372+0800	info	{"code":20000,"data":{"roles":["Node_priv","Admin_priv","","(false)"]}}
2023-08-21T23:52:30.401+0800	info	{"code":20000,"data":{"roles":["NODE","ADMIN"]}}
2023-08-21T23:52:30.475+0800	info	{"code":20000,"data":{"roles":["Node_priv","Admin_priv","","(false)"]}}
2023-08-21T23:52:30.541+0800	info	{"code":20000,"data":{"roles":["Node_priv","Admin_priv"]}}
2023-08-21T23:52:30.611+0800	info	{"code":20000,"list":[{"cores":288,"expire_at":1694102400000,"hosts":9}],"total":1}
2023-08-21T23:52:30.611+0800	info	现在日期:1692633150611,到期日期:1694102400000
2023-08-21T23:52:30.612+0800	info	集群:cluster5,核数:288,license过期时间:2023-09-08 00:00:00,节点数:9, license 18天后将过期!
2023-08-21T23:52:30.612+0800	info	cluster5 现在day的值是:18
2023-08-21T23:52:30.661+0800	info	{"code":20000,"list":[{"cores":120,"expire_at":1694102400000,"hosts":9}],"total":1}
2023-08-21T23:52:30.661+0800	info	现在日期:1692633150661,到期日期:1694102400000
2023-08-21T23:52:30.661+0800	info	集群:cluster6,核数:120,license过期时间:2023-09-08 00:00:00,节点数:9, license 18天后将过期!
2023-08-21T23:52:30.661+0800	info	cluster6 现在day的值是:18
2023-08-21T23:52:30.737+0800	info	{"code":20000,"data":{"roles":["Node_priv","Admin_priv","","(false)"]}}
2023-08-21T23:52:30.822+0800	info	{"code":20000,"list":[{"cores":304,"expire_at":1694102400000,"hosts":11}],"total":1}
2023-08-21T23:52:30.822+0800	info	现在日期:1692633150822,到期日期:1694102400000
2023-08-21T23:52:30.822+0800	info	集群:cluster3,核数:304,license过期时间:2023-09-08 00:00:00,节点数:11, license 18天后将过期!
2023-08-21T23:52:30.822+0800	info	cluster3 现在day的值是:18
2023-08-21T23:52:30.938+0800	info	{"code":20000,"list":[{"cores":480,"expire_at":1694102400000,"hosts":15}],"total":1}
2023-08-21T23:52:30.938+0800	info	现在日期:1692633150938,到期日期:1694102400000
2023-08-21T23:52:30.938+0800	info	集群:cluster4,核数:480,license过期时间:2023-09-08 00:00:00,节点数:15, license 18天后将过期!
2023-08-21T23:52:30.939+0800	info	cluster4 现在day的值是:18
2023-08-21T23:52:31.220+0800	info	{"code":20000,"list":[{"cores":576,"expire_at":1694102400000,"hosts":9}],"total":1}
2023-08-21T23:52:31.220+0800	info	现在日期:1692633151220,到期日期:1694102400000
2023-08-21T23:52:31.220+0800	info	集群:cluster2,核数:576,license过期时间:2023-09-08 00:00:00,节点数:9, license 18天后将过期!
2023-08-21T23:52:31.220+0800	info	cluster2 现在day的值是:18
2023-08-21T23:52:31.365+0800	info	{"code":20000,"data":{"roles":["Node_priv","Admin_priv","","(false)"]}}
2023-08-21T23:52:32.537+0800	info	{"code":20000,"list":[{"cores":1336,"expire_at":1694102400000,"hosts":22},{"cores":1336,"expire_at":1694102400000,"hosts":22}],"total":2}
2023-08-21T23:52:32.537+0800	info	现在日期:1692633152537,到期日期:1694102400000
2023-08-21T23:52:32.537+0800	info	集群:cluster1,核数:1336,license过期时间:2023-09-08 00:00:00,节点数:22, license 18天后将过期!
2023-08-21T23:52:32.537+0800	info	cluster1 现在day的值是:18
2023-08-21T23:52:32.537+0800	info	done!
1赞