在本章中,我们将介绍以下秘籍:
- Monitoring Ceph clusters – the classic way
- Introducing Ceph Metrics and Grafana
- Installing and configuring Ceph Metrics with the Grafana dashboard
- Monitoring Ceph Clusters with Ceph Metrics with the Grafana dashboard
在本章中,我们将介绍以下秘籍:
无论您拥有小型、中型还是 Exascale 集群,监控都是基础架构中最关键的部分。一旦您完成了 Ceph 集群的设计、部署和生产服务实施,监控就成为存储管理员的主要职责。在本章中,我们将学习多种监控 Ceph 集群及其组件的方法。我们将使用其原生 CLI 工具介绍 Ceph 的 CLI 和 GUI 监控;我们还将使用 Grafana 实现 Ceph Metrics,这是一个开源 Ceph 集群监控仪表板。
作为存储管理员,您需要密切关注您的 Ceph 存储集群,并了解特定时间发生的情况。定期和有纪律的监控可让您随时了解集群运行状况。根据监控通知,您有更多时间在服务中断之前采取必要的措施。
监控 Ceph 集群是一项日常任务,包括监控 MON、OSD、MDS、PG 以及存储配置服务,例如 RBD、radosgw、Ceph FS 和 Ceph 客户端。 Ceph 默认带有一组丰富的本地命令行工具和 API 来对这些组件进行监控。除此之外,还有一些开源项目是专门为在 GUI 单视图仪表板上监控 Ceph 集群而开发的。在以下秘籍中,我们将重点介绍用于集群监控的 Ceph CLI 工具。
在这个秘籍中,我们将学习用于监控整个 Ceph 集群的命令。
下面是我们如何监控 Ceph 集群。这些步骤将在以下部分中按主题说明
。
要检查集群的运行状况,请使用 ceph 命令,然后使用 health 作为命令选项:
这个命令的输出会被分成几个部分,用分号隔开:
输出的第一部分显示您的集群处于警告状态,HEALTH_WARN,如 < kbd>64 pgs 降级。第二部分表示 1,408 个 PG 不干净,输出的第三部分表示正在对 5,744 个对象中的 1 个进行集群恢复,并且集群降级了 0.017%。如果您的集群健康,您将收到 HEALTH_OK 的输出。
要了解集群运行状况的更多详细信息,请使用 ceph health detail 命令。该命令会告诉你所有不活跃和干净的 PG,即所有不干净、不一致和降级的 PG 都会在此处列出及其详细信息。如果您的集群健康,您将收到 HEALTH_OK 的输出。
您可以在上图中看到,我们有像 active+remapped 这样的 PG 状态,并且具有给定的代理集。这里的 active 意味着 Ceph 将处理对归置组的请求,而 remapped 意味着归置组临时映射到与 CRUSH 指定的不同的 OSD 集。
您可以使用 ceph 命令和 监控集群事件-w 选项。该命令将实时显示所有集群事件的消息,包括信息[INF]、警告[WRN]和错误[ERR]。此命令的输出将是连续的、实时的集群更改;您可以使用 Ctrl + C 进入 shell:
您可以在前面的屏幕截图中看到,我们列出了两种类型的事件消息,WRN 和 INF,一种用于 PG 的恢复,另一种用于监控时钟偏差。
还有其他选项可与 ceph 命令一起使用,以收集不同类型的事件详细信息。它们如下:
要了解集群的空间利用率统计信息,请使用 ceph 命令和 df 选项。此命令将显示总集群大小、可用大小、已用大小和百分比。这也会显示 POOLS 信息,如 NAME, ID,利用率,以及每个池中的对象数量:
输出如下:
ceph df 为我们提供了集群中每个池的 USED、%USED 和 OBJECTS 的详细信息,我们这样做有 ceph df detail 命令。如果你在ceph df命令中添加detail switch,它会给你RAW USED,QUOTA OBJECTS详细信息.
检查集群状态是管理 Ceph 集群时最常见也是最频繁的操作。您可以使用 ceph 命令和 status 作为选项:
除了 status 子命令,您还可以使用较短的版本, -s,作为一个选项:
以下截图显示了我们集群的状态:
此命令将为您的 Ceph 集群转储大量有用信息:
Ceph 在基于密钥的身份验证系统上工作。一旦经过基于密钥的身份验证系统,所有集群组件就会相互交互。您可以将 ceph 命令与 auth list 子命令获取所有键的列表:
通常,一个 Ceph 集群部署有多个 MON 实例以实现高可用性。由于有大量监视器,它们应该达到法定人数才能使集群正常运行。
我们现在将重点介绍用于 OSD 监控的 Ceph 命令。这些步骤将在以下部分中按主题进行解释
。
要显示集群的 MON 状态和 MON 映射,请将 ceph 命令与 < span>mon stat 或 mon dump 子选项:
以下屏幕截图显示了此命令的输出:
为了维持 Ceph MON 之间的仲裁,集群应该始终拥有 Ceph 集群中一半以上的可用监视器。检查集群的仲裁状态在 MON 故障排除时非常有用。您可以使用 ceph 命令和 quorum_status 子命令:
以下屏幕截图显示了此命令的输出:
仲裁状态显示election_epoch,即选举版本号, quorum_leader_name,表示仲裁领导者的主机名。它还显示 MON 地图纪元和集群 ID。每个集群监视器都分配有一个等级。对于 I/O 操作,客户端首先连接到 quorum Lead 监视器;如果 leader MON 不可用,则客户端连接到下一个 rank 监视器:
监控 OSD 是一项至关重要的任务,需要引起很多关注,因为有很多 OSD 需要监控和处理。你的集群越大,它拥有的 OSD 就越多,它需要的监控就越严格。通常,Ceph 集群托管大量磁盘,因此面临 OSD 故障的几率非常高。
我们现在将重点介绍用于 OSD 监控的 ceph 命令。这些步骤将在以下部分中按主题进行解释。
OSD 中的树形视图对于了解诸如 in 或 < 等 OSD 状态非常有用span>out 和 up 或 向下。 OSD 中的树视图显示每个节点及其所有 OSD 及其在 CRUSH 图中的位置。您可以使用以下命令查看 OSD 的树状视图:
此命令显示 Ceph OSD 的各种有用信息,例如 WEIGHT、UP/DOWN 状态和 in/out 状态。输出将根据您的 Ceph CRUSH 地图进行精美的格式化。如果您要维护一个大型集群,这种格式将有助于从一长串列表中定位您的 OSD 及其托管服务器。
要检查 OSD 统计信息,请使用 # ceph osd stat;此命令将帮助您获取 OSD 地图 epoch、总 OSD 计数及其 in 和 up 状态。
要获取有关 Ceph 集群和 OSD 的详细信息,请执行以下命令:
这是一个非常有用的命令,它会输出 OSD map epoch、pool 详细信息包括 pool ID、pool name、pool type,即复制或擦除、CRUSH 规则集、复制大小、min_size ( PG 中为 IO 服务的 up/in OSD 的最小数量)和 PG。该命令还将显示每个 OSD 的信息,例如 OSD ID、状态、权重、最后一个清洁间隔时期等。所有这些信息对于集群监控和故障排除都非常有帮助。
你也可以建立一个OSD黑名单,防止它连接到其他OSD,这样就不会发生心跳过程。它主要用于防止滞后的元数据服务器对 OSD 上的数据进行不良更改。通常,黑名单由 Ceph 自己维护,不需要人工干预,但很高兴知道。
要显示列入黑名单的客户端,请执行以下命令:
我们可以直接从 ceph osd 命令查询 CRUSH 图。 CRUSH map 命令行实用程序与 CRUSH map 反编译后的常规查看和编辑方式相比,可以节省大量系统管理员的时间:
下图展示了我们查询CRUSH图的输出:
如果您正在管理具有数百个 OSD 的大型 Ceph 集群,有时很难在 CRUSH 映射中找到特定 OSD 的位置。如果您的 CRUSH 地图包含多个存储桶层次结构,这也很困难。您可以使用 ceph osd find 在 CRUSH 地图中搜索 OSD 及其位置:跨度>
OSD 存储 PG,每个 PG 都包含对象。集群的整体健康状况主要取决于 PG。只有当所有 PG 都处于状态 active+ 时,集群才会保持在 HEALTH_OK 状态干净。如果您的 Ceph 集群不健康,那么 PG 可能不是 active+clean。归置组可以表现出多种状态,甚至是多种状态的组合。以下是 PG 可以是的一些状态:
您可以使用以下命令监控PG:
pg stat命令的输出会以特定的格式显示很多信息:vNNNN: X pgs: Y active+clean; R MB 数据,U MB 使用,F GB / T GB 可用.
其中变量定义如下:
这个命令会生成很多关于PG的基本信息,比如PG映射版本、PG ID、PG状态、代理集、代理集primary等等。
此命令的输出可能很大,具体取决于集群中 PG 的数量,如果需要,可以使用 json-pretty 运行; 它将以纯文本形式转储输出。
元数据服务器仅用于 Ceph FS,目前还没有生产就绪。
元数据服务器有几种状态,例如 UP , DOWN, 活动 和 INACTIVE。
在执行 MDS 的监控时,应确保 MDS 的状态MDS 是 UP 和 ACTIVE。以下命令将帮助您获取与 Ceph MDS 相关的信息。
您可以使用以下命令查看 Ceph 文件系统的详细信息:
输出如下图所示:
输出显示在以下屏幕截图中:
Ceph Metrics 是一个工具,它允许用户直观地监控正在运行的 Ceph 集群中的各种指标。它有两个组件 collectd 和 Grafana。
collectd 是一个守护进程,它定期收集系统和应用程序性能指标,并提供一种以不同方式存储值的方法。它从各种来源收集指标,例如操作系统平台、用户应用程序、系统和用户日志文件以及外部设备,并累积这些信息或使其通过网络可用。
在 Ceph Metrics 中,Ceph 节点将安装 collectd 以及来自 cephmetrics-collectd 的收集器插件。
Grafana 是一个开源、功能丰富的指标仪表板和图形编辑器,适用于 Graphite、Elasticsearch、OpenTSDB、Prometheus 和 InfluxDB。它有一个标语漂亮的分析和监控的开放平台。
在 Ceph Metrics 中,仪表板主机将安装和配置 Grafana,以通过 Graphite-Web、Python-Carbon 和 Python-Whisper 堆栈查询从 Ceph 节点接收的数据来显示各种仪表板:https://github.com/ceph/cephmetrics。
您已使用 ceph-ansible 设置集群,并且可以使用相同的 ceph-ansible 虚拟机安装 cephmetrics 以利用清单文件 - /etc/ansible/hosts。
我们将使用以下命令在 ceph-node1 中配置 Ceph Metrics:
您需要修改 /etc/ansible/hosts 以添加 Ceph Metrics 节点,在本书中,我们使用 ceph-node1 作为 Ceph Metrics 节点。如果您在清单文件中提到的主机上运行 ansible-playbook,则需要将 ansible_connection=local 附加到清单文件中提到该主机的每一行。
在编写本书时,Ceph Metrics 正处于 CentOS 和 Ubuntu 的开发模式,我们针对它的一些限制进行了持续改进。以下 README 屏幕截图中列出了 Ceph Metrics 限制。
此文件存在于 ceph-node1 VM 路径中:/usr/share/cephmetrics-ansible/README.md:
在这个秘籍中,您将了解如何借助 Ceph Metrics 和 Grafana 仪表板监控 Ceph 集群。仪表板包含有关主要 Ceph 守护进程及其性能的信息。
你应该使用 Grafana 登录页面,使用链接 ceph-node1:3000/login 和用户名和密码为 admin:
前面的仪表板屏幕截图中的第一个浅绿色选项卡只是集群运行状况,即 HEALTH_OK,之后,三个深绿色选项卡是 MON、OSD 和 MDS,它们给出了总的守护进程:
以下是上一个 Ceph Metrics 仪表板屏幕截图的命令行中的集群状态:
仪表板还具有以下选项卡:
最后一行有 Ceph 集群系统资源:
此仪表板屏幕截图的集群运行状况为 HEALTH_WARN,因为一些归置组具有三种归置组状态——peering(蓝色)、active+degraded(黄色)和active+clean(绿色),如果所有归置组都不是active+clean,那么集群健康将处于警告状态:
例如, Health 标签详细:
第三行磁盘选项卡:
如果单击磁盘相关选项卡上方的任何一个选项卡,您将拥有以下仪表板: