当前位置: 首页 > article >正文

监控 Docker 注册表

大家读完觉得有意义记得关注和点赞!!!

目录

1 引言

1.1 注册表

1.2 集线器

1.3 Fedoro

2 设计

2.1 技术栈

2.2 指标源

2.2.1. 根据访问日志匹配度量模式

2.2.2 将 InfluxDB 格式的度量直接写入文件

3 实施

3.1 自定义模式

3.2 设置属性tag

3.3 选择限制

4 监控仪表板

4.1 关键指标

4.2 错误

4.3 上传/下载缓慢

4.4 请求来源(本地未命中)

4.5 日志详情

5 警报

6 总结和未来工作

引用

附录:配置文件


我们在私有云中运行自定义图像服务,该服务 最初基于 VMware/Harbor 0.4.5,此后在内部开发。 公开演示 PDF(Chinease 语言)提到了其中的一部分[2]。 然而,本文不是关于设计和 图像服务的实现(需要另一篇文章),但监控 系统。

1 引言

为了更好地理解监控系统,我们首先介绍架构概述。

1.1 注册表

Docker 注册表,现在称为 Docker Distribution,是官方组件 用于存储和分发 Docker 镜像。我们使用定制版本。2.6+

自定义部分支持透明地重定向请求 本地拉取未命中时,到远程中心/注册表(请求来源)。

图片来自 [2]。

1.2 集线器

Registry 提供镜像存储、推送/拉取 API 等功能,而 将更高级别的管理(如用户管理、身份验证管理)留给上层平台。 Harbor 就是这样的平台之一。

在我们的公司中,我们使用定制版本来满足我们的特定需求, 例如,跨区域映像同步、与 CI/CD 集成。

集线器的主要组件:

  1. API 和 UI 服务
  2. Jobservice - 执行图像同步作业
  3. 注册表 - 定制版本
  4. nginx - API/UI、jobservice、注册表之间的 L7 代理

每个 Hub 都以 HA 模式部署,架构如下:

图片来自 [2]。

我们每个区域都有一个中心,每个中心都有不同的服务 URL,例如 、 、 . 但是,对于图像服务,我们对所有区域都使用唯一的 URL:,这大大加快了推送/拉取性能。hub-1.example.comhub-2.example.comhub-N.example.comhub.example.com

我们使用 gSLB 来实现这一目标。

1.3 Fedoro

图片来自 [2]。

Fedoro 是管理映像同步的中央服务。Fedoro 将不同区域的 Hub 设置为联合。它支持 Hub Management、Project Management 和 Sync Policy Management。

2 设计

2.1 技术栈

基于 TIG 的整体监控解决方案:Telegraf + Influxdb + Grafana。

2.2 指标源

我们主要通过两种方式收集指标:

2.2.1. 根据访问日志匹配度量模式
  1. API 状态
  2. 推/拉统计
  3. 平均推/拉带宽
2.2.2 将 InfluxDB 格式的度量直接写入文件
  1. 同步作业信息
  2. 请求源信息

3 实施

Docker 按不同的层拉取和推送镜像,因此目前我们只能获取层统计信息,而不是整个镜像。但根据我们的观察,每张图像大约有 3 层。

3.1 自定义模式

要设计 URI,我们需要定义自己的自定义 grok 模式。

请参考 [TODO] 什么是模式和自定义模式。

3.2 设置属性tag

将项目设置为标记属性

3.3 选择限制

Grafana:向表添加限制。例:SELECT * FROM test LIMIT 500

4 监控仪表板

4.1 关键指标

4.2 错误

4.3 上传/下载缓慢

4.4 请求来源(本地未命中)

4.5 日志详情

5 警报

6 总结和未来工作

引用

  1. Github:vmware/harbor
  2. 大浪:携程的容器化交付实践
  3. Github:Docker 注册表
  4. 什么是 Global Server Load Balancing (GSLB)?

附录:配置文件

  1. Nginx Conf:nginx.conf
  2. Telegraf 会议:hub_nginx.conf
  3. Grafana Conf: grafana.json


http://www.kler.cn/a/461525.html

相关文章:

  • TT100K数据集, YOLO格式, COCO格式
  • Android 模拟器系统镜像选择指南
  • 办公 三之 Excel 数据限定录入与格式变换
  • 杰盛微 JSM4056 1000mA单节锂电池充电器芯片 ESOP8封装
  • JS基础 -- 数组 (对象 / 数组 / 类数组 / 对象数组)的遍历
  • 电子电气架构 --- 中央处理器HPC及软件架构
  • 基于 Slf4j 和 AOP 的自动化方法执行时间日志记录方案
  • python-Flask:SQLite数据库路径不正确但是成功访问到了数据库,并对表进行了操作
  • QT----------常用界面组件的使用
  • 2024 AI产品经理在大模型的探索与实践(附学习资料下载)
  • 低空经济迅猛发展,无人机服务拔得头筹
  • 2021-04-14 输入一个数,判断奇偶性,若是奇数乘以2,若是偶数除2,得到结果若是三位数则反序,否则输出计算结果
  • Java 溯本求源之基础(三十三)——接口
  • 使用logrotate工具来管理和轮转日志文件
  • 007-构建工具大进步:Amper Amper Amper!
  • 论文研读:Tune-a-video — 微调学习单个视频内的物体动作(Arxiv: 2023-03-17)
  • 智能边缘计算×软硬件一体化:开启全场景效能革命新征程(高校开发者作品)
  • 【MySQL初级】第5-11章
  • 职场中倾听比表达更显智慧
  • 【传感器技术】第7章 温度传感器,热电偶,热电阻,热敏电阻,集成温度传感器
  • Prometheus + Grafana 监控,验证 Hystrix 超时熔断
  • 期末速成C++【模板和STL和算法】
  • sqlserver设置定时任务计划(SSMS)
  • 遗传算法的介绍
  • REDIS2.0
  • vue项目中使用mockjs模拟后端接口