写点什么

Prometheus Exporter (二十一)Ceph Exporter

作者:耳东@Erdong
  • 2021 年 12 月 09 日
  • 本文字数:1442 字

    阅读完需:约 5 分钟

Prometheus Exporter (二十一)Ceph Exporter

本文已经收录在 Prometheus 合集 Prometheus 都可以采集那些指标?-- 常用 Exporter 合集 中。


Ceph 是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat 及 OpenStack 都可与 Ceph 整合以支持虚拟机镜像的后端存储。


针对 Ceph,DigitalOcean 开源了一个 Exporter ,叫做 Ceph Exporter ,是的,所有的 Exporter 命名都非常简单易懂。它的官方仓库是 https://github.com/digitalocean/ceph_exporter ,当前最新版本是 3.0.0-nautilus,发布于一年前 ,它没有提供二进制的执行文件,如果需要的话,需要自己构建。


Ceph Exporter 会抓取运行 Ceph 集群的元信息,从集群收集的所有信息都是通过在 rados_mon_command() 上使用适当的包装器与监视器交互完成的。因此,除了拥有一个工作的 Ceph 集群外,不需要其他的设置。

依赖关系

正常情况下,Ceph Exporter 和其他 Ceph 客户端一样,它需要以下文件才能正确运行,并且与 Ceph 集群进行交互。


  • ceph.conf 连接 Ceph 集群的配置文件.

  • ceph.<user>.keyring 为了通过 ceph 集群的认证。


这两个文件在缺省位置的时候,Ceph Exporter 可以自动识别,如果不在缺省位置,那么可以通过如下环境变量来指定


  • CEPH_CLUSTER: 集群的名称 (default ceph)

  • CEPH_CONFIG: Ceph 客户端用来连接 Ceph 集群的配置文件,(default /etc/ceph/ceph.conf)

  • CEPH_USER: Ceph 客户端用来连接 Ceph 集群的用户。(default admin)


如果需要可以使用 Ceph 的官方 Golang 客户端在集群上运行命令,ceph_exporters 分支只在 Ceph Nautilus 版本上进行测试。对于旧版本或非 lts 版本的 Ceph,它可会工作不正常。


支持的完整的环境变量如下:


  • TELEMETRY_ADDR ceph_exporter 暴露监控指标的地址和端口,默认是 *:9128

  • TELEMETRY_PATH 暴露数据供 Prometheus 获取的接口路径 /metrics

  • EXPORTER_CONFIG Ceph Exporter 的配置文件路径 /etc/ceph/exporter.yml

  • RGW_MODE Enable collection of stats from RGW (0:disabled 1:enabled 2:background) 0

  • CEPH_CLUSTER Ceph 集群名称,默认是 ceph

  • CEPH_CONFIG Ceph 客户端用来连接 Ceph 集群的配置文件, /etc/ceph/ceph.conf

  • CEPH_USER Ceph 客户端用来连接 Ceph 集群的用户,默认是 admin

  • CEPH_RADOS_OP_TIMEOUT Ceph rados_osd_op_timeout 和 rados_mon_op_timeout 用来连接集群的超时时间 (0s means no limit) 默认是 30s

  • LOG_LEVEL 日志级别,这几个中的一种: [trace, debug, info, warn, error, fatal, panic] 默认是 info

安装运行

Ceph Exporter 需要 Ceph 的配置文件,以便与 Ceph 的 monitor 建立通信。Ceph 的配置文件可以通过命令行参数传递进来,或者将 ceph.confceph.<user>.keyring 的目录挂载到 /etc/ceph 下。


作者已经将构建好的镜像传到了 Docker Hub,下载好以后使用如下命令即可启动,启动后会在 9128 端口暴露监控数据。


docker run -v /etc/ceph:/etc/ceph -p=9128:9128 -it digitalocean/ceph_exporter
复制代码


自己构建镜像需要先下拉仓库代码,然后执行


docker build -t digitalocean/ceph_exporter .
复制代码


如果在构建过程中需要执行单元测试,可以使用 --build-args TEST=true 参数


docker build -t digitalocean/ceph_exporter . --build-arg TEST=true --no-cache
复制代码


你必须确保你的镜像能和 Ceph 的 monitor 通信。如果它需要访问您的主机的网络堆栈,在容器需要添加 --net=host 参数,让他使用本地网络。。这个时候可以删除 -p 参数,-p 是使用网桥的时候的参数。


发布于: 5 小时前阅读数: 10
用户头像

耳东@Erdong

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
Prometheus Exporter (二十一)Ceph Exporter