本文首发于 Nebula Graph Community 公众号
从集群性能波动讲起
前几天,我们收到某公司 Nebula 数据库维护人员小张同学的反馈:发现集群 A 性能波动,同样的语句有时查询快,但是有时慢,帮忙看看是机器还是服务本身的问题呢?
想到了小张同学之前安装过 Nebula Dashboard 社区版,便推荐他进去查看监控情况。小张进入平台后,查看当前机器的 CPU、内存、磁盘、网络情况,发现同之前相比并没有明显异常情况,机器们都在正常运行。如下图所示:
但,你如果仔细查看这张图,会发现集群 A 个别时间段确实存在网络和 CPU 使用率飙升的问题。
于是,我们继续让小张再查看该集群的服务运行情况,发现在这段时间内查询数量会突然激增,而且有周期性。如下图:
发现周期性问题之后,我们询问小张在这个时间段该集群的使用场景。经排查发现,小张同学在这个时间每天会有定期运行一个数据库 nGQL 执行脚本。经他重新 review 脚本逻辑,发现查询中涉及多跳查询并且跳数超过 5 跳。问题定位后,小张建议相关的业务同学对语句脚本进行了优化解决了资源波动问题。
让人头疼的集群问题
解决了这个问题,小张同学又向我们提出了新问题:我能及时感知集群内的服务和机器的异常情况吗?我是不是可以接入告警服务,通过钉钉、微信、短信方式告知服务异常?
碰巧的是,另一个公司团队的小刘也反馈了个异常问题:某个集群连接不上,不知道是不是服务挂了。而且对外业务流量入口现在已经关闭了,怎么排查问题呢?由于 Nebula Dashbaord 社区版并未提供查看集群状态管理功能,在我们发现服务的监控查询数确实都是 0 之后,建议小刘同学挨个检查机器。小刘检查之后,反应集群 A 的机器能正常登录,但挨个查看发现端口的 graphd 和 storaged 服务并不在线,存在服务异常情况。为了不影响业务正常运行,小刘需要一个个手动启动服务异常的机器,花费了他不少启停时间。经过这次之后,小刘说他打算写个集群快速启动脚本,不然每次手动启停太麻烦。
无独有偶,除了上面两个运维同学反馈的问题之外,其实,我们还收到了这样的反馈:流量小的情况下,集群正常运行;一旦流量超过某个阈值,便会发生服务连不上、连接超时、某个查询服务离线等等问题…一般来说,因为集群服务比例分布不合理、分片不均的情况,集群或存在某台机器一直处在高负载状态。以上面这位同学为例,他平时业务流量比较均衡,但最近刚好是某个活动期,参与了多项推广活动,流量骤升是平时流量的几百倍。基于这种情况,我们建议他对集群进行弹性扩容,增加 5 台服务以应对突发的大流量。这波活动过去之后,再缩容,节省成本。
其实集群除了弹性扩缩容问题之外,常见以下几类反馈:
1:如何快速创建集群,默认 3 节点配置就好?
2:我能看到某台集群某个时间段的操作记录吗?
3:我能删除某个集群,并回收资源吗?
4:昨天查看日志信息,我发现集群 B 的存储服务 storaged2 启停了一次,能帮忙排查是什么问题问题造成的吗?是否后续上生产环境也会出现?
5:graph 服务查不到,怎么定位问题?
6:集群的某个服务能查到,但是状态一直是退出状态,怎么快速拉起?
最终解决方案
基于用户的各种场景反馈,我们计划打造一款比 Dashboard 社区版更便捷管理 Nebula 数据库集群的工具——是的,它便是今天的主角 Nebula Dashboard 企业版,上面提到的那些集群问题以及性能波动问题,在新发布的 Nebula Dashboard v3.0 面前均不是问题:Nebula Dashboard 企业版,专治集群的疑难杂症。
为了让数据库运维、DBA 同学更方便地管理 Nebula 数据库集群,基于社区版的 Nebula Dashboard 我们扩展多个功能场景,这里可以简单介绍下部分功能,更多信息可以关注我们下周的 Dashboard v3.0 Demo SHOW 直播和官方介绍哟~
简化运维
提到简化操作,肯定得有对快速部署/导入集群功能的支持;再者,加上扩缩容,这样你就不用关心复杂繁琐的 shell 命令就能完成加减机器操作。最后,加入可视化元素更直观地了解集群机器和服务分布情况。
科学的监控&告警
此外,企业版 Nebula Dashboard 优化监控总览,以便更灵活、科学地监控服务。它支持对监控数据规则的自定义配置,并接入异常通知可及时同步异常情况给指定接收人,默认通知平台提示和邮件通知提供了 Webhooks 用来支持快速对接钉钉、企业微信等第三方通信平台;
服务/节点的可视化操作
在企业版 Nebula Dashboard 中还支持对服务/节点可视化管理,实时显示服务状态。此外,Dashboard 企业版还支持快速启停,再也不用挨个上故障机器手动启动服务。最后,Nebula Dashboard 企业版结合机器信息展示了集群服务的分布情况、类型,运行路径等信息,以便你更好地操作集群;
And More...
此外,我们还有许多实用的功能:
- 集群诊断:不但可以对问题集群进行问题定位,还可以对亚健康集群进行诊断分析,根据报告指定更好的维护计划;
- 可视化大屏:数据投在大屏幕上,实时关注集群,特别是需要压测和活动场景时更能直观感受集群的运行负载;
- 查看集群元数据信息:查看 leader、partition 分布,并支持 BALANCE 操作,还有其他服务运行的元数据信息展示等;
- 集群配置更新:检测集群配置,并自定义修改;
- 账号和权限管理体现:邀请多人同时管理,支持多集群权限管理;
最后,慢查询治理、一键数据备份 / 恢复 / Nebula 集群升级、job 管理、单进程监控、黑匣子等其他功能已在 Nebula Dashboard 企业版迭代计划中,感兴趣同学可以多关注下 Dashboard 企业版的后续版本发布。