暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

RESTful API获取Couchbase集群节点信息

DBInfos 2021-07-14
647

Cochbase不但提供专业的Web管理界面,还提供丰富的RESTful API,我们可以定制化对集群、节点、Document进行管理,以及获取运行信息。由于当前我司生产环境没有对Couchbase集群节点的状态进行监控,为此我们计划使用 GET pools/nodes HTTP方法获取节点的健康状态。


curl -u [admin-name]:[password] http:
//
[localhost]:[port]
/pools/nodes


一般情况下,我们可以在控制台执行上条命令抓取节点的信息。但是为了对信息进行过滤,并和我司监控平台进行对接,我们用Python实现这一系列功能。






getNodeStats(ip)函数用来从Couchbase获取节点信息,主要使用urllib.urlopen()函数发起请求,获取响应信息(JSON格式)。json.loads()函数将返回的JSON数据转换成Python可读的数据结构(字典)。我们就可以通过字典的Key-Value特性,获取节点Status信息:

可以看到上述输出节点的"status"为 "healthy"。如果节点状态不正常,则输出为"status": "healthy"。


而与监控平台的对接相当简单,将节点和状态不健康的信息通过msend脚本发送给告警服务器即可,不过需要在监控端进行一定设置。

os.system(
"/root/patroltest/msend -n cellect -a cb_cluster -b \"ci_ip="
 +
 
+
";c_msg="
 +
 node_dict[k]
+
 "\" -c root/patroltest/mcell.dir"
)






最后将脚本放到crontab定时任务里,周期调用执行即可:)


这里需要注意Python脚本中的各文件路径必须是绝对路径,否则在crontab调用执行会报错!


注意:本代码测试的Couchbase版本为4.1。4.6及更新版本的测试结果可能与此不同,各看官可自行探索。




文章转载自DBInfos,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论