
在此感谢刘思奇先生对原文的翻译整理。
简介——刘思奇
ZCS一枚,从事IT运维监控工作6年,zabbix使用4年,擅长Zabbix、IBM Tivoli、 grafana、 Shell、Python等,热爱Zabbix、Promethues开源监控工具。

文章简介
了解如何使用Zabbix为CephStorage构建监控系统,如何提高对存储解决方案运行状况的可见性以及如何在不影响应用程序甚至业务连续性之前主动识别可能的异常事件和性能问题。
概述

存储价格一直在下降,业务需求在快速增长,公司存储的数据比以往任何时候都要多。随着这种增长,对监控和数据保护的需求不断增长,涉及软件定义的存储解决方案。停机成本高昂,会直接影响业务连续性并对组织造成不可挽回的损失。一些后果是资产和信息丢失,服务和运营中断,违反法律,法规或合同。即使这可能会在财务上影响您的业务,失去客户并损害公司的声誉。据Gartner估计,一分钟的停机成本使企业损失5,600美元,一个小时的损失超过300,000美元。另一方面,在DevOps环境中,必须考虑持续监视,一种在整个应用程序生命周期及其组件中进行监视的主动方法。这将有助于确定可能出现问题的根本原因,并快速、主动地防止性能问题或将来的停机。在本文中,您将看到如何使用企业开源工具(Zabbix)实施对存储解决方案(Ceph)的监控。
什么是Ceph存储?

Ceph存储是一个开源软件定义存储,PB级和分布式存储,主要设计用于云的工作负载。尽管某些传统的NAS或SAN存储解决方案基于昂贵的专有硬件解决方案,但软件定义的存储通常设计为在普通硬件上运行,这可以使这些新系统比传统的存储设备便宜。Ceph主要设计用于以下用例:
•为OpenStack环境存储镜像和虚拟块设备存储(使用Glance,Cinder和Nova)
•使用标准API访问基于对象的存储的应用程序
•容器的持久存储
根据Ceph文档,无论您是要向Cloud平台提供对象存储和/或阻止设备服务,部署文件系统还是将Ceph用于其他目的,所有存储集群部署都始于设置每个节点,您的网络以及存储集群。一个Ceph存储集群至少需要一个Monitor(ceph-mon),Manager(ceph-mgr)和ObjectStorageDaemon(ceph-osd)。运行Ceph文件系统客户端时,也需要元数据服务器(ceph-mds)。这些是Zabbix将监控的许多组件中的一些。要了解有关每个组件功能的更多信息,请查看产品文档。
我们在这里是实验环境,但是如果您打算在生产中进行此操作,则应查看硬件和操作系统建议。
Zabbix是什么及如何监控

Zabbix是企业级开源分布式监控解决方案。它监控许多网络参数以及服务器的运行状况和完整性。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的警报。这样可以快速响应服务器问题。它基于存储数据提供出色的报告和数据可视化功能。这使其成为容量规划的理想选择。它支持轮询和陷阱,并且可以通过基于Web的前端访问所有报告和统计信息以及配置参数。基于Web的前端确保可以从任何位置评估网络的状态和服务器的运行状况。正确配置后,它可以在监控IT基础架构中发挥重要作用。对于具有少量服务器的小型组织和具有大量服务器的大型公司而言,也是如此。我不会在这里写Zabbix安装,但是官方文档中有很好的指南和视频。
一切是如何开始的
CephManager守护程序(ceph-mgr)从RedHatCephStorage3版本(称为Luminous)开始,是正常操作所必需的,并与监控守护程序一起运行,以为外部监控和管理系统提供附加的监控和接口。同时,您可以创建模块并扩展mgrs以提供新功能。在这里,我们将通过ZabbixPython模块使用此扩展功能,其中该模块负责将总体集群状态和性能导出到ZabbixServer。ZabbixServer是执行监控的主要进程,可与ZabbixProxy和Agent进行交互,计算触发器,发送告警通知,存储数据。显然,您利用Zabbix不仅可以主动收集操作系统的传统指标,同时Zabbix模块将开始收集有关存储指标和性能的特定指标,并将其发送到Zabbix服务器。
这里有一些指标的示例:
•Ceph性能:I/O操作,带宽,延迟等
•存储利用率和概述
•OSD状态以及IN或UP的数量
•Mons和OSD数
•池和放置组的数量
•Ceph的总体状况等等
实验环境
这里不会介绍Ceph集群的安装,但是您可以在Ceph文档中找到有关如何进行安装的更多信息。我的存储集群是使用ceph-ansible安装的。
所使用的计算资源是具有相同配置的12个实例:2个CPU内核和4GBRAM,具体如下:
•3个“监控和管理器”节点(并置)
•3个OSD节点,每个节点3个磁盘(总共9个OSD)
•2个MDS节点
•2个RADOS网关节点
•1个AnsibleMgmt节点
•1个Zabbix服务器节点并置(Zabbix服务器,MariaDB服务器和Zabbix前端)

图1–实验环境拓扑图
使用的软件资源:
· 所有实例的基本操作系统:RedHatEnterpriseLinux7.7
· 群集存储节点:RedHatCephStorage4.0
· 管理与自动化:Ansible2.8
· 监控:Zabbix4.4
考虑到集群已安装并准备就绪,以下是运行状况,服务和任务状态:
[user@mons-0~]$sudoceph-s
cluster:
id:7f528221-4110-40d7-84ff-5fbf939dd451
health:HEALTH_OK
services:
mon:3daemons,quorummons-1,mons-2,mons-0(age37m)
mgr:mons-0(active,since3d),standbys:mons-1,mons-2
mds:cephfs:1{0=mdss-0=up:active}1up:standby
osd:9osds:9up(since35m),9in(since3d)
rgw:2daemonsactive(rgws-0.rgw0,rgws-1.rgw0)
taskstatus:
data:
pools:8pools,312pgs
objects:248objects,6.1KiB
usage:9.1GiBused,252GiB/261GiBavail
pgs:312active+clean
如何启用Zabbix仪表板模块

Zabbix模块包含在ceph mgr包中,您必须在启用管理器服务的情况下部署ceph集群。您应该在其中一个ceph mgr节点中使用单个命令启用Zabbix模块:
[user@mons-0 ~]$ sudo ceph mgr module enable zabbix
可以通过以下命令检查是否启用了Zabbix模块:
[user@mons-0 ~]$ sudo ceph mgr module ls | head -5
{
"enabled_modules": [
"dashboard",
"prometheus",
"zabbix"
将数据从Ceph集群发送到Zabbix
该解决方案使用Zabbix Sender程序,它是一个命令行工具,可用于将性能数据发送到Zabbix Server以进行处理。Zabbix Sender程序通常用在长时间运行的用户脚本中,用于定期发送可用的性能数据。Zabbix Sender可以用包管理器将其安装在大多数发行版上。您应该在所有运行ceph-mgr的服务器上安装zabbix_sender可执行文件,以实现高可用性。
让我们启用Zabbix仓库并在所有Ceph管理器节点中安装zabbix_sender:
[user@mons-0 ~]$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
[user@mons-0 ~]$ sudo yum clean all
[user@mons-0 ~]$ sudo yum install zabbix-sender -y
或者,您可以使其自动化并使用Ansible在三个mgrs节点中一次运行这些命令:
[user@mgmt ~]$ ansible mgrs -m command -a "sudo rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm"
[user@mgmt ~]$ ansible mgrs -m command -a "sudo yum clean all"
[user@mgmt ~]$ ansible mgrs -m command -a "sudo yum install zabbix-sender -y"
配置模块
在理解了一切工作原理之后,您只需要进行一些配置就可以使该模块正常工作:
•zabbix_host:这是zabbix_sender将项目作为陷阱发送到的Zabbix服务器主机名或IP地址。
•identifier:这是Zabbix中的Ceph集群标识符参数。它控制将监控项发送到Zabbix时用作源的标识符/主机名。这应该与Zabbix Server中的主机名匹配。如果不配置标识符参数,则该参数在将数据发送到Zabbix Server时将使用集群的ceph-<fsid>。例如,这将是ceph-c6d33a98-8e90-790f-bd3a-1d22d8a7d354
您还可以改变许多其他默认配置及其默认值:
•zabbix_port:10051–这是运行Zabbix服务器的TCP端口
•zabbix_sender:/usr/bin/zabbix_sender–Zabbix sender默认二进制文件的路径
•间隔:60–zabbix_sender将为Zabbix Server发送数据的指定时间段的更新间隔。默认值为60秒。
配置密钥
可以在具有适当cephx凭据的任何服务器上设置配置密钥,这些通常是Monitors,其中client.admin密钥可用。
[user@mons-0 ~]$ sudo ceph zabbix config-set zabbix_host zabbix.lab.example
[user@mons-0 ~]$ sudo ceph zabbix config-set identifier ceph4-cluster-example
[user@mons-0 ~]$ sudo ceph zabbix config-set interval 120
也可以使用以下命令显示模块的当前配置:
[user@mons-0 ~]$ sudo ceph zabbix config-show
{"zabbix_port": 10051, "zabbix_host": "zabbix.lab.example", "identifier": "ceph4-cluster-example", "zabbix_sender": "/usr/bin/zabbix_sender", "interval": 120}
探索Zabbix:模板,主机创建和仪表板

首先,导入模板。在Zabbix世界中,模板是一组可以方便地应用于多个主机的实体。实体可以是项目,触发器,图形,发现规则等。模板基础是监控项。请记住,监控项是您要从主机接收的特定数据。当模板链接到主机时,模板的所有实体都将添加到主机。模板直接分配给每个主机独立的实体。
下载用于Ceph的Zabbix模板,该模板在XML目录中位于源目录中。完整在本地下载模板文件很重要,否则下一步将无法导入。
[user@mylaptop ~]$ curl
https://raw.githubusercontent.com/ceph/ceph/master/src/pybind/mgr/zabbix/zabbix_template.xml -o zabbix_template.xml
要导入模板,请执行以下操作:
•转到:配置→模板
•单击右侧的导入
•选择导入文件
•点击导入按钮
•点击导入

图2–导入Zabbix模板
导入成功或失败消息将显示在前端。
在Zabbix前端中配置主机并链接到新创建的模板:
•转到:配置→主机
•单击右侧的“创建主机”按钮
•输入主机名和组
•并链接Ceph模板

图3–创建您的Ceph集群主机并添加到组
主机名和组是必填字段。确保主机具有与Cephconfig-key参数中配置的标识符相同的名称。我们有许多可用的组,您可以选择一个或创建一个新的组。本实验选择的主机组的Linux servers。
在模板选项卡,选择ceph-mgr Zabbix module,你之前已经导入并点击Select后Add按钮。

图4–将Ceph模板链接到主机
配置完成,几分钟后,数据应开始出现在Zabbix Web界面中,并且在“监控>最新数据”菜单下,将开始为主机填充图形。模板中已经配置了许多触发器,如果您配置了动作和操作,这些触发器将发出通知。

图5–Zabbix收集的最新数据
收集数据之后,您可以轻松地创建自己的Ceph仪表板:

图6–ZabbixCeph仪表板
作者:
亚历山德罗·席尔瓦
(Alessandro Silva)

Alessandro Silva在RedHat担任高级云成功架构师,负责为拉丁美洲的战略客户提供有关CloudAdoption的支持。他是RedHat认证的架构师,LPIC-3安全专家,也是巴西最早的Zabbix认证专家之一。他是Zabbix的拥护者,并在包括ZabbixConferenceLatam2016在内的各种会议上进行了大量演讲,当时他介绍了Zabbix Security Insights解决方案。
欢迎关注
Zabbix开源社区
分享更多精彩内容
联系我们
电话:17502189550(微信同号)
邮箱:china@zabbix.com
网站:www.zabbix.com/cn www.grandage.cn

一键关注
关注公众号
加入社区群


Zabbix社区,因你而更美好
点击在看,把好文章分享给你的朋友(•̀ᴗ•́)و ̑̑
▼





