使用 Prometheus 监控 MinIO 服务器

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 公开的任何数据点以及数据源。
