prometheus|装在笔记本里的私有云环境:网络存储篇(中)

作者:soulteary
本篇是系列中的第四篇内容,我们继续聊聊如何把一个简化过的私有云环境部署在笔记本里,以满足低成本、低功耗、低延时的实验环境。
在前三篇文章中,我们聊过了基础虚拟化相关的前置准备、以及为了避免在搭建过程中盲人摸象,而准备的监控服务,还有上一篇基础存储服务的搭建。接下来我们来进行一些基础的监控配置以及监控服务完善,让存储服务能够相对稳定的运行在我们的“视野之内”。
写在前面在前文中,我们提到了包括 Prometheus 在内的监控服务的工作模式主要有“推”和“拉”两种。为了能够使用推送模式,我们部署了 “推送网关:Push-Gateway”,但是“拉”模式就是开箱即用的吗?
除了一些云原生的应用外,默认应用多数并不包含能够让 Prometheus 能够开箱即用的,能够让 Prometheus 进行数据拉取的,包含应用性能指标数据的接口。
对于这些应用,为了能够让监控服务和它们能够进行持续的“数据交互”,我们得在需要监控的应用侧搭建一些数据上报服务,提供这个“数据开放”的能力。这些服务一般被称作“exporter”,它会根据应用的实际情况,采取使用应用 API 、文件监控、应用数据读取等方式将应用当前的运行状态汇总,在 Prometheus 进行数据抓取的时候进行提供,这些提供的数据一般被称作 “metrics”。
那么,我们就来挨着聊聊前文中提到的几个服务的监控集成,恰好它们的监控配置都比较典型。本文中提到的应用配置,同样已经上传到了 GitHub 中,有需要的同学可以自取。
MinIO 的监控集成第一个要聊的应用,是典型的云原生应用,它自带了能够让 Prometheus 开箱即用的接口。但是,考虑到应用性能以及运营数据的隐私要求,这个接口默认并不是默认开启的。
开启 MinIO 的性能指标接口为了能够让 Prometheus 对 MinIO 进行监控,我们需要先将它的性能指标接口通过配置变量的方式开启,编辑上文提到的 docker-compose.yml 文件,添加一个新的环境变量:
environment:
- MINIO_PROMETHEUS_AUTH_TYPE=public
这里对于这个配置可选数值还有 jwt,不过并不推荐,因为我们系列最终会使用 Traefik 进行统一鉴权管理,没有必要再加一层。如果你对另外一个模式感兴趣,可以自行了解。
更新完配置后,我们使用 docker-compose down && docker-compose up -d 重启应用,MinIO 的监控接口便准备就绪啦,我们可以使用下面的地址进行访问性测试:
curl http://s3.storage.lab.com/minio/v2/metrics/cluster
如果顺利的话,你将会看到类似下面的内容:
# HELP minio_bucket_objects_size_distribution Distribution of object sizes in the bucket, includes label for the bucket name.
# TYPE minio_bucket_objects_size_distribution gaugeminio_bucket_objects_size_distribution{bucket="public",range="BETWEEN_1024_B_AND_1_MB",server="127.0.0.1:9000"} 1minio_bucket_objects_size_distribution{bucket="public",range="BETWEEN_10_MB_AND_64_MB",server="127.0.0.1:9000"} 0minio_bucket_objects_size_distribution{bucket="public",range="BETWEEN_128_MB_AND_512_MB",server="127.0.0.1:9000"} 0minio_bucket_objects_size_distribution{bucket="public",range="BETWEEN_1_MB_AND_10_MB",server="127.0.0.1:9000"} 0minio_bucket_objects_size_distribution{bucket="public",range="BETWEEN_64_MB_AND_128_MB",server="127.0.0.1:9000"} 0minio_bucket_objects_size_distribution{bucket="public",range="GREATER_THAN_512_MB",server="127.0.0.1:9000"} 0minio_bucket_objects_size_distribution{bucket="public",range="LESS_THAN_1024_B",server="127.0.0.1:9000"} 0# HELP minio_bucket_replication_received_bytes Total number of bytes replicated to this bucket from another source bucket.# TYPE minio_bucket_replication_received_bytes gaugeminio_bucket_replication_received_bytes{bucket="public",server="127.0.0.1:9000"} 0# HELP minio_bucket_usage_object_total Total number of objects...