转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。
前言
minio集群有暴露监控指标接口给Prometheus,可通过配置Prometheus访问MinIO集群的权限,将MinIO集群接入Prometheus监控,并通过MinIO官方发布的Grafana Dashboard(ID:13502,链接:MinIO Dashboard | Grafana Labs)将指标展示在Grafana。
本文记录Prometheus与MinIO集群部署在同一k8s集群内的监控接入过程。
1 k8s集群内Prometheus监控MinIO集群
1.1 MinIO端配置Prometheus访问权限
MinIO给Prometheus提供了两种访问策略:
1)public方式:
给MinIO集群设置环境变量export MINIO_PROMETHEUS_AUTH_TYPE=public,Prometheus可以不通过验证访问MinIO集群; 这种方式方便简洁,本文采用这种方式。
2)访问验证token方式:
通过客户端命令mc使用命令mc admin prometheus generate <ALIAS>生成验证token,将token配置到Prometheus,Prometheus根据token信息访问集群,具体方法可参考官网。
修改MinIO集群的minio.yaml文件,修改环境变量env部分,新增Prometheus访问权限:
env:
- name: MINIO_PROMETHEUS_AUTH_TYPE
value: public
执行kubectcl apply minio.yaml生效。
1.2 service暴露监控指标接口
在service的yaml文件中增加annotations模块,暴露监控接口信息:
[root@rancher-01 minio]# cat service-minio.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: minio
name: minio
namespace: public
namespace: monitoring
annotations: #增加该模块信息
prometheus.io/scrape: "true"
prometheus.io/port: "9000"
prometheus.io/path: "/minio/v2/metrics/cluster"
spec:
ports:
- name: minio-port-9000
port: 9000
protocol: TCP
targetPort: 9000
- name: minio-port-9001
port: 9001
protocol: TCP
targetPort: 9001
selector:
app: minio
type: ClusterIP
执行kubectl apply service-minio.yaml配置生效
1.3 创建servicemonitor
[root@rancher-0001 minio]# cat service-monitor-minio.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: minio
namespace: public
labels:
app: minio-cluster
spec:
endpoints:
- interval: 15s
path: /minio/v2/metrics/cluster
port: minio-port-9000
namespaceSelector:
matchNames:
- public
selector:
matchLabels:
app: minio
[root@rancher-0001 minio]#
执行kubectl apply -f service-monitor-minio.yaml创建。
创建好后,访问Prometheus的Target界面,能看到minio集群节点均已上线:
![](https://img-blog.csdnimg.cn/img_convert/dbbcf2d1eb0446a8824e5ee370a45d91.webp?x-oss-process=image/format,png)
1.4 监控看板接入
将MinIO官方的发布的Grafana Dashboard (ID为13502)导入Grafana,就能看到监控信息了。
2 MinIO集群监控指标汇总
2.1 对象衡量指标
minio_bucket_objects_size_distribution
存储桶中对象大小的分布,包括存储桶名称的标签。
2.2.复制指标
这些指标仅针对启用了服务器端存储桶复制的 MinIO 集群进行填充。
minio_bucket_replication_failed_bytes
复制的字节总数至少失败一次。
minio_bucket_replication_pending_bytes
等待复制的总字节数。
minio_bucket_replication_received_bytes
从另一个源存储桶复制到此存储桶的字节总数。
minio_bucket_replication_sent_bytes
复制到目标存储桶的总字节数。
minio_bucket_replication_pending_count
此存储桶挂起的复制操作总数。
minio_bucket_replication_failed_count
此存储桶的复制操作失败总数。
2.3 存储桶指标
minio_bucket_usage_object_total
对象总数
minio_bucket_usage_total_bytes
总存储桶大小(以字节为单位)
2.4 缓存指标
minio_cache_hits_total
磁盘缓存命中总数
minio_cache_missed_total
磁盘缓存未命中总数
minio_cache_sent_bytes
从缓存中提供的总字节数
minio_cache_total_bytes
缓存磁盘的总大小(以字节为单位)
minio_cache_usage_info
总缓存使用百分比,值 1 表示高,0 表示低,标签级别也设置
minio_cache_used_bytes
当前缓存使用情况(以字节为单位)
2.5 集群指标
minio_cluster_capacity_raw_free_bytes
群集中联机的总可用容量。
minio_cluster_capacity_raw_total_bytes
群集中联机的总容量。
minio_cluster_capacity_usable_free_bytes
群集中联机的总可用容量。
minio_cluster_capacity_usable_total_bytes
群集中联机的总可用容量。
2.6 节点指标
minio_cluster_nodes_offline_total
脱机的 MinIO 节点总数。
minio_cluster_nodes_online_total
联机的最小值节点总数。
minio_heal_objects_error_total
在当前自我修复运行中修复失败的对象
minio_heal_objects_heal_total
在当前自我修复运行中修复的对象
minio_heal_objects_total
在当前自我修复运行中扫描的对象
minio_heal_time_last_activity_nano_seconds
自上次自我修复活动以来经过的时间(以纳米秒为单位)。这被设置为 -1,直到初始自我修复
minio_inter_node_traffic_received_bytes
从其他对等节点接收的总字节数。
minio_inter_node_traffic_sent_bytes
发送到其他对等节点的总字节数。
minio_node_disk_free_bytes
磁盘上可用的总存储。
minio_node_disk_total_bytes
磁盘上的总存储。
minio_node_disk_used_bytes
磁盘上使用的总存储。
minio_node_file_descriptor_limit_total
限制 MinIO 服务器进程的打开文件描述符的总数。
minio_node_file_descriptor_open_total
MinIO 服务器进程打开的文件描述符的总数。
minio_node_io_rchar_bytes
进程从底层存储系统(包括缓存) 读取的总字节数,/proc/[pid]/io rchar
minio_node_io_read_bytes
进程从底层存储系统读取的总字节数,/proc/[pid]/io read_bytes
minio_node_io_wchar_bytes
进程写入底层存储系统的总字节数,包括页面缓存,/proc/[pid]/io wchar
minio_node_io_write_bytes
进程写入底层存储系统的总字节数,/proc/[pid]/io write_bytes
minio_node_process_starttime_seconds
每个节点的 MinIO 进程的开始时间,自 Unix 纪元以来的时间(以秒为单位)。
minio_node_process_uptime_seconds
每个节点的 MinIO 进程的正常运行时间(以秒为单位)。
minio_node_scanner_bucket_scans_finished
自服务器启动以来完成的存储桶扫描总数。
minio_node_scanner_bucket_scans_started
自服务器启动以来启动的存储桶扫描总数。
minio_node_scanner_directories_scanned
自服务器启动以来扫描的目录总数。
minio_node_scanner_objects_scanned
自服务器启动以来扫描的唯一对象总数。
minio_node_scanner_versions_scanned
自服务器启动以来扫描的对象版本总数。
minio_node_syscall_read_total
总读取系统调用内核。/proc/[pid]/io syscr
minio_node_syscall_write_total
总写入系统调用到内核。/proc/[pid]/io syscw
2.7 S3 指标
minio_s3_requests_error_total
有错误的 S3 请求总数
minio_s3_requests_inflight_total
当前正在运行的 S3 请求总数
minio_s3_requests_total
S3 请求总数
minio_s3_time_ttbf_seconds_distribution
跨 API 调用到第一个字节的时间分布。
minio_s3_traffic_received_bytes
接收的 s3 字节总数。
minio_s3_traffic_sent_bytes
发送的 s3 字节总数
2.8 软件指标
minio_software_commit_info
Git 提交最小值版本的哈希值。
minio_software_version_info
服务器的最小 IO 发布标记