使用 Prometheus 监控 MinIO 服务器

Monitor MinIO server with Prometheus

Prometheus 是一个开源监控平台,可帮助您分析和监控基础设施组件。Prometheus 服务器通过抓取 HTTP 端点从目标收集指标。

Minio 现在内置支持在未经身份验证的端点上导出与 Prometheus 兼容的数据。这使得无需共享服务器凭据即可监控 Minio 服务器部署,并且无需运行外部 Prometheus 导出器。

在这篇文章中,我们将了解 Minio Prometheus 端点下可用的数据点,并了解如何使用这些字段为基于 Minio 的存储基础设施创建关键警报。最后,我们还将了解如何使用 Grafana 可视化数据点。

设置 Minio 和 Prometheus

设置 Prometheus 以抓取 Minio 端点非常简单。请遵循 [如何使用 Prometheus 监控 Minio 服务器] 指南,使用 Prometheus 设置 Minio 服务器监控。

请注意,Prometheus 支持是在 Minio 服务器版本 RELEASE.2018–05–11T00–29–24Z 中添加的,因此您需要运行此版本或更高版本。要开始使用 Minio,请参考 Minio 快速入门文档

Minio Prometheus 导出器字段

Minio 使用 Prometheus Go 客户端 以及内部管理数据来检测和导出数据。以下是您可以在 Minio Prometheus 端点中获得的数据点。

  • 正常运行时间 (适用于 Minio 服务器/网关)

process_start_time_seconds:此项存储 Minio 服务器进程启动以来的时间。您可以将其与 Prometheus 查询语言一起使用,轻松生成有趣的见解。例如,使用 time() — process_start_time_seconds 获取 Minio 服务器正常运行时间,并使用 changes(process_uptime_seconds[30m]) 检测崩溃循环。

  • 存储 (仅适用于 Minio 服务器实例)

minio_disk_storage_used_bytes:这是 Minio 服务器使用的总磁盘存储空间(以字节为单位)。

如果启用了 缓存,则可以使用以下其他指标

minio_disk_cache_storage_bytes:这是当前 Minio 实例可用的总缓存容量(以字节为单位)。

minio_disk_cache_storage_free_bytes:这是当前 Minio 实例可用的空闲缓存容量(以字节为单位)。

  • 请求持续时间 (适用于 Minio 服务器/网关)

请求持续时间信息使用 Prometheus 直方图 度量类型按请求类型拆分。此指标的基本名称为 minio_http_requests_duration_seconds。您可以将 _bucket 添加到基本名称以获取所有请求类型的累积计数器。因此,minio_http_requests_duration_seconds_bucket 将显示如下内容

其他选项包括 minio_http_requests_duration_seconds_sum,它显示当前服务所有 HTTP 请求所花费的总时间(以秒为单位),以及 minio_http_requests_duration_seconds_count,它显示已服务的所有请求的总和。

  • 网络统计信息 (适用于 Minio 服务器/网关)

minio_network_received_bytes_total:此项显示 Minio 服务器接收的总字节数(以字节为单位)。

minio_network_sent_bytes_total:这是 Minio 服务器发送的总字节数(以字节为单位)。

  • 磁盘统计信息 (仅适用于 Minio 服务器实例)

minio_total_disks:这是 Minio 服务器可用的总磁盘数。

minio_offline_disks:这是脱机磁盘的总数。


用例

除非您拥有一个集成的警报系统,该系统会在出现问题时通知相关利益相关者,否则仅监控并没有多大用处。值得庆幸的是,Prometheus 可以做到这一切,甚至更多。

将 Minio 服务器数据插入 Prometheus 监控后,您可以配置 Prometheus 警报管理器 并创建 警报规则。这样,您就可以拥有生产就绪的端到端监控和警报设置。

让我们探索此类警报设置的一些有趣的用例。

  • 磁盘脱机时发出警报

使用 minio_offline_disks 字段,如果 Minio 服务器实例上的磁盘脱机,您可以设置警报。以下是一个示例 警报规则

groups:- name: Minio  rules:  - alert: DiskOffline    expr: minio_offline_disks != 0    for: 5m    labels:      severity: page    annotations:      summary: Disk offline
  • 可用空间低于指定阈值时发出警报

使用 minio_disk_storage_free_bytes 字段,当 Minio 服务器实例的可用存储空间不足时,您可以设置警报。示例警报规则如下所示

groups:- name: Minio  rules:  - alert: StorageSpaceExhausted    expr: minio_disk_storage_free_bytes < 

当空闲字节低于 10GiB 时,此项将触发警报。

  • Minio 服务器实例负载过高时发出警报

根据以上示例,您可以使用 minio_http_requests_duration_seconds_bucket 字段设置 Minio 服务器负载过高时的警报。


Grafana

Grafana 是一个可视化平台,用于了解指标。它与 Prometheus 集成得很好,有助于直观地分析 Prometheus 数据。如果您一直关注到目前为止,您已经拥有进入 Prometheus 服务器的 Minio 数据。

现在让我们看看如何设置 Grafana 从 Prometheus 获取数据并通过 Grafana 仪表板对其进行可视化。

  • 安装 Grafana

在基于 Ubuntu/Debian 的平台上,Grafana 已经提供了 deb 包。使用以下命令安装它:

$ wget https://s3-us-west-2.amazonaws.com/grafana- releases/release/grafana_5.1.2_amd64.deb
$ sudo apt-get install -y adduser libfontconfig
$ sudo dpkg -i grafana_5.1.2_amd64.deb

安装完成后,使用以下命令启动 Grafana:

$ sudo service grafana-server start

对于其他平台,请参考 Grafana 文档。默认情况下,Grafana 监听端口 3000。通过浏览器访问 https://:3000 上的 Grafana UI。默认凭据为用户名 = admin 和密码 = admin

  • 创建仪表板

访问 UI 后,为 Grafana 创建一个数据源,以便从 Prometheus 获取数据。单击“设置”>>“数据源”>>“添加数据源”。然后在下拉列表中选择 Prometheus 作为数据类型,并添加 Prometheus URL 和数据源的名称。

然后单击左侧边栏上的“创建”>>“仪表板”。在仪表板中,您可以添加面板。选择图形作为新面板。图形打开后,单击图形顶部菜单栏上的编辑按钮。现在您可以编辑图形属性。在这里,您可以选择 Minio 公开的任何数据点以及数据源。

在 Grafana 仪表板中绘制的 Minio 数据点图。