如何用Zabbix监控Rook Ceph集群?除自定义镜像外有无更优方案?
Rook Ceph Zabbix监控实现方案
首选方案:通过Prometheus Exporter对接Zabbix(零侵入,无需修改Ceph容器)
这是目前最稳定且维护成本最低的实现方案,完全不需要依赖zabbix_sender工具,步骤如下:
- 确认Rook CephCluster资源中已开启监控组件:将
spec.monitoring.enabled设置为true,Rook会自动部署Ceph内置的Prometheus Exporter,暴露所有集群、池、OSD、MON、MGR等维度的监控指标 - 在Zabbix侧添加Prometheus类型数据源,直接拉取Exporter的指标接口即可完成所有监控项的对接,不需要修改Ceph容器的任何配置
备选方案1:挂载宿主机zabbix_sender二进制
该方案可以实现需求,但存在适配风险:
- 可行性前提:宿主机预安装的zabbix_sender二进制的CPU架构、glibc等依赖库版本必须和Ceph官方镜像的运行环境完全兼容,否则会出现执行报错
- Rook配置方法:修改CephCluster自定义资源的
spec.overrides字段,为MON和MGR组件添加宿主机文件挂载,配置示例如下:
apiVersion: ceph.rook.io/v1 kind: CephCluster spec: overrides: # MGR组件挂载配置 mgr: volumes: - name: zabbix-sender-bin hostPath: path: /usr/bin/zabbix_sender type: File # 若zabbix_sender依赖额外动态库,需按相同格式添加对应.so文件的挂载 volumeMounts: - name: zabbix-sender-bin mountPath: /usr/bin/zabbix_sender readOnly: true # MON组件挂载配置 mon: volumes: - name: zabbix-sender-bin hostPath: path: /usr/bin/zabbix_sender type: File volumeMounts: - name: zabbix-sender-bin mountPath: /usr/bin/zabbix_sender readOnly: true
- 注意事项:所有运行MON、MGR Pod的宿主机都必须提前部署对应版本的zabbix_sender及依赖,否则对应Pod会启动失败
备选方案2:自定义Ceph镜像
如果上述方案都无法满足需求,再考虑自定义镜像方案:
- 基于官方Ceph镜像构建自定义镜像,在Dockerfile中添加安装zabbix_sender的步骤
- 修改CephCluster资源的
spec.cephVersion.image字段,指向你构建的自定义镜像地址即可,Rook会自动拉取新镜像重建所有Ceph组件Pod
内容的提问来源于stack exchange,提问作者Jan Klepek
相关产品推荐
相关产品推荐

