注意
本文档适用于 Ceph 的开发版本。
Ceph Dashboard
概述
Ceph Dashboard 是一个基于 Web 的 Ceph 管理和监控工具,可用于检查和管理集群中的资源。它作为一个Ceph 管理器守护进程模块实现。
最初的 Ceph Dashboard 随 Ceph Luminous 发布,它是一个简单的只读视图,用于显示 Ceph 集群的运行时信息和性能数据。它具有简单的架构。然而,对于那些更喜欢 WebUI 而不是 CLI 的用户来说,对更丰富、基于 Web 的管理功能的需求不断增长。
Ceph Dashboard 模块为 Ceph Manager 增加了基于 Web 的监控和管理功能。这个新模块的架构和功能源自 openATTIC Ceph 管理和监控工具。开发最初由 SUSE 的 openATTIC 团队推动,并得到 Ceph 社区成员以及包括 Red Hat 在内的公司的支持。
仪表板模块的后端代码使用 CherryPy 框架,并实现了一个自定义 REST API。WebUI 的实现基于 Angular/TypeScript,包括原始仪表板的功能和最初为 openATTIC 独立版本开发的新功能。Ceph Dashboard 模块实现为一个应用程序,通过 ceph-mgr 托管的 Web 服务器提供信息和统计数据的图形表示。
功能概览
仪表板提供以下功能
多用户和角色管理:仪表板支持具有不同权限(角色)的多个用户帐户。用户帐户和角色可以通过命令行和 WebUI 进行管理。仪表板支持多种方法来增强密码安全性。可以配置密码复杂度规则,要求用户在首次登录后或在可配置的时间段后更改密码。有关详细信息,请参阅用户和角色管理。
- 单点登录 (SSO):仪表板支持身份验证
通过使用 SAML 2.0 协议或 OAuth2 协议的外部身份提供程序。有关详细信息,请参阅:ref:dashboard-saml2-sso-support 和:ref:dashboard-oauth2-sso-support。
SSL/TLS 支持:Web 浏览器和仪表板之间的所有 HTTP 通信都通过 SSL 保护。可以使用内置命令创建自签名证书,但也可以导入由 CA 签名和颁发的自定义证书。有关详细信息,请参阅SSL/TLS 支持。
审计:仪表板后端可以配置为将所有
PUT、POST和DELETEAPI 请求记录到 Ceph 审计日志中。有关如何启用此功能的说明,请参阅审计 API 请求。国际化 (I18N):可以在运行时选择用于仪表板文本的语言。
Ceph Dashboard 提供以下监控和管理功能
整体集群健康状况:显示性能和容量指标以及集群状态。
嵌入式 Grafana 仪表板:Ceph Dashboard Grafana 仪表板可以嵌入到外部应用程序和网页中,以显示由 Prometheus 模块收集的信息和性能指标。有关如何配置此功能的详细信息,请参阅启用 Grafana 仪表板嵌入。
集群日志:显示集群事件和审计日志文件的最新更新。日志条目可以按优先级、日期或关键字进行筛选。
主机:显示所有集群主机的列表,以及它们的存储驱动器、正在运行的服务和安装的 Ceph 版本。
性能计数器:显示每个正在运行的服务的详细服务特定统计信息。
监视器:列出所有 Mons、它们的仲裁状态和打开的会话。
监控:启用 Prometheus 静默的创建、重新创建、编辑和过期,列出警报配置以及所有已配置和正在触发的警报。显示正在触发的警报的通知。
配置编辑器:显示所有可用的配置选项、它们的描述、类型、默认值和当前设置的值。这些也可以编辑。
存储池:列出 Ceph 存储池及其详细信息(例如应用程序、pg-autoscaling、放置组、复制大小、EC 配置文件、CRUSH 规则、配额等)。
OSD:列出 OSD、它们的状态和使用统计信息,以及详细信息,如属性(OSD 映射)、元数据、性能计数器和读/写操作的使用直方图。标记 OSD 为 up/down/out,清除和重新加权 OSD,执行 scrub 操作,修改各种与 scrub 相关的配置选项,选择配置文件以调整回填活动的级别。列出与 OSD 关联的所有驱动器。设置和更改 OSD 的设备类别,按设备类别显示和排序 OSD。在新驱动器和主机上部署 OSD。
设备管理:列出编排器已知的所有主机。列出连接到主机的所有驱动器及其属性。显示驱动器健康预测和 SMART 数据。闪烁机箱 LED。
iSCSI:列出所有运行 TCMU 运行器服务的主机,显示所有镜像及其性能特征(读/写操作、流量)。创建、修改和删除 iSCSI 目标(通过
ceph-iscsi)。显示 iSCSI 网关状态和有关活动启动器的信息。有关如何配置此功能的说明,请参阅启用 iSCSI 管理。RBD:列出所有 RBD 镜像及其属性(大小、对象、功能)。创建、复制、修改和删除 RBD 镜像(包括快照)并管理 RBD 命名空间。在全局、每个存储池或每个镜像级别定义各种 I/O 或带宽限制设置。创建、删除和回滚选定镜像的快照,保护/取消保护这些快照免受修改。复制或克隆快照,扁平化克隆镜像。
RBD 镜像:启用和配置 RBD 镜像到远程 Ceph 服务器。列出活动守护进程及其状态、存储池和 RBD 镜像(包括同步进度)。
CephFS:列出活动文件系统客户端和关联的存储池,包括使用统计信息。驱逐活动的 CephFS 客户端。管理 CephFS 配额和快照。浏览 CephFS 目录结构。
对象网关:列出所有活动对象网关及其性能计数器。显示和管理(添加/编辑/删除)对象网关用户及其详细信息(例如配额),以及用户的存储桶及其详细信息(例如放置目标、所有者、配额、版本控制、多因素身份验证)。有关配置说明,请参阅启用对象网关管理前端。
NFS:通过 NFS Ganesha 管理 CephFS 文件系统和 RGW S3 存储桶的 NFS 导出。有关如何启用此功能的详细信息,请参阅NFS-Ganesha 管理。
Ceph Manager 模块:启用和禁用 Ceph Manager 模块,管理模块特定的配置设置。
仪表板登录页概览
Ceph Dashboard 的登录页面作为主页,显示集群的整体健康状况、性能和容量等指标。它提供集群中任何变化的实时更新,并允许快速访问仪表板的其他部分。
详情
提供集群配置的概述,显示集群的各种关键方面。
状态
提供集群健康状况的视觉指示,并显示按严重程度分组的集群警报。
容量
已使用:显示存储节点 (OSD) 提供的总物理容量中的已使用容量
警告:显示 OSD 的 nearfull 阈值
危险:显示 OSD 的 full 阈值
清单
集群内所有资产的清单。提供从此卡的每个项目直接访问仪表板子页面的权限。
集群利用率
已用容量:集群的总已用容量。图表的最大值是集群的最大容量。
IOPS(每秒输入/输出操作数):读写操作的数量。
延迟:处理读写请求所需的时间。
客户端吞吐量:客户端读取或写入集群的数据量。
恢复吞吐量:客户端读取或写入集群的恢复数据量。
支持的浏览器
Ceph Dashboard 主要使用以下网络浏览器进行测试和开发
浏览器 |
版本 |
|---|---|
最新的 2 个主要版本 |
|
最新的 2 个主要版本 |
|
最新的主要版本 |
虽然 Ceph Dashboard 可能在旧版浏览器中运行,但我们无法保证兼容性,建议保持浏览器最新。
启用
如果您从发行包安装了 ceph-mgr-dashboard,包管理系统应该会负责安装所有必需的依赖项。
如果您从源代码构建 Ceph 并希望从开发环境启动仪表板,请参阅源代码目录 src/pybind/mgr/dashboard 中的文件 README.rst 和 HACKING.rst。
在运行中的 Ceph 集群中,Ceph Dashboard 通过以下方式启用
ceph mgr module enable dashboard
配置
SSL/TLS 支持
默认情况下,所有到仪表板的 HTTP 连接都使用 SSL/TLS 进行保护。
为了快速启动和运行仪表板,您可以生成并安装自签名证书
ceph dashboard create-self-signed-cert
请注意,大多数 Web 浏览器会对自签名证书发出警告,并在与仪表板建立安全连接之前需要明确确认。
为了正确保护部署并消除警告,应使用由证书颁发机构 (CA) 颁发的证书。
例如,可以使用类似以下的命令生成密钥对
openssl req -new -nodes -x509 \
-subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650 \
-keyout dashboard.key -out dashboard.crt -extensions v3_ca
注意
目前,Ceph Dashboard 仅支持 SSL/TLS 证书的 RSA 私钥。如果您尝试使用 ECDSA/EC 密钥配置仪表板,模块将无法启动并出现类似以下的错误
MGR_MODULE_ERROR: 模块 'dashboard' 失败: 密钥 类型 不支持
此限制存在的原因是 Ceph Manager 中的验证例程使用 pyOpenSSL,其 PKey.check() 方法仅支持 RSA 密钥。在此限制解除之前,请使用 RSA 密钥生成或请求证书。
dashboard.crt 文件应由 CA 签名。完成后,您可以通过运行以下命令为 Ceph 管理器实例启用它
ceph dashboard set-ssl-certificate -i dashboard.crt
ceph dashboard set-ssl-certificate-key -i dashboard.key
如果每个管理器实例都需要唯一的证书,则可以将实例名称包含在内(其中 $name 是 ceph-mgr 实例的名称,通常是主机名)
ceph dashboard set-ssl-certificate $name -i dashboard.crt
ceph dashboard set-ssl-certificate-key $name -i dashboard.key
也可以通过设置此配置值来禁用 SSL
ceph config set mgr mgr/dashboard/ssl false
如果仪表板在不支持上游服务器 SSL 的代理后面运行,或者在不需要或不要求 SSL 的其他情况下,这可能会很有用。有关详细信息,请参阅代理配置。
警告
禁用 SSL 时请务必小心,因为用户名和密码将以未加密的形式发送到仪表板。
注意
更改 SSL 证书和密钥后,必须重新启动 Ceph 管理器进程。这可以通过运行 ceph mgr fail mgr 或禁用并重新启用仪表板模块(这也触发管理器自行重新生成)来实现
ceph mgr module disable dashboard
ceph mgr module enable dashboard
主机名和端口
与大多数 Web 应用程序一样,仪表板绑定到 TCP/IP 地址和 TCP 端口。
默认情况下,托管仪表板的 ceph-mgr 守护进程(即当前活动的管理器)将绑定到 TCP 端口 8443,或者在禁用 SSL 时绑定到 8080。
如果未配置特定地址,Web 应用程序将绑定到 ::,这对应于所有可用的 IPv4 和 IPv6 地址。
这些默认值可以通过集群范围的配置密钥设施更改(因此它们适用于所有管理器实例),如下所示
ceph config set mgr mgr/dashboard/server_addr $IP
ceph config set mgr mgr/dashboard/server_port $PORT
ceph config set mgr mgr/dashboard/ssl_server_port $PORT
由于每个 ceph-mgr 都托管自己的仪表板实例,因此可能需要单独配置它们。特定管理器实例的 IP 地址和端口可以使用以下命令更改
ceph config set mgr mgr/dashboard/$name/server_addr $IP
ceph config set mgr mgr/dashboard/$name/server_port $PORT
ceph config set mgr mgr/dashboard/$name/ssl_server_port $PORT
将 $name 替换为托管仪表板的 ceph-mgr 实例的 ID。
注意
命令 ceph mgr services 将显示当前配置的所有端点。查找 dashboard 键以获取访问仪表板的 URL。
用户名和密码
为了能够登录,您需要创建一个用户帐户并将其与至少一个角色关联。我们提供了一组预定义的系统角色供您使用。有关更多详细信息,请参阅用户和角色管理部分。
要创建具有管理员角色的用户,可以使用以下命令
ceph dashboard ac-user-create <username> -i <file-containing-password> administrator
账户锁定
如果用户多次输入错误的凭据,它会禁用用户帐户。默认情况下启用此功能,以防止暴力破解或字典攻击。用户可以使用以下命令分别获取或设置默认的锁定尝试次数
ceph dashboard get-account-lockout-attempts
ceph dashboard set-account-lockout-attempts <value:int>
警告
此功能可以通过将默认锁定尝试次数设置为 0 来禁用。但是,禁用此功能会使帐户更容易受到暴力破解或基于字典的攻击。这可以通过以下方式禁用
ceph dashboard set-account-lockout-attempts 0
启用锁定的用户
如果用户账户因多次无效登录尝试而被禁用,则需要管理员手动启用。这可以通过以下命令完成
ceph dashboard ac-user-enable <username>
访问仪表板
现在,您可以通过将 Web 浏览器(启用 JavaScript)指向运行管理器实例的任何主机名或 IP 地址和所选 TCP 端口来访问仪表板:例如,http(s)://<$IP>:<$PORT>/。
仪表板页面显示并请求预定义的用户名为和密码。
启用对象网关管理前端
当 RGW 使用 cephadm 部署时,仪表板使用的 RGW 凭据将自动配置。您也可以手动强制设置凭据,如下所示
ceph dashboard set-rgw-credentials
这将为系统中的每个 realm 创建一个 UID 为 dashboard 的 RGW 用户。
如果您在 RGW admin API 中配置了自定义的“admin”资源,您也应该在此处进行设置
ceph dashboard set-rgw-api-admin-resource <admin_resource>
如果您的对象网关设置中使用了自签名证书,您应该在仪表板中禁用证书验证,以避免因未知 CA 签名的证书或与主机名不匹配的证书而导致的拒绝连接
ceph dashboard set-rgw-api-ssl-verify False
要为 RGW 网关设置自定义主机名或地址,请相应地设置 RGW_HOSTNAME_PER_DAEMON 的值
ceph dashboard set-rgw-hostname <gateway_name> <hostname>
可以使用以下命令取消设置
ceph dashboard unset-rgw-hostname <gateway_name>
如果对象网关处理请求的时间过长,并且仪表板出现超时,您可以根据需要设置超时值
ceph dashboard set-rest-requests-timeout <seconds>
默认值为 45 秒。
启用 iSCSI 管理
Ceph Dashboard 可以使用 Ceph iSCSI 网关 的 rbd-target-api 服务提供的 REST API 来管理 iSCSI 目标。请确保它已安装并在 iSCSI 网关上启用。
注意
Ceph Dashboard 的 iSCSI 管理功能依赖于 ceph-iscsi 项目的最新版本 3。请确保您的操作系统提供正确的版本,否则仪表板将不会启用管理功能。
如果 ceph-iscsi REST API 配置为 HTTPS 模式并使用自签名证书,您需要在访问 ceph-iscsi API 时配置仪表板以避免 SSL 证书验证。
要禁用 API SSL 验证,请运行以下命令
ceph dashboard set-iscsi-api-ssl-verification false
必须使用以下命令定义可用的 iSCSI 网关
ceph dashboard iscsi-gateway-list
# Gateway URL format for a new gateway: <scheme>://<username>:<password>@<host>[:port]
ceph dashboard iscsi-gateway-add -i <file-containing-gateway-url> [<gateway_name>]
ceph dashboard iscsi-gateway-rm <gateway_name>
启用 Grafana 仪表板嵌入
Grafana 从 Prometheus 拉取数据。尽管 Grafana 可以使用其他数据源,但我们提供的 Grafana 仪表板包含特定于 Prometheus 的查询。因此,我们的 Grafana 仪表板需要 Prometheus 作为数据源。Ceph Prometheus 模块模块以 Prometheus 暴露格式导出其数据。这些 Grafana 仪表板依赖于 Prometheus 模块和 Node exporter 的指标名称。Node exporter 是一个单独的应用程序,提供机器指标。
注意
Prometheus 的安全模型假定不受信任的用户可以访问 Prometheus HTTP 端点和日志。不受信任的用户可以访问 Prometheus 收集的数据库中包含的所有(元)数据,以及各种操作和调试信息。
但是,Prometheus 的 HTTP API 仅限于只读操作。配置不能通过 API 更改,并且不暴露秘密。此外,Prometheus 还有一些内置措施来减轻拒绝服务攻击的影响。
请参阅 Prometheus 的安全模型 <https://prometheus.ac.cn/docs/operating/security/> 以获取更详细的信息。
使用 cephadm 进行安装和配置
Grafana 和 Prometheus 可以使用 Cephadm 进行安装。它们将由 cephadm 自动配置。有关如何使用 cephadm 安装和配置 Prometheus 和 Grafana 的更多详细信息,请参阅 监控服务文档。
手动安装和配置
以下过程描述了如何手动配置 Grafana 和 Prometheus。在您在适当的主机上安装 Prometheus、Grafana 和 Node exporter 后,请继续执行以下步骤。
通过运行以下命令启用作为 Ceph Manager 模块的 Ceph Exporter
ceph mgr module enable prometheus更多详细信息可以在 Prometheus 模块的文档中找到。
将相应的抓取配置添加到 Prometheus。它可能看起来像这样
global: scrape_interval: 5s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'ceph' static_configs: - targets: ['localhost:9283'] - job_name: 'node-exporter' static_configs: - targets: ['localhost:9100']
注意
请注意,在上面的示例中,Prometheus 配置为从自身(端口 9090)、导出 Ceph 内部数据的 Ceph 管理器模块 prometheus(端口 9283)以及为每个主机提供操作系统和硬件指标的 Node Exporter(端口 9100)抓取数据。
根据您的配置,您可能需要更改 Node Exporter 中的主机名或添加额外的配置条目。您不太可能需要更改默认的 TCP 端口。
此外,您不需要为 Ceph 特定数据拥有多个目标,这些数据由 prometheus mgr 模块提供。但建议配置 Prometheus 从所有现有的 Ceph 管理器抓取 Ceph 特定数据。这可以实现内置的高可用性机制,以便如果一个 Ceph Manager 关闭,在管理器主机上运行的服务将自动在另一个管理器主机上重新启动。
将 Prometheus 作为数据源添加到 Grafana 使用 Grafana Web UI。
重要
数据源必须命名为“Dashboard1”。
使用以下命令安装 vonage-status-panel 和 grafana-piechart-panel 插件
grafana-cli plugins install vonage-status-panel grafana-cli plugins install grafana-piechart-panel
将仪表板添加到 Grafana
可以通过导入仪表板 JSON 文件将仪表板添加到 Grafana。使用以下命令下载 JSON 文件
wget https://raw.githubusercontent.com/ceph/ceph/main/monitoring/ceph-mixin/dashboards_out/<Dashboard-name>.json您可以在此处找到各种仪表板 JSON 文件。
例如,对于 ceph-cluster 概述,您可以使用
wget https://raw.githubusercontent.com/ceph/ceph/main/monitoring/ceph-mixin/dashboards_out/ceph-cluster.json您也可以编写自己的仪表板。
在
/etc/grafana/grafana.ini中配置匿名模式[auth.anonymous] enabled = true org_name = Main Org. org_role = Viewer
在较新版本的 Grafana(从 6.2.0-beta1 开始)中,引入了一个名为
allow_embedding的新设置。此设置必须明确设置为true,才能使 Ceph Dashboard 中的 Grafana 集成正常工作,因为默认值为false。[security] allow_embedding = true
启用 RBD 镜像监控
RBD 镜像的监控默认禁用,因为它可能会显著影响性能。有关更多信息,请参阅 Ceph 健康检查。禁用后,Grafana 中的概览和详细信息仪表板将为空,并且 Prometheus 中将不可见指标。
配置仪表板
设置 Grafana 和 Prometheus 后,您需要配置 Ceph Dashboard 将用于访问 Grafana 的连接信息。
您需要告诉仪表板 Grafana 实例正在运行/部署的 URL
ceph dashboard set-grafana-api-url <grafana-server-url> # default: ''
URL 格式为:<protocol>:<IP-address>:<port>
注意
Ceph Dashboard 通过 iframe HTML 元素嵌入 Grafana 仪表板。如果 Grafana 在没有 SSL/TLS 支持的情况下配置,并且仪表板启用了 SSL 支持(这是默认设置),大多数浏览器将阻止嵌入不安全的内容。如果您在按照上述说明启用后无法看到嵌入的 Grafana 仪表板,请查阅浏览器文档以了解如何取消阻止混合内容。或者,考虑在 Grafana 中启用 SSL/TLS 支持。
如果您为 Grafana 使用自签名证书,请在仪表板中禁用证书验证以避免拒绝连接,这可能是由未知 CA 签名的证书或与主机名不匹配的证书导致的
ceph dashboard set-grafana-api-ssl-verify False
您也可以直接访问 Grafana 来监控您的集群。
注意
Ceph Dashboard 配置信息也可以取消设置。例如,要清除我们上面配置的 Grafana API URL
ceph dashboard reset-grafana-api-url
浏览器的备用 URL
Ceph Dashboard 后端需要 Grafana URL,以便在前端加载它们之前验证 Grafana 仪表板是否存在。由于 Grafana 在 Ceph Dashboard 中的实现方式,这意味着需要两个工作连接才能在 Ceph Dashboard 中看到 Grafana 图表
后端(Ceph Mgr 模块)需要验证请求图表的存在。如果此请求成功,它会通知前端可以安全访问 Grafana。
然后,前端使用 iframe 直接从用户的浏览器请求 Grafana 图表。Grafana 实例直接访问,无需通过 Ceph Dashboard 绕行。
现在,您的环境可能会使用户的浏览器难以直接访问在 Ceph Dashboard 中配置的 URL。为了解决这个问题,可以配置一个单独的 URL,该 URL 将仅用于告诉前端(用户的浏览器)它应该使用哪个 URL 来访问 Grafana。此设置不会自动更改,不像 GRAFANA_API_URL,它是由 Cephadm 设置的(仅当使用 cephadm 部署监控服务时)。
要更改返回给前端的 URL,请发出以下命令
ceph dashboard set-grafana-frontend-api-url <grafana-server-url>
如果未为此选项设置任何值,它将简单地回退到 GRAFANA_API_URL 选项的值。如果设置,它将指示浏览器使用此 URL 访问 Grafana。
启用 SAML2 单点登录 (SSO)
Ceph Dashboard 支持通过 SAML 2.0 协议进行外部用户身份验证。您需要首先创建用户帐户并将其与所需的角色关联,因为授权由仪表板执行。但是,身份验证过程可以由现有的身份提供者 (IdP) 执行。
注意
Ceph Dashboard SSO 支持依赖于 onelogin 的 python-saml 库。请确保此库已安装在您的系统上,无论是通过您的发行版包管理还是通过 Python 的 pip 安装程序。
要在 Ceph Dashboard 上配置 SSO,您应该使用以下命令
ceph dashboard sso setup saml2 <ceph_dashboard_base_url> <idp_metadata> {<idp_username_attribute>} {<idp_entity_id>} {<sp_x_509_cert>} {<sp_private_key>}
参数
<ceph_dashboard_base_url>:Ceph Dashboard 可访问的基本 URL(例如,https://cephdashboard.local)
<idp_metadata>:远程 (http://, https://) 或本地 (file://) 路径或 IdP 元数据 XML 的内容(例如,https://myidp/metadata, file:///home/myuser/metadata.xml)。
<idp_username_attribute> (可选):应该用于从身份验证响应中获取用户名的属性。默认为 uid。
<idp_entity_id> (可选):当 IdP 元数据中存在多个实体 ID 时使用此项。
<sp_x_509_cert> / <sp_private_key> (可选):Ceph Dashboard(服务提供者)用于签名和加密的证书文件路径(这些文件路径应可从活动的 ceph-mgr 实例访问)。
注意
SAML 请求的颁发者值将遵循以下模式:<ceph_dashboard_base_url>/auth/saml2/metadata
要显示当前的 SAML 2.0 配置,请使用以下命令
ceph dashboard sso show saml2
注意
有关 onelogin_settings 的更多信息,请查看 onelogin 文档。
禁用 SSO
ceph dashboard sso disable
检查 SSO 是否启用
ceph dashboard sso status
启用 SSO
ceph dashboard sso enable saml2
启用 OAuth2 单点登录 (SSO)
Ceph Dashboard 支持通过 OAuth 协议进行外部用户身份验证。您需要启用 Cephadm 作为您的编排器,并激活 管理网关和 OAuth2 代理服务。
从选定的 IDP(Keycloak 是当前的推荐和测试解决方案),配置在 oauth2-proxy 服务配置中使用的 IDP 客户端,以验证登录 URL 的以下重定向 URL:https://<host_name>|<IP_address>/oauth2/callback 和以下注销 URL:https://<host_name>|<IP_address>/ /oauth2/sign_out
同样,从 IDP 中,我们需要一个具有有效角色的用户,该用户将用于执行授权,我们可以创建一个类似“administator”的角色,以向用户提供管理员级别的访问权限。
确保 enable_auth 标志已包含在 ceph orch apply mgmt-gateway 命令中,并且通过运行以下形式的命令已将其设置为 true
ceph orch apply mgmt-gateway --enable_auth=true --placement=<ceph-node-02>
禁用 SSO
ceph dashboard sso disable
检查 SSO 是否启用
ceph dashboard sso status
启用 SSO
ceph dashboard sso enable oauth2
启用 Prometheus 警报
要使用 Prometheus 进行警报,您必须定义警报规则。这些规则由Alertmanager管理。如果您尚未使用 Alertmanager,请安装它,因为它接收和管理来自 Prometheus 的警报。
Alertmanager 功能可以通过三种不同的方式被仪表板使用
使用仪表板的通知接收器。
使用 Prometheus Alertmanager API。
同时使用这两个来源。
所有三种方法都会通知您警报。如果您同时使用这两个来源,您将不会收到两次通知,但您至少需要使用 Alertmanager API 才能管理静默。
使用仪表板的通知接收器
这允许您根据 Alertmanager 的配置获取通知。一旦发出通知,您将在仪表板内部收到通知,但您无法管理警报。
将仪表板接收器和新路由添加到您的 Alertmanager 配置中。它应该看起来像这样
route: receiver: 'ceph-dashboard' ... receivers: - name: 'ceph-dashboard' webhook_configs: - url: '<url-to-dashboard>/api/prometheus_receiver'确保 Alertmanager 认为您的仪表板的 SSL 证书有效。有关正确配置的更多信息,请查看 <http_config> 文档。
使用 Prometheus 和 Alertmanager 的 API
这允许您管理警报和静默,并将启用“集群”菜单条目的“监控”部分中的“活动警报”、“所有警报”以及“静默”选项卡。
警报可以按名称、作业、严重性、状态和开始时间排序。不幸的是,无法知道警报管理器根据您的配置何时通过通知发出警报,这就是仪表板将在警报有任何可见更改时通知用户,并通知已更改的警报的原因。
静默可以按 ID、创建者、状态、开始时间、更新时间和结束时间排序。可以通过多种方式创建静默,也可以使其过期。
从头开始创建
基于选定的警报
从已过期静默重新创建
更新静默(这将重新创建并使其过期(默认 Alertmanager 行为))
要使用它,请指定 Alertmanager 服务器的主机和端口
ceph dashboard set-alertmanager-api-host <alertmanager-host:port> # default: ''例如
ceph dashboard set-alertmanager-api-host 'https://:9093'为了能够查看所有已配置的警报,您需要配置 Prometheus API 的 URL。使用此 API,UI 还将帮助您验证新的静默是否与相应的警报匹配。
ceph dashboard set-prometheus-api-host <prometheus-host:port> # default: ''例如
ceph dashboard set-prometheus-api-host 'https://:9090'设置主机后,刷新浏览器的仪表板窗口或选项卡。
使用两种方法
这两种方法的行为配置方式是它们不应相互干扰,尽管可能会弹出烦人的重复通知。
如果您在 Prometheus 或 Alertmanager 设置中使用了自签名证书,您应该在仪表板中禁用证书验证,以避免因未知 CA 签名的证书或与主机名不匹配的证书而导致的拒绝连接。
对于 Prometheus
ceph dashboard set-prometheus-api-ssl-verify False
对于 Alertmanager
ceph dashboard set-alertmanager-api-ssl-verify False
用户和角色管理
密码策略
默认情况下,密码策略功能已启用,其中包括以下检查
密码长度是否超过 N 个字符?
新旧密码是否相同?
密码策略功能可以完全打开或关闭
ceph dashboard set-pwd-policy-enabled <true|false>
以下单独的检查也可以打开或关闭
ceph dashboard set-pwd-policy-check-length-enabled <true|false>
ceph dashboard set-pwd-policy-check-oldpwd-enabled <true|false>
ceph dashboard set-pwd-policy-check-username-enabled <true|false>
ceph dashboard set-pwd-policy-check-exclusion-list-enabled <true|false>
ceph dashboard set-pwd-policy-check-complexity-enabled <true|false>
ceph dashboard set-pwd-policy-check-sequential-chars-enabled <true|false>
ceph dashboard set-pwd-policy-check-repetitive-chars-enabled <true|false>
此外,以下选项可用于配置密码策略。
最小密码长度(默认为 8)
ceph dashboard set-pwd-policy-min-length <N>
最小密码复杂度(默认为 10)
ceph dashboard set-pwd-policy-min-complexity <N>密码复杂度通过对密码中的每个字符进行分类来计算。复杂度计数从 0 开始。字符按以下规则按给定顺序进行评级。
如果字符是数字,则增加 1。
如果字符是小写 ASCII 字符,则增加 1。
如果字符是大写 ASCII 字符,则增加 2。
如果字符是特殊字符,如
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~,则增加 3。如果字符未被前面任何规则分类,则增加 5。
不允许在密码中使用的逗号分隔单词列表
ceph dashboard set-pwd-policy-exclusion-list <word>[,...]
用户账户
Ceph Dashboard 支持多个用户帐户。每个用户帐户包含一个用户名、一个密码(使用 bcrypt 加密存储)、一个可选名称和一个可选电子邮件地址。
如果通过 Web UI 创建新用户,可以设置一个选项,要求用户在首次登录时必须分配新密码。
用户帐户存储在监视器的配置数据库中,并且对所有 ceph-mgr 实例可用。
我们提供了一组 CLI 命令来管理用户帐户
显示用户:
ceph dashboard ac-user-show [<username>]创建用户:
ceph dashboard ac-user-create [--enabled] [--force-password] [--pwd_update_required] <username> -i <file-containing-password> [<rolename>] [<name>] [<email>] [<pwd_expiration_date>]要绕过密码策略检查,请使用 force-password 选项。添加 pwd_update_required 选项,以便新创建的用户在首次登录后必须更改其密码。
删除用户:
ceph dashboard ac-user-delete <username>更改密码:
ceph dashboard ac-user-set-password [--force-password] <username> -i <file-containing-password>更改密码哈希:
ceph dashboard ac-user-set-password-hash <username> -i <file-containing-password-hash>哈希必须是 bcrypt 哈希和盐,例如
$2b$12$Pt3Vq/rDt2y9glTPSV.VFegiLkQeIpddtkhoFetNApYmIJOY8gau2。这可以用于从外部数据库导入用户。修改用户(姓名和电子邮件):
ceph dashboard ac-user-set-info <username> <name> <email>禁用用户:
ceph dashboard ac-user-disable <username>启用用户:
ceph dashboard ac-user-enable <username>
用户角色和权限
用户帐户与一组角色相关联,这些角色定义了可以访问哪些仪表板功能。
仪表板功能/模块被分组在安全范围内。安全范围是预定义且静态的。当前可用的安全范围是
hosts:包括与
Hosts菜单项相关的所有功能。config-opt:包括与 Ceph 配置选项管理相关的所有功能。
pool:包括与存储池管理相关的所有功能。
osd:包括与 OSD 管理相关的所有功能。
monitor:包括与监视器管理相关的所有功能。
rbd-image:包括与 RBD 镜像管理相关的所有功能。
rbd-mirroring:包括与 RBD 镜像管理相关的所有功能。
iscsi:包括与 iSCSI 管理相关的所有功能。
rgw:包括与 RADOS Gateway (RGW) 管理相关的所有功能。
cephfs:包括与 CephFS 管理相关的所有功能。
nfs-ganesha:包括与 NFS Ganesha 管理相关的所有功能。
manager:包括与 Ceph Manager 管理相关的所有功能。
log:包括与 Ceph 日志管理相关的所有功能。
grafana:包括与 Grafana 代理相关的所有功能。
prometheus:包括与 Prometheus 警报管理相关的所有功能。
dashboard-settings:允许更改仪表板设置。
角色指定安全范围和一组权限之间的映射。权限有四种类型
读取
create
更新
删除
请参阅下面的角色规范示例,以 Python 字典的形式
# example of a role
{
'role': 'my_new_role',
'description': 'My new role',
'scopes_permissions': {
'pool': ['read', 'create'],
'rbd-image': ['read', 'create', 'update', 'delete']
}
}
以上角色规定用户对存储池管理相关功能拥有读取和创建权限,对 RBD 镜像管理相关功能拥有完全权限。
仪表板提供了一组预定义的角色,我们称之为系统角色,这些角色可以在全新的 Ceph Dashboard 安装后立即使用。
系统角色列表如下
administrator:允许所有安全范围的完全权限。
read-only:允许除仪表板设置之外的所有安全范围的读取权限。
block-manager:允许对 rbd-image、rbd-mirroring 和 iscsi 范围的完全权限。
rgw-manager:允许对 rgw 范围的完全权限
cluster-manager:允许对 hosts、osd、monitor、manager 和 config-opt 范围的完全权限。
pool-manager:允许对 pool 范围的完全权限。
cephfs-manager:允许对 cephfs 范围的完全权限。
可用角色列表可以通过以下命令获取
ceph dashboard ac-role-show [<rolename>]
您还可以使用 CLI 创建新角色。可用命令如下
创建角色:
ceph dashboard ac-role-create <rolename> [<description>]删除角色:
ceph dashboard ac-role-delete <rolename>向角色添加范围权限:
ceph dashboard ac-role-add-scope-perms <rolename> <scopename> <permission> [<permission>...]从角色删除范围权限:
ceph dashboard ac-role-del-scope-perms <rolename> <scopename>
要将角色分配给用户,可以使用以下命令
设置用户角色:
ceph dashboard ac-user-set-roles <username> <rolename> [<rolename>...]向用户添加角色:
ceph dashboard ac-user-add-roles <username> <rolename> [<rolename>...]从用户删除角色:
ceph dashboard ac-user-del-roles <username> <rolename> [<rolename>...]
用户和自定义角色创建示例
在本节中,我们将展示一个完整的示例,其中包含创建可以管理 RBD 镜像、查看和创建 Ceph 存储池以及对其他范围具有只读访问权限的用户帐户的命令。
创建用户:
ceph dashboard ac-user-create bob -i <file-containing-password>创建角色并指定范围权限:
ceph dashboard ac-role-create rbd/pool-manager ceph dashboard ac-role-add-scope-perms rbd/pool-manager rbd-image read create update delete ceph dashboard ac-role-add-scope-perms rbd/pool-manager pool read create
将角色与用户关联:
ceph dashboard ac-user-set-roles bob rbd/pool-manager read-only
代理配置
在具有多个 ceph-mgr 实例的 Ceph 集群中,只有在当前活动的 ceph-mgr 守护进程上运行的仪表板才会处理传入请求。与备用 ceph-mgr 实例上仪表板的 TCP 端口的连接将收到 HTTP 重定向 (303) 到活动管理器的仪表板 URL。这使您可以将浏览器指向任何 ceph-mgr 实例以访问仪表板。
如果您想建立一个固定的 URL 来访问仪表板,或者您不想允许直接连接到管理器节点,您可以设置一个代理,该代理会自动将传入请求转发到活动的 ceph-mgr 实例。
配置 URL 前缀
如果您通过反向代理访问仪表板,您可能希望在 URL 前缀下提供服务。要让仪表板使用包含您前缀的超链接,您可以设置 url_prefix 设置
ceph config set mgr mgr/dashboard/url_prefix $PREFIX
这样您就可以通过 http://$IP:$PORT/$PREFIX/ 访问仪表板。
禁用重定向
如果仪表板位于像 HAProxy 这样的负载均衡代理后面,您可能希望禁用重定向,以防止内部(无法解析的)URL 发布到前端客户端的情况。使用以下命令使仪表板响应 HTTP 错误(默认 500)而不是重定向到活动仪表板
ceph config set mgr mgr/dashboard/standby_behaviour "error"
要将设置重置为默认重定向,请使用以下命令
ceph config set mgr mgr/dashboard/standby_behaviour "redirect"
配置错误状态码
禁用重定向后,您可能希望自定义备用仪表板的 HTTP 状态代码。为此,您需要运行命令
ceph config set mgr mgr/dashboard/standby_error_status_code 503
重定向前将 IP 地址解析为主机名
从备用仪表板到活动仪表板的重定向是通过管理器的 IP 地址完成的,而不是通过管理器的 hostname。在虚拟化环境中,基于 IP 地址的重定向与基于 hostname 的解析相比,减少了错误发生的几率。由于基于 hostname 解析的错误风险增加,默认情况下禁用 hostname 解析选项。
然而,在某些情况下,通过主机名重定向可能很有用。例如,如果配置的 TLS 证书仅与这些主机的 hostname 匹配,而不与 IP 地址匹配,则主机名重定向会更好。
要通过管理器的 hostname 激活从备用仪表板到活动仪表板的重定向,请运行以下命令
ceph config set mgr mgr/dashboard/redirect_resolve_ip_addr True
通过运行以下命令禁用主机名重定向
ceph config set mgr mgr/dashboard/redirect_resolve_ip_addr False
警告
如果您尝试使用上述命令激活重定向并收到错误消息 EINVAL: 无法识别的 配置 选项 'mgr/dashboard/redirect_resolve_ip_addr',则您可能正在运行早于 17.2.6 版本的 Ceph。此功能在 17.2.6 中引入,在此提交中:https://github.com/ceph/ceph/pull/48219。
HAProxy 配置示例
下面您将找到一个使用 HAProxy 进行 SSL/TLS 直通的配置示例。
请注意,此配置在以下条件下工作。如果仪表板发生故障转移,前端客户端可能会收到 HTTP 重定向 (303) 响应,并被重定向到无法解析的主机。这发生在两次 HAProxy 健康检查之间发生故障转移时。在这种情况下,之前活动的仪表板节点将响应 303,该 303 指向新的活动节点。为防止这种情况发生,您应该考虑禁用备用节点上的重定向。
defaults
log global
option log-health-checks
timeout connect 5s
timeout client 50s
timeout server 450s
frontend dashboard_front
mode http
bind *:80
option httplog
redirect scheme https code 301 if !{ ssl_fc }
frontend dashboard_front_ssl
mode tcp
bind *:443
option tcplog
default_backend dashboard_back_ssl
backend dashboard_back_ssl
mode tcp
option httpchk GET /
http-check expect status 200
server x <HOST>:<PORT> check check-ssl verify none
server y <HOST>:<PORT> check check-ssl verify none
server z <HOST>:<PORT> check check-ssl verify none
审计 API 请求
REST API 可以将 PUT、POST 和 DELETE 请求记录到 Ceph 审计日志中。此功能默认禁用,但可以使用以下命令启用
ceph dashboard set-audit-api-enabled <true|false>
如果启用,每个请求将记录以下参数
from - 请求的来源,例如 https://[::1]:44410
path - REST API 路径,例如 /api/auth
method - 例如 PUT、POST 或 DELETE
user - 用户的名称,否则为“None”
请求负载(参数及其值)的日志记录默认启用。执行以下命令可禁用此行为
ceph dashboard set-audit-api-log-payload <true|false>
日志条目可能看起来像这样
2018-10-22 15:27:01.302514 mgr.x [INF] [DASHBOARD] from='https://[::ffff:127.0.0.1]:37022' path='/api/rgw/user/klaus' method='PUT' user='admin' params='{"max_buckets": "1000", "display_name": "Klaus Mustermann", "uid": "klaus", "suspended": "0", "email": "klaus.mustermann@ceph.com"}'
NFS-Ganesha 管理
仪表板需要启用 NFS 模块,该模块将用于管理 NFS 集群和 NFS 导出。有关更多信息,请查看 通过 NFS 导出 CephFS 和 RGW。
插件
插件以模块化和松散耦合的方式扩展了 Ceph Dashboard 的功能。
功能开关
此插件允许按需启用或禁用 Ceph Dashboard 中的某些功能。当功能被禁用时
其前端元素(网页、菜单项、图表等)将隐藏。
其关联的 REST API 端点将拒绝任何进一步的请求(404,未找到错误)。
此插件的主要目的是允许对仪表板公开的工作流进行临时自定义。此外,它还可以通过最小的配置负担和对服务没有影响的方式动态启用实验性功能。
可以启用/禁用的功能列表是
- 块 (RBD):
镜像管理:
rbd镜像:
mirroringiSCSI:
iscsi
文件系统 (Cephfs):
cephfs对象 (RGW):
rgw(包括守护进程、用户和存储桶管理)。NFS:
nfs-ganesha导出。
默认情况下,所有功能都已启用。
检索功能列表及其当前状态
ceph dashboard feature status
Feature 'cephfs': 'enabled'
Feature 'iscsi': 'enabled'
Feature 'nvmeof': 'enabled'
Feature 'mirroring': 'enabled'
Feature 'rbd': 'enabled'
Feature 'rgw': 'enabled'
Feature 'nfs': 'enabled'
启用或禁用单个或多个功能的状态
ceph dashboard feature disable iscsi mirroring
Feature 'iscsi': disabled
Feature 'mirroring': disabled
功能状态更改后,API REST 端点会立即响应此更改,但前端 UI 元素可能需要长达二十 (20) 秒才能反映更改。
调试
此插件允许根据调试模式自定义仪表板的行为。可以使用以下命令启用、禁用或检查它
ceph dashboard debug status
Debug: 'disabled'
ceph dashboard debug enable
Debug: 'enabled'
ceph dashboard debug disable
Debug: 'disabled'
默认情况下,它处于禁用状态。这是生产部署的推荐设置。如果需要,可以在无需重启的情况下启用调试模式。目前,禁用调试模式等同于 CherryPy production 环境,而启用时,它使用 test_suite 默认值(请参阅 CherryPy 环境以获取更多详细信息)。
它还为不支持此功能的 Cherrypy 版本添加了请求 uuid (unique_id)。此外,它还将 unique_id 打印到错误响应和日志消息中。
每日消息 (MOTD)
在 Ceph Dashboard 顶部显示已配置的“每日消息”(MOTD)。
MOTD 的重要性可以通过其严重性进行配置,即 info、warning 或 danger。MOTD 可以在给定时间后过期,这意味着它将不再显示在 UI 中。使用以下语法指定过期时间:Ns|m|h|d|w,其中 N 是一个整数,后跟秒、分钟、小时、天和周。如果 MOTD 应在 2 小时后过期,请使用 2h;如果为 5 周,则使用 5w。使用 0 配置永不过期的 MOTD。
要配置 MOTD,请运行以下命令
ceph dashboard motd set <severity:info|warning|danger> <expires> <message>
显示已配置的 MOTD
ceph dashboard motd get
要清除已配置的 MOTD,请运行
ceph dashboard motd clear
严重性为 info 或 warning 的 MOTD 可以由用户关闭。info MOTD 在清除本地存储 cookie 或显示具有不同严重性的新 MOTD 之前不会显示。严重性为 warning 的 MOTD 将在新会话中再次显示。
仪表板故障排除
查找仪表板
如果您不确定 Ceph Dashboard 的位置,请运行以下命令
ceph mgr services | jq .dashboard
"https://host:port"
该命令返回 Ceph Dashboard 的 URL:https://<host>:<port>/
注意
许多 Ceph 工具以 JSON 格式返回结果。我们建议您安装 jq 命令行工具,以方便处理 JSON 数据。
访问仪表板
如果您无法访问 Ceph Dashboard,请运行以下命令
验证 Ceph Dashboard 模块是否已启用
ceph mgr module ls | jq .enabled_modules确保 Ceph Dashboard 模块列在命令的返回值中。上面命令的示例截断输出
[ "dashboard", "iostat", "restful" ]
如果未列出,请使用以下命令激活模块
ceph mgr module enable dashboard检查 Ceph Dashboard 和/或
ceph-mgr日志文件是否存在任何错误。检查
ceph-mgr日志消息是否写入文件ceph config get mgr log_to_filetrue获取日志文件的位置(默认是
/var/log/ceph/<cluster-name>-<daemon-name>.log)ceph config get mgr log_file/var/log/ceph/$cluster-$name.log
确保 SSL/TLS 支持配置正确
检查 SSL/TLS 支持是否启用
ceph config get mgr mgr/dashboard/ssl如果命令返回
true,请通过以下方式验证证书是否存在ceph config-key get mgr/dashboard/crt和
ceph config-key get mgr/dashboard/key如果它不返回
true,请运行以下命令生成自签名证书或遵循SSL/TLS 支持中概述的说明ceph dashboard create-self-signed-cert
仪表板登录故障
如果您无法登录 Ceph Dashboard 并收到以下错误,请按照下面的程序检查
检查您的用户凭据是否正确。如果您在尝试登录 Ceph Dashboard 时看到上述通知消息,则很可能您使用了错误的凭据。仔细检查您的用户名和密码,并确保您的键盘大写锁定键没有意外启用。
如果您的用户凭据正确,但您遇到相同的错误,请检查用户帐户是否存在
ceph dashboard ac-user-show <username>此命令返回您的用户数据。如果用户不存在,它将打印
Error ENOENT: User <username> does not exist
检查用户是否启用
ceph dashboard ac-user-show <username> | jq .enabledtrue检查
enabled是否设置为true。如果用户未启用,请运行ceph dashboard ac-user-enable <username>
有关更多信息,请参阅用户和角色管理。
仪表板功能不工作
当后端发生错误时,您通常会在前端收到错误通知。请按照以下场景进行调试。
检查 Ceph Dashboard 和
ceph-mgr日志文件是否存在任何错误。可以通过搜索关键字(例如 500 Internal Server Error,后跟traceback)来找到这些错误。回溯的末尾包含有关发生了什么精确错误的更多详细信息。检查您的网络浏览器的 JavaScript 控制台是否存在任何错误。
Ceph Dashboard 日志
仪表板调试标志
启用此标志后,错误回溯将包含在后端响应中。
要通过 Ceph Dashboard 启用此标志,请从“集群”导航到“管理器模块”。选择“仪表板模块”并单击编辑按钮。选中“调试”复选框并更新。
要通过 CLI 启用它,请运行以下命令
ceph dashboard debug enable
设置仪表板模块的日志级别
将日志级别设置为调试会使日志更加详细,有助于调试。
增加管理器守护进程的日志级别
ceph tell mgr config set debug_mgr 20通过仪表板或 CLI 调整 Ceph Dashboard 模块的日志级别
从 Cluster 导航到 Manager modules。选择 Dashboard module 并单击编辑按钮。修改
log_level配置。要通过 CLI 调整它,请运行以下命令
ceph config set mgr mgr/dashboard/log_level debug
3. 高日志级别可能会导致大量的日志量,这很容易填满您的文件系统或中央日志存储。为一小时、一天或一周后设置日历提醒,以恢复临时日志增加。任何当前非默认设置都可以通过以下命令显示
ceph config dump | grep mgr/dashboard/log_level
- ::
… mgr advanced mgr/dashboard/log_level debug …
ceph config reset 11
在仪表板中启用集中式日志记录
要了解有关集中式日志记录的更多信息,请参阅 Ceph 中的集中式日志记录
使用“创建服务”选项在任何特定主机上创建 Loki 服务。
同样创建 Promtail 服务,该服务将默认部署在所有正在运行的主机上。
要查看调试级别消息和信息级别事件,请通过 CLI 运行以下命令
ceph config set mgr mgr/cephadm/log_to_cluster_level debug要启用日志记录到文件,请通过 CLI 运行以下命令
ceph config set global log_to_file true ceph config set global mon_cluster_log_to_file true
单击“集群”->“日志”下的“守护进程日志”选项卡。
单击“日志浏览器”按钮,您可以在其中找到一些预定义的标签,例如文件名、作业等,这些标签可以帮助您一次性查询日志。
您可以使用 LogQL 查询日志以进行高级搜索并执行一些计算 - https://grafana.org.cn/docs/loki/latest/logql/。
从仪表板报告问题
Ceph-Dashboard 提供两种在 Ceph 问题跟踪器中创建问题的方式,要么使用 Ceph 命令行界面,要么使用 Ceph Dashboard 用户界面。
要在 Ceph 问题跟踪器中创建问题,用户需要在问题跟踪器上拥有一个帐户。在 Ceph 问题跟踪器中的 my account 选项卡下,用户可以看到他们的 API 访问密钥。此密钥用于创建新问题时的身份验证。要存储 Ceph API 访问密钥,请在 CLI 中运行
``ceph dashboard set-issue-tracker-api-key -i <file-containing-key>``
然后成功更新后,您可以使用以下命令创建问题
``ceph dashboard create issue <project> <tracker_type> <subject> <description>``
可以创建问题的可用项目有:#. dashboard #. block #. object #. file_system #. ceph_manager #. orchestrator #. ceph_volume #. core_ceph
可用的跟踪器类型有:#. bug #. feature
然后由用户设置主题和描述。
用户还可以使用仪表板用户界面创建问题。导航栏右上角的设置图标下拉菜单中有一个“提出问题”选项。单击它后,会打开一个模式对话框,其中包含从各自的下拉菜单中选择项目和跟踪器的选项。用户添加主题和多行描述。然后用户可以提交问题。