本文已参与「开源摘星计划」,欢迎正在阅读的你加入。
活动链接: https://github.com/weopenprojects/WeOpen-Star
[文章来源]:《Harbor进阶实战》公众号
在之前的文章中分别介绍了harbor基于离线安装的高可用汲取设计和部署
。那么,如果我们的harbor服务主机或者harbor服务及组件出现异常,我们该如何快速处理呢?
Harbor v2.2
及以上版本支持配置Prometheus监控Harbor,所以你的harbor版本必须要大于2.2。
本篇文章以二进制
的方式简单的部署Prometheus相关服务,可以帮助你快速的的实现Prometheus对harbor的监控。
一、部署说明
在harbor服务主机上部署:
- prometheus
- node-exporter
- grafana
- alertmanager
harbor版本:2.4.2
主机:192.168.2.22
二、Harbor启用metrics服务
2.1 停止Harbor服务
2.2 修改harbor.yml配置
修改harbor的配置文件中metrics参数,启用harbor-exporter
组件。
对harbor不熟悉的建议对配置文件备份下!
2.3 配置注入组件
2.4 install安装harbor
可以看到多了harbor-exporter组件。
三、Harbor指标说明
在前面启用了harbor-exporter监控组件后,可以通过curl命令去查看harbor暴露了哪些指标。
harbor暴露了以下4个关键组件的指标数据。
3.1 harbor-exporter组件指标
exporter
组件指标与Harbor 实例配置相关,并从 Harbor 数据库中收集一些数据。指标可在
<harbor_instance>:<metrics_port>/<metrics_path>
查看
1)harbor_project_total
harbor_project_total 采集了公共和私人项目总共数量。
2)harbor_project_repo_total
项目(Project)中的存储库总数。
3)harbor_project_member_total
项目中的成员总数
4)harbor_project_quota_usage_byte
一个项目的总使用资源
5)harbor_project_quota_byte
项目中设置的配额
6)harbor_artifact_pulled
项目中镜像拉取的总数
7)harbor_project_artifact_total
项目中的工件类型总数,artifact_type , project_name, public ( true, false)
8)harbor_health
Harbor状态
9)harbor_system_info
Harbor 实例的信息,auth_mode ( db_auth, ldap_auth, uaa_auth, http_auth, oidc_auth),harbor_version, self_registration( true, false)
10)harbor_up
Harbor组件运行状态,组件 ( chartmuseum, core, database, jobservice, portal, redis, registry, registryctl, trivy)
11)harbor_task_queue_size
队列中每种类型的任务总数,
12)harbor_task_queue_latency
多久前要处理的下一个作业按类型排入队列
13)harbor_task_scheduled_total
计划任务数
14)harbor_task_concurrency
池(Total)上每种类型的并发任务总数
3.2 harbor-core组件指标
以下是从 Harbor core组件中提取的指标,获取格式:
<harbor_instance>:<metrics_port>/<metrics_path>?comp=core.
1)harbor_core_http_inflight_requests
请求总数,操作(Harbor API operationId中的值。一些遗留端点没有,因此标签值为)operationId``unknown
harbor-core组件的指标
2)harbor_core_http_request_duration_seconds
请求的持续时间,
方法 ( GET, POST, HEAD, PATCH, PUT), 操作 ( Harbor APIoperationId中的 值。一些遗留端点没有, 所以标签值为), 分位数operationId``unknown
3)harbor_core_http_request_total
请求总数
方法(GET, POST, HEAD, PATCH, PUT),操作([Harbor API operationId中的 值。一些遗留端点没有,因此标签值为)operationId``unknown
3.3 registry 组件指标
注册表,以下是从 Docker 发行版中提取的指标,查看指标方式:
<harbor_instance>:<metrics_port>/<metrics_path>?comp=registry.
1)registry_http_in_flight_requests
进行中的 HTTP 请求,处理程序
2)registry_http_request_duration_seconds
HTTP 请求延迟(以秒为单位),处理程序、方法( , GET) POST,文件HEADPATCHPUT
3)registry_http_request_size_bytes
HTTP 请求大小(以字节为单位)。
3.4 jobservice组件指标
以下是从 Harbor Jobservice 提取的指标,
可在<harbor_instance>:<metrics_port>/<metrics_path>?comp=jobservice.
查看
1)harbor_jobservice_info
Jobservice的信息,
2)harbor_jobservice_task_total
每个作业类型处理的任务数
3)harbor_jobservice_task_process_time_seconds
任务处理时间的持续时间,即任务从开始执行到任务结束用了多少时间。
四、部署Prometheus Server(二进制)
4.1 创建安装目录
4.2 下载安装包
4.3 修改配置文件
在prometheus的配置文件中指定获取harbor采集的指标数据。
4.4 语法检查
检测配置文件的语法是否正确!
4.5 创建服务启动文件
4.6 启动服务
4.7 浏览器访问Prometheus UI
在浏览器地址栏输入主机IP:9090访问Prometheus UI 管理界面。
五、部署node-exporter
node-exporter
服务可采集主机的cpu
、内存
、磁盘
等资源指标。
5.1 下载安装包
5.2 创建服务启动文件
5.3 启动服务
5.4 查看node指标
通过curl获取node-exporter服务采集到的监控数据。
六、Grafana部署与仪表盘设计
二进制部署Grafana v8.4.4服务。
6.1 下载安装包
6.2 安装插件
- 安装grafana时钟插件
- 安装Zabbix插件
- 安装服务器端图像渲染组件
6.3 创建服务启动文件
-homepath
:指定grafana的工作目录
6.4 启动grafana服务
6.5 配置数据源
在浏览器地址栏输入主机IP和grafana服务端口访问Grafana UI界面后,添加Prometheus数据源。
默认用户密码:admin/admin
6.6 导入json模板
一旦您配置了Prometheus
服务器以收集您的 Harbor
指标,您就可以使用 Grafana来可视化您的数据。Harbor 存储库中提供了一个 示例 Grafana 仪表板,可帮助您开始可视化 Harbor 指标。
Harbor官方提供了一个grafana的json文件模板。下载:
https://github.com/goharbor/harbor/blob/main/contrib/grafana-dashborad/metrics-example.json
七、部署AlertManager服务(扩展)
Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、删除重复等处理,并将它们通过路由发送给正确的接收器;
7.1 下载安装包
7.2 修改配置文件
7.3 创建服务启动文件
7.4 启动服务
7.5 配置告警规则
前面在Prometheus server的配置文件中中指定了告警规则的文件为/etc/prometheus/rules.yml
。