news 2026/9/12 8:26:36

Harbor 导入官方 Grafana 仪表盘可视化 Exporter 监控指标

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Harbor 导入官方 Grafana 仪表盘可视化 Exporter 监控指标

Harbor 导入官方 Grafana 仪表盘可视化 Exporter 监控指标

【免费下载链接】harborAn open source trusted cloud native registry project that stores, signs, and scans content.项目地址: https://gitcode.com/GitHub_Trending/ha/harbor

Harbor 自带一个 Exporter 组件,通过 Prometheus 格式的/metrics端点暴露组件健康、项目配额、任务队列、Core/Registry 请求等指标,仓库在contrib/grafana-dashboard/目录下随源码提供了一份官方 Grafana 仪表盘。本文的任务是:先让 Harbor 开启并验证 Exporter 指标输出,再把仓库中的metrics-example.json导入 Grafana,让指标以面板形式可视化。

适用前提:

  • Harbor 已通过 install 脚本(docker compose 方式)部署并可正常访问;
  • 已有一套 Grafana 实例。仓库contrib/grafana-dashboard/README.md明确说明该仪表盘基于Grafana v8制作,可能不兼容更早的 Grafana 版本;
  • 仪表盘内各面板引用的是 Prometheus 类型数据源,因此需要一个已配置好的 Prometheus 数据源(或已指向 Harbor 指标的 Prometheus 实例)供导入时选择。

仪表盘截图(来自仓库文档,尺寸偏高,仅作面板参考):

一、在 harbor.yml 中开启 Exporter

Harbor 安装目录下的harbor.yml中有一段默认注释掉的 metric 配置(见 make/harbor.yml.tmpl):

# metric: # enabled: false # port: 9090 # path: /metrics

取消注释并按需修改:

metric: enabled: true port: 9090 path: /metrics

portpath即上面模板注释中给出的默认值(9090、/metrics)。Exporter 是否随实例启动完全由metric.enabled决定:prepare 脚本只有在config_dict['metric'].enabled为真时才会渲染 exporter 配置并写入 docker-compose,compose 模板中的 exporter 服务同样包裹在{% if metric.enabled %}条件里(见 docker-compose.yml.jinja)。

修改harbor.yml后重新执行 Harbor 的安装/更新脚本使配置生效(离线安装脚本为install.sh,与harbor.yml位于同一目录)。副作用提示:该脚本会重新 prepare 配置并重启各组件容器,执行前确认harbor.yml中其他项(数据库密码、证书路径等)无误。

二、验证 Exporter 与 /metrics 端点

确认容器与默认参数

开启后 compose 中会多出如下服务(模板渲染结果):

exporter: image: goharbor/harbor-exporter:<版本> container_name: harbor-exporter env_file: - ./common/config/exporter/env restart: always depends_on: - core

可用docker ps | grep harbor-exporter确认容器在运行。Exporter 的关键默认值由 env.jinja 生成:

环境变量默认值用途
HARBOR_EXPORTER_PORT8080Exporter 监听端口
HARBOR_EXPORTER_METRICS_PATH/metrics指标路径
HARBOR_EXPORTER_MAX_REQUESTS30限制请求数
HARBOR_EXPORTER_CACHE_TIME23指标缓存时间(秒)
HARBOR_SERVICE_HOST/HARBOR_SERVICE_PORTcore/ 8080(启用 internal_tls 时为 https:8443)Exporter 回调 Harbor core 的地址

Exporter 连接 core、数据库与 Redis 采集数据,注册的采集器包括 health、system info、project、job service、statistics(见 exporter.go)。/路径返回一个简单的 HTML 页,页面内有指向 metrics 路径的链接,可用浏览器打开做连通性检查。

从 metrics 端点核对指标名

仓库的 API 测试 test_verify_metrics_enabled.py 给出了端点用法:向 metrics 地址发起请求,不带参数返回 exporter 指标,带comp=corecomp=registrycomp=jobservice参数分别代理对应组件的指标。以 Harbor 对外地址为例(<harbor>替换为你的 Harbor 主机名/IP,端口为harbor.ymlmetric.port的值,默认 9090):

# exporter 自身指标 curl http://<harbor>:9090/metrics # core / registry / jobservice 组件指标 curl "http://<harbor>:9090/metrics?comp=core" curl "http://<harbor>:9090/metrics?comp=registry" curl "http://<harbor>:9090/metrics?comp=jobservice"

返回文本中应能看到 exporter 侧的指标名,例如:harbor_upharbor_healthharbor_system_infoharbor_project_totalharbor_project_quota_usage_byteharbor_task_concurrencyharbor_task_queue_sizeharbor_artifact_pulled,以及 Go 运行时基础指标(go_gc_duration_secondsgo_goroutines等)。这些名称与上文 curl 输出的对应关系来自该测试用例的断言列表。若某个指标缺失,先回到上一步确认metric.enabled: true已生效、harbor-exporter容器存活。

三、导入官方 Grafana 仪表盘

  1. 打开 Grafana 的 Dashboards → New → Import。
  2. 上传仓库中的仪表盘文件 contrib/grafana-dashboard/metrics-example.json(Grafana v8 导出的 JSON,schemaVersion: 36,标题为Harbor)。
  3. 导入时选择 Prometheus 数据源。注意:该 JSON 没有__inputs/templating变量定义,但面板里引用了${datasource}${DS_PROMETHEUS}这类数据源占位写法,导入后需要把面板/行级数据源指向你的 Prometheus 数据源(Grafana 导入界面通常会提示替换数据源;若界面不提示,则进入仪表盘编辑逐个检查面板的数据源设置)。
  4. 保存仪表盘。

导入后仪表盘包含的分组与面板(与该 JSON 中panels定义一致):

  • Infocomponent up status(基于harbor_up)、Quota Usage(基于harbor_project_quota_usage_byte);
  • 项目维度project membersProject repo totalartifacts pulled
  • Core Metricsharbor core request rateAPI request time 0.9harbor core inflight requests
  • General metricsProcess opened fdProcess CPU timego threadsgoroutinesGo heap objectsgo allocated memorygo next gc bytesgo gc time分位面板;
  • JobService Metricstask latencytask concurrencytask queue pending sizetasks per minutenumber of running scheduled jobs
  • Registry MetricRegistry request inflightRegistry request rateregistry request time 0.9registry request size 0.9registry response size 0.9

四、结果验证与边界

验证方式是打开导入后的仪表盘,确认各分组面板出现曲线或数值而不是 "No data"。判断方法:

  • component up status面板应有组件记录,对应指标为harbor_up(第二步 curl/metrics能取到即说明数据链已通);
  • Core/Registry 分组面板依赖comp=corecomp=registry路径上的指标(harbor_core_http_request_totalregistry_http_requests_total等),有推拉流量后面板才会上数;
  • 若所有面板均无数据,依次检查:Prometheus 数据源配置(Scrape 是否覆盖第二步的 metrics 地址)、harbor-exporter容器状态、harbor.ymlmetric.enabled是否已生效。

需要留意的边界:

  • Grafana 版本低于 v8 时该仪表盘可能无法正常工作,这是仓库 README 的明确说明;
  • Exporter 指标带缓存(HARBOR_EXPORTER_CACHE_TIME默认 23 秒,缓存清理间隔默认 14400 秒),面板数值刷新存在延迟属预期行为;
  • 仪表盘只覆盖上述 exporter/core/registry/jobservice 指标面板,未包含告警规则或通知渠道配置,这些需在 Grafana 中自行添加。

【免费下载链接】harborAn open source trusted cloud native registry project that stores, signs, and scans content.项目地址: https://gitcode.com/GitHub_Trending/ha/harbor

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 8:26:34

一篇文章讲清楚如何DeepSeek本地部署,解决下载慢问题

一篇文章讲清楚如何DeepSeek本地部署&#xff0c;解决下载慢问题**已经测试机型&#xff1a;**安装OllamaOllama地址安装Ollama安装webUI修改DeepSeek模型或者其他AI模型存放位置下载模型下载问题解决在其他网站上下载已经测试机型&#xff1a; 显卡模型效果1050~1050Ti1.5b的…

作者头像 李华
网站建设 2026/9/12 8:25:42

C++和标准库速成(八)——指针、动态数组、const、constexpr和consteval

目录1. 指针和动态数组1.1 栈和自由存储区1.2 使用指针1.3 动态分配的数组1.4 空指针常量2. const2.1 const修饰类型2.2 const与指针2.3 使用const保护参数2.4 const方法(建议&#xff09;3. constexpr4. consteval参考1. 指针和动态数组 动态内存允许所创建的程序具有在编译期…

作者头像 李华
网站建设 2026/9/12 8:24:52

KOReader 安装完全指南:三步在墨水屏打开第一本书

KOReader 安装完全指南&#xff1a;三步在墨水屏打开第一本书 【免费下载链接】koreader An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices 项目地址: https://git…

作者头像 李华
网站建设 2026/9/12 8:24:50

Linux fork机制与写时拷贝技术深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 8:22:49

Python OAuthLib实战:安全授权与最佳实践

1. 为什么需要专门学习oauthlib&#xff1f;OAuth是现代互联网应用最常用的授权框架之一&#xff0c;但直接实现OAuth协议绝非易事。oauthlib作为Python生态中的OAuth实现库&#xff0c;解决了开发者最头疼的三个问题&#xff1a;首先&#xff0c;协议细节复杂。OAuth 2.0 RFC6…

作者头像 李华
网站建设 2026/9/12 8:22:46

微信小程序消防隐患举报系统:SSM后端与数据库设计实践

简介&#xff1a;一套微信小程序消防隐患在线举报系统&#xff0c;是针对消防隐患网络举报场景的完整毕业设计资源&#xff0c;适合高校学生用于课程设计、毕业设计或项目实战练习。系统基于SSM&#xff08;Spring、SpringMVC、MyBatis&#xff09;架构&#xff0c;前端包含微信…

作者头像 李华