本文为您详细介绍通过部署脚本安装 VMP Agent 采集器的步骤和参数配置。
注意
原生 Prometheus 采集方案基于原生 Prometheus(Agent 模式)开发,仅在原生方案的基础上,支持了火山引擎 AK/SK 鉴权功能。适用于那些充分了解原生 Prometheus 的基本原理和运维方法,能够自主保证采集器的可用性,且有 AK/SK 认证强需求的用户。
您可以使用 Kubectl 连接集群,完成 VMP Agent 采集器的部署。当您在集群中部署 VMP Agent 时,会同时安装 kube-state-metrics 和 node-exporter 组件。每个组件的作用说明如下表所示。
组件名称 | 负载类型 | 命名空间 | 默认实例数 | 说明 |
---|---|---|---|---|
agent | Deployment | volcano-metrics | 1 | 采集集群内 kubelet、kubelet-cadvisor 、kube-state-metrics 、node-exporter 暴露的指标。 |
kube-state-metrics | Deployment | volcano-metrics | 1 | 提供 Kubernetes 集群资源信息指标数据。 |
node-exporter | Daemonset | volcano-metrics | 每 Node 1 个实例 | 提供节点资源信息指标数据。 |
在此场景下,VMP Agent 充当 VMP 服务的数据采集器,直接抓取监控对象的监控数据,并将监控数据发送至 VMP 工作区服务进行保存。默认情况下,监控数据包括: node-exporter、 kubelet-cadvisor、kubelet、kube-state-metrics 和 agent 自身。
VMP Agent 中提供的各个组件,默认的实例规格如下表所示。
组件名称 | 默认 CPU 请求值 | 默认内存请求值 | 默认 CPU 上限值 | 默认内存上限值 |
---|---|---|---|---|
agent | 0.5 Core | 1 GiB | 2 Core | 4 GiB |
kube-state-metrics | 0.1 Core | 250MiB | 0.1 Core | 250MiB |
node-exporter | 0.1 Core | 30 MiB | 0.2 Core | 50 MiB |
grafana | 0.1 Core | 128 MiB | 0.2 Core | 256 MiB |
使用 VMP Agent 采集集群中 Node 和 Pod 的相关指标时,VMP Agent 的资源占用与 Node 和 Pod 数量呈正相关。因此,在部署 VMP Agent 之前,需要首先基于用户环境中的 Node 数和 Pod 数,来估算 VMP Agent 的资源规格。
说明
如果用户环境存在 Node 和 Pod 频繁扩缩容的情况,建议按照 Node 和 Pod 的最大值来规划 VMP Agent 规格。
VMP Agent 的建议规格值如下表所示。
典型规模 | CPU 建议规格 | 内存建议规格 |
---|---|---|
10 Node,640 Pod | 请求值:0.15 Core | 请求值:2 GiB |
50 Node,3200 Pod | 请求值:1 Core | 请求值:14 GiB |
100 Node,6400 Pod | 请求值:2 Core | 请求值:25 GiB |
VMP Agent 的资源规格和用户业务强相关,上述例子中建议值不能保证所有的情况都适用。因此,建议您在 VMP Agent 部署完成后,对采集器的规格进行监控和调节。
当集群规模不大,通过默认配置即可完成所有数据采集时,可以在集群中采用单实例、默认配置的部署方式。操作步骤如下:
./install.sh \ --agent vmpagent \# 采集器类型。 --region cn-beijing \ # VMP 工作区所在地域。 --remote-write-url http://write.prometheus-cn-beijing.ivolces.com/workspaces/b762e1a3-37***/api/v1/write \ # VMP 工作区的 URL 地址,并添加 api/v1/write 后缀。 --basic-auth-username username-demo \ # VMP 工作区 Basic Auth 认证模式下的认证用户名。 --basic-auth-password password-demo # VMP 工作区 Basic Auth 认证模式下的认证密码。
说明
region
、remote-write-url
、basic-auth-username
和 basic-auth-password
参数。如果实例的默认规格无法满足您的需求,可以通过修改实例默认配置的方式,修改实例规格。具体步骤如下:
./install.sh \ --region cn-beijing \ # VMP 工作区所在地域。 --remote-write-url http://write.prometheus-cn-beijing.ivolces.com/workspaces/b762e1a3-37***/api/v1/write \ # VMP 工作区的 Remote Write 地址,并添加 api/v1/write 后缀。 --basic-auth-username username-demo \ # VMP 工作区 Basic Auth 认证模式下的认证用户名。 --basic-auth-password password-demo \ # VMP 工作区 Basic Auth 认证模式下的认证密码。 --agent vmpagent \ # 采集器类型。 --namespace volcano-metrics \ # 部署采集器的命名空间。 --agent-scrape-interval 15s \ # 采集器的数据采集间隔。 --vmpagent-name vmpagent \ # 采集器的名称。 --vmpagent-replicas 1 \ # VMP Agent 采集器的副本数。 --vmpagent-resources-requests-cpu 100m \ # VMP Agent 采集器的 CPU 请求值。 --vmpagent-resources-requests-memory 200Mi \ # VMP Agent 采集器的内存请求值。 --vmpagent-resources-limits-cpu 100m \ # VMP Agent 采集器的 CPU 上限值。 --vmpagent-resources-limits-memory 200Mi \ # VMP Agent 采集器的内存上限值。 --kube-state-metrics-shards 2 \ # kube-state-metrics 组件的分片数。 --kube-state-metrics-resources-requests-cpu 50m \ # kube-state-metrics 的 CPU 请求值。 --kube-state-metrics-resources-requests-memory 100Mi \ # kube-state-metrics 的内存请求值。 --kube-state-metrics-resources-limits-cpu 50m \ # kube-state-metrics 的 CPU 上限值。 --kube-state-metrics-resources-limits-memory 100Mi # kube-state-metrics 的内存上限值。
当集群规模较大(150 ~ 300 个节点)时,由于 Cadvisor 组件的指标数量占比可达 50%以上,因此,可以将 VMP Agent 采集器拆分部署为 2 个实例,分别采集 Cadvisor 组件数据和其他组件数据。如下表所示。
组件名称 | 负载类型 | 负载名称 | 默认实例数 | 说明 |
---|---|---|---|---|
agent | Deployment | agent | 1 | 采集集群内 kubelet、kube-state-metrics 、node-exporter 暴露的指标。 |
agent-cadvisor | Deployment | agent-cadvisor | 1 | 采集集群内 kubelet-cadvisor 暴露的指标。 |
操作步骤如下:
./install.sh \ --region cn-beijing \ # VMP 工作区所在地域。 --remote-write-url http://write.prometheus-cn-beijing.ivolces.com/workspaces/b762e1a3-37***/api/v1/write \ # VMP 工作区的 URL 地址,并添加 api/v1/write 后缀。 --basic-auth-username username-demo \ # VMP 工作区 Basic Auth 认证模式下的认证用户名。 --basic-auth-password password-demo \ # VMP 工作区 Basic Auth 认证模式下的认证密码。 --agent vmpagent \ # 采集器类型。 --namespace volcano-metrics \ # 部署采集器的命名空间。 --agent-scrape-interval 15s \ # 采集器的数据采集间隔。 --vmpagent-name vmpagent \ # 采集器的名称。 --vmpagent-replicas 1 \ # VMP Agent 采集器的副本数。 --vmpagent-resources-requests-cpu 100m \ # VMP Agent 采集器的 CPU 请求值。 --vmpagent-resources-requests-memory 200Mi \ # VMP Agent 采集器的内存请求值。 --vmpagent-resources-limits-cpu 100m \ # VMP Agent 采集器的 CPU 上限值。 --vmpagent-resources-limits-memory 200Mi \ # VMP Agent 采集器的内存上限值。 --disable-cadvisor # 禁用 VMP Agent 对 cadvisor 的采集规则。
./install.sh \ --region cn-beijing \ # VMP 工作区所在地域。 --remote-write-url http://write.prometheus-cn-beijing.ivolces.com/workspaces/b762e1a3-37***/api/v1/write \ # VMP 工作区的 Remote Write 地址。 --basic-auth-username username-demo \ # VMP 工作区 Basic Auth 认证模式下的认证用户名。 --basic-auth-password password-demo \ # VMP 工作区 Basic Auth 认证模式下的认证密码。 --agent vmpagent \ # 采集器类型。 --namespace volcano-metrics \ # 部署采集器的命名空间。 --agent-scrape-interval 15s \ # 采集器的数据采集间隔。 --vmpagent-name vmpagent-cadvisor \ # 采集器的名称。 --vmpagent-replicas 1 \ # VMP Agent 采集器的副本数。 --vmpagent-resources-requests-cpu 100m \ # VMP Agent 采集器的 CPU 请求值。 --vmpagent-resources-requests-memory 200Mi \ # VMP Agent 采集器的内存请求值。 --vmpagent-resources-limits-cpu 100m \ # VMP Agent 采集器的 CPU 上限值。 --vmpagent-resources-limits-memory 200Mi \ # VMP Agent 采集器的内存上限值。 --cadvisor-only # 仅启用 VMP Agent 对 cadvisor 采集规则。
说明
建议给 VMP Agent 组件和 kube-state-metrics 组件配置亲和性策略,使其运行在独占节点上,避免被业务 Pod 挤占资源。
VMP Agent 正确部署后,登录 Kubernetes 集群。在无状态负载中,可以查看到 VMP Agent 工作负载和 metrics 采集器。同时也可以查看到 VMP Agent 工作负载和 metrics 采集器对应的服务。
说明
想要通过 VMP Agent 正常采集数据,除需要保证 VMP Agent 工作正常外,还需要保证采集对象的 Metrics API 或 Exporter 正常。相关的配置和部署,需要用户自己完成并保证正确。