Ceph 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.
.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,它可会工作不正常。
支持的完整的环境变量如下:
Name | Description | Default |
---|---|---|
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.conf
和ceph.<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 是使用网桥的时候的参数。
Ceph RADOSGW Usage Exporter https://github.com/blemmenes/radosgw_usage_exporter