Ceph Exporter 接入

最近更新时间:2024-06-20 10:39:01

我的收藏

操作场景

Ceph Exporter 是一个用于 Prometheus 监控系统的插件,用于收集和暴露 Ceph 分布式存储集群的性能指标。它允许用户监视 Ceph 集群的健康状况、性能指标和状态信息,帮助管理员及时发现问题并进行相应的调整和优化。腾讯云可观测平台 Prometheus 提供了与 Ceph Exporter 集成及开箱即用的 Grafana 监控大盘。
Ceph Luminous 12.2.1 之前的版本需要使用该 Exporter 导出指标;Ceph Luminous 12.2.1 的 mgr 中自带了 Prometheus 插件,内置了 Prometheus ceph exporter,可以使用 Ceph mgr 内置的 exporter 作为 Prometheus 的采集目标,故而 Ceph Luminous 12.2.1 及之后的版本更建议使用自带的指标导出。

接入方式:Mgr 原生导出

前提

Ceph 版本不低于 Luminous 12.2.1。

启用 Ceph 的 Prometheus 插件

查看是否已经开启:
ceph mgr module ls
若输出列表中包含 "prometheus" 则说明已开启 prometheus 插件,若不存在则需要开启该插件。
开启 prometheus 插件:
ceph mgr module enable prometheus
验证:
ceph mgr module ls
输出列表中包含 "prometheus",说明已开启 prometheus 插件。然后登录 mgr pod 验证拉取指标:
curl 127.0.0.1:9283/metrics ## 默认为9283端口,按业务实际端口进行调整
即可看到拉取的指标信息:




指标采集

2. 在实例列表中,选择对应的 Prometheus 实例。
3. 进入实例详情页,选择数据采集 > 集成中心
4. 在集成中心搜索抓取任务,单击一键安装



5. 在新建页,填写指标采集名称和地址等信息,并单击保存



6. 在集成中心搜索 ceph,单击 Dashboard 安装/升级




接入方式:开源 Exporter 导出

方式一:一键安装(推荐)

操作步骤

2. 在实例列表中,选择对应的 Prometheus 实例。
3. 进入实例详情页,选择数据采集 > 集成中心
4. 在集成中心搜索 Ceph,单击一键安装



5. 在新建页,填写指标采集名称和地址等信息,并单击保存




配置说明

参数
说明
名称
集成名称,命名规范如下:
名称具有唯一性。
名称需要符合下面的正则:'^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$'。
用户名
Ceph 的用户名称。
秘钥
上述用户名对应的秘钥。
集群
Ceph 的集群名称。
标签
给指标添加自定义 Label。
ceph 配置
连接 Ceph 所需的 ceph.conf 配置文件

方式二:自定义安装

说明:
为了方便安装管理 Exporter,推荐使用腾讯云 容器服务 来统一管理。

前提条件

在 Prometheus 实例对应地域及私有网络(VPC)下,创建腾讯云容器服务 Kubernetes 集群,并为集群创建 命名空间
Prometheus 监控服务控制台 > 选择对应的 Prometheus 实例 > 数据采集 > 集成容器服务中找到对应容器集群完成关联集群操作。可参见指引 关联集群

操作步骤

步骤一:Exporter 部署
2. 在左侧菜单栏中单击集群。
3. 单击需要获取集群访问凭证的集群 ID/名称,进入该集群的管理页面。
4. 执行以下 创建配置及鉴权用 Secret > 部署 Ceph Exporter > 验证 步骤完成 Exporter 部署。
步骤二:创建配置及鉴权用 Secret
1. 在左侧菜单中选择工作负载 > Deployment,进入 Deployment 页面。
2. Base64编码生成秘钥环与 ceph.conf。
ceph.conf:
[global]
mon_host = 172.18.0.2:6789,172.18.0.3:6789,172.18.0.4:6789
## 该换行不可省略,是必需内容

keyring:
[client.admin]
key = AJKs8dsdfJkEEHxASDanasiKasfdJLYE5G3UAw==
## 该换行不可省略,是必需内容
Base64编码后:
ceph.conf:
W2dsb2JhbF0KbW9uX2hvc3QgPSAxNzIuMTguMC4yOjY3ODksMTcyLjE4LjAuMzo2Nzg5LDE3Mi4xOC4wLjQ6Njc4OQo=
keyring:
W2NsaWVudC5hZG1pbl0Ka2V5ID0gQUpLczhkc2RmSmtFRUh4QVNEYW5hc2lLYXNmZEpMWUU1RzNVQXc9PQo=
3. 在页面右上角单击 YAML 创建资源,创建 YAML 配置:
apiVersion: v1
kind: Secret
metadata:
name: ceph-secret-test # 根据业务需要调整成对应的名称
namespace: ceph-demo # 根据业务需要调整成对应的命名空间
type: Opaque
data:
## ceph.client.user.keyring 中的 user 为鉴权用的用户名,请根据实际业务进行替换,例如 ceph.client.admin.keyring
ceph.client.user.keyring: W2NsaWVudC5hZG1pbl0Ka2V5ID0gQUpLczhkc2RmSmtFRUh4QVNEYW5hc2lLYXNmZEpMWUU1RzNVQXc9PQo=
ceph.conf: W2dsb2JhbF0KbW9uX2hvc3QgPSAxNzIuMTguMC4yOjY3ODksMTcyLjE4LjAuMzo2Nzg5LDE3Mi4xOC4wLjQ6Njc4OQo=

部署 Ceph Exporter
在 Deployment 管理页面,选择对应的命名空间来进行部署服务,可以通过控制台的方式创建。如下以 YAML 的方式部署 Exporter, 配置示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s-app: ceph-exporter # 根据业务需要调整成对应的名称,建议加上 Ceph 实例的信息
name: ceph-exporter # 根据业务需要调整成对应的名称,建议加上 Ceph 实例的信息
namespace: ceph-demo # 根据业务需要调整成对应的命名空间
spec:
replicas: 1
selector:
matchLabels:
k8s-app: ceph-exporter # 根据业务需要调整成对应的名称,建议加上 Ceph 实例的信息
template:
metadata:
labels:
k8s-app: ceph-exporter # 根据业务需要调整成对应的名称,建议加上 ceph 实例的信息
spec:
containers:
- env:
- name: CEPH_CLUSTER
value: ceph # 根据业务需要调整成相应的集群名称
- name: CEPH_USER
value: admin # 根据业务需要调整成相应的用户名
- name: TELEMETRY_ADDR
value: :8080
image: ccr.ccs.tencentyun.com/rig-agent/common-image:ceph-exporter-v4.2.3
imagePullPolicy: IfNotPresent
name: ceph-exporter
ports:
- containerPort: 8080
name: metric-port
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /etc/ceph
name: conf
readOnly: true
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: qcloudregistrykey
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- name: conf
secret:
defaultMode: 420
secretName: ceph-secret-test # 上面步骤中创建的 Secret 的名称

验证
1. 在 Deployment 页面单击上述步骤创建的 Deployment,进入 Deployment 管理页面。
2. 单击日志页签,可以查看到 Exporter 成功启动并暴露对应的访问地址,如下图所示:


3. 单击 Pod 管理页签进入 Pod 页面。
4. 在右侧的操作项下单击远程登录,即可登录 Pod,在命令行窗口中执行以下 curl 命令对应 Exporter 暴露的地址,可以正常得到对应的 Ceph 指标。如发现未能得到对应的数据,请检查秘钥ceph.conf 配置是否正确,具体如下:
curl localhost:8080/metrics
执行结果如下图所示:



步骤四:添加采集任务
1. 登录 腾讯云可观测平台 Prometheus 控制台,选择对应 Prometheus 实例进入管理页面。
2. 单击数据采集 > 集成容器服务,选择已经关联的集群,通过数据采集配置 > 新建自定义监控 > YAML 编辑来添加采集配置。
3. 通过服务发现添加 PodMonitors 来定义 Prometheus 抓取任务,YAML 配置示例如下:
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: ceph-exporter # 填写一个唯一名称
namespace: cm-prometheus # 按量实例: 集群的 namesapce; 包年包月实例(已停止售卖): namespace 固定,不要修改
spec:
podMetricsEndpoints:
- interval: 30s
port: metric-port # 填写pod yaml中Prometheus Exporter对应的Port的Name
path: /metrics # 填写Prometheus Exporter对应的Path的值,不填默认/metrics
relabelings:
- action: replace
sourceLabels:
- instance
regex: (.*)
targetLabel: instance
replacement: 'crs-xxxxxx' # 调整成对应的 Ceph 实例 ID
- action: replace
sourceLabels:
- instance
regex: (.*)
targetLabel: ip
replacement: '1.x.x.x' # 调整成对应的 Ceph 实例 IP
namespaceSelector: # 选择要监控pod所在的namespace
matchNames:
- ceph-demo
selector: # 填写要监控pod的Label值,以定位目标pod
matchLabels:
k8s-app: ceph-exporter


查看监控

前提条件

Prometheus 实例已绑定 Grafana 实例。

操作步骤

1. 登录 腾讯云可观测平台 Prometheus 控制台,选择对应 Prometheus 实例进入管理页面。
2. 在实例基本信息页面,找到绑定的 Grafana 地址,打开并登录,然后在 ceph 文件夹中找到 Ceph - Cluster 监控面板,查看实例相关监控数据,如下图所示:


3. mgr 原生监控可在如下三个面板中查看:



4. Native Ceph Cluster 面板展示:




配置告警

腾讯云 Prometheus 托管服务支持告警配置,可根据业务实际的情况来添加告警策略。详情请参见 新建告警策略

附录:Ceph Exporter 环境变量配置

名称
描述
TELEMETRY_ADDR
暴露指标地址,默认 *:9128。
TELEMETRY_PATH
暴露指标路径,默认 /metrics。
EXPORTER_CONFIG
exporter 配置路径,默认 /etc/ceph/exporter.yml,存在该配置时,CEPH_CLUSTER、CEPH_CONFIG、CEPH_USER 等信息都将去其中获取。
RGW_MODE
启用从 RGW 收集统计数据,取值如下:
0:禁用(默认值)
1:启用
2:后台
CEPH_CLUSTER
Ceph 集群名称,默认 ceph。
CEPH_CONFIG
ceph.conf 配置位置,默认 /etc/ceph/ceph.conf
CEPH_USER
Ceph 连接集群用户名,默认 admin。
CEPH_RADOS_OP_TIMEOUT
Ceph osd 与 mon 操作超时时长,默认30s。
LOG_LEVEL
日志等级,取值范围:[trace, debug, info, warn, error, fatal, panic],默认 info。
TLS_CERT_FILE_PATH
tls 验证文件路径
TLS_KEY_FILE_PATH
tls 验证文件路径