实际集群监控手把手教学
写在前面
松鼠哥的ceph专业课程上线啦!
面向新手同学,从0实战,全面入门ceph安装部署与运维,有需要的同学赶紧扫码订购吧:
集群的运维人员往往同时需要兼顾一些开发工作,完成小工具的开发提高工作效率
需求提出
在生产环境中,集群的运行监控是个很大的问题,运维监控一般来说我们会分为两大类,一类是节点系统的监控,包括节点的网络、内存、cpu、磁盘等各项指标的监控,另外一类是集群的监控,集群的监控这块主要是由mgr导出的信息为主,内容已经很详细了,但是,某些情况下我们关注的特定指标现有的模块并不提供,我们想自己实现这些指标的监控怎么做呢?
这里,我们以监控radosgw每天产生的http 500数量为例进行自定义指标的监控
解决方案
实现的大致思路是这样的:
- 产生自定指标
- 使用node-exporter进行指标数据的推送
- 显示这个指标
要监控rgw产生的http 500数量,我们先要用程序将这个指标取得
1 |
|
运行这个脚本,我们将得到一些输出
1 | # HELP radosgw_bucket_http metric |
其中两个#开头的行表示这个指标的说明,最后一行表示指标的kv以及一些属性,这个属性是可以自己定的,比如这里就带上了这个指标产生的节点主机名,这为后续的数据选择提供字段,注意到一个点是,输出的kv的值必须是数值而不能是字符或者其他,如果有值为字符的要求,需要使用代号的方式进行对应,例如,我们监控集群的pg状态,pg状态非常多,我们可以对状态进行编号来对照,例如0表示active,1表示clean等等
接下来,我们要将这个输出生成一个.prom为后缀的文件,这样才能让node-exporter识别到并推送,我们这里使用moreutils提供的sponge来处理输出
1 | /bin/bash /lib/systemd/node_exporter/smartmon.sh|sponge /lib/systemd/node_exporter/ceph_bucket_http_status.prom |
这样,我们就生成了prom文件,实际上,这里因为是用了sh脚本来输出产生prom文件,而如果指标采集的手段使用其他操作更方便的话,也可以的,比如用python处理更方便的话,就可以直接open的方式产生文件
而后,我们将这个行为做到crontab里面,就可以实现每天自动的采集了
接下来,是node-exporter的配置,产生prom文件后,为了让node-exporter能够识别并帮助我们将数据推送到prometheus,我们需要在node-exporter启动参数里指定我们的数据目录,使用的参数是–collector.textfile.directory
1 | [Unit] |
就这样,node-exporter就可以自动为我们进行数据的推送了
最后,我们在promethus中查询一下这个数据,默认情况下使用的是9090端口,在web上可以通过kv带的属性进行搜索,确认数据入库后,就可以在grafana中显示了,这里就不再展开了,后续的操作我的博客文章使用Prometheus和Grafana监控集群有进一步的介绍,有兴趣的朋友可以参考
总结
不同的环境都会或多或少有一些自定的监控指标,现有模块不能提供的情况下,还是要手工采集一下,node-exporter有这自动推送的功能我们还是省了不少功夫,也保持了数据格式的一致性,不至于五花八门各种格式,后续维护也更麻烦,希望可以帮助到有需要的读者
- 本文作者: 奋斗的松鼠
- 本文链接: http://www.strugglesquirrel.com/2022/07/06/集群自定义监控指标/
- 版权声明: 本博客所有文章除特别声明外,创作版权均为作者个人所有,未经允许禁止转载!