一、Nacos 暴露监控指标
本章将介绍如何在传统发行版部署、Docker 部署和 Kubernetes 部署环境下,为 Nacos 服务启用 Prometheus 监控指标的暴露,无论是单机模式还是集群模式均适用。如果你使用的是集群模式,请提前确定需要被采集的节点,所有需采集的节点都必须完成相应的指标暴露配置。
传统发行版部署Docker 部署Kubernetes 部署
1. 找到 Nacos 安装目录下 conf 文件夹中的 application.properties 文件。路径示例:{NACOS_HOME}/conf/application.properties其中 {NACOS_HOME} 为实际的 Nacos 安装路径。2. 在 application.properties 文件末尾添加如下配置(如已存在请直接修改为以下内容):management.endpoints.web.exposure.include=prometheus 3. 保存文件后,重新启动 Nacos 服务以使配置生效。4. 服务启动后,在主机上执行如下命令,检查 metrics 数据是否已经生成。curl localhost:8848/nacos/actuator/prometheus命令执行结果如下:
1. 注入环境变量。
·配置方式一:docker-compose 方式环境变量注入,docker-compose.yml 示例如下。
version: "3"services: nacos: image: nacos/nacos-server:latest container_name: nacos ports: – "8848:8848" environment: # … # 增加这个环境变量 – management.endpoints.web.exposure.include=prometheus # …
·配置方式二:docker run 方式环境变量注入,在运行 Nacos 容器时,直接使用 -e 参数为容器设置所需的环境变量。
docker run -d \\ –name nacos \\ -e management.endpoints.web.exposure.include=prometheus \\ -p 8848:8848 \\ nacos/nacos-server:latest
2. 容器启动后,进入容器并运行以下命令,以确认 metrics 数据是否已生成。
curl localhost:8848/nacos/actuator/prometheus
命令执行结果如下:
1. 在 Kubernetes 环境下,可以通过增加环境变量的形式来暴露监控指标。kind: StatefulSetapiVersion: apps/v1metadata: name: nacos namespace: publicspec: replicas: 3 selector: matchLabels: app: nacos template: metadata: labels: app: nacos spec: containers: – name: nacos image: nacos/nacos-server:latest env: #… # 增加这个环境变量 – name: management.endpoints.web.exposure.include value: 'prometheus' #…2. 增加环境变量后,Nacos 服务会重启,重启后进入 Pod,执行命令查看是否有 metrics 数据:curl localhost:8848/nacos/actuator/prometheus命令执行结果如下:
二、配置采集
1. 登录 Prometheus 控制台。
2. 在实例列表中,选择对应的 Prometheus 实例。
3. 进入实例详情页,选择数据采集 > 集成中心。
4. 在集成中心找到并单击 Nacos,即会弹出一个安装窗口,在安装页面填写集成名称并选择部署方式,具体配置方式如下。
StaticConfig(静态采集配置)ServiceDiscovery(服务发现配置)
如果 Nacos 部署在非容器环境,可通过 StaticConfig 类型部署监控采集配置。具体配置步骤如下:
1. 在弹出的安装窗口中,找到实例配置 > 部署类型,下拉选择 StaticConfig。
2. 在静态采集配置 > 采集目标地址中,填写 Nacos 服务的 host:port,支持添加多个,需保证网络与 Prometheus 实例互通。
3. 确认 Exporter 配置 > 指标采集路径中的 path 是否与 Nacos 服务配置一致。
4. 按需填写其他 Exporter 配置,然后单击保存。
| 参数 | 说明 |
| 名称 | 集成名称,命名规范如下:名称具有唯一性。名称需要符合下面的正则:'^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$'。 |
| 部署类型 | 监控的部署类型,StaticConfig 代表静态采集配置。 |
| 采集目标地址 | 输入采集目标地址,格式:host:port,支持添加多个。需保证网络与 Prometheus 实例互通,如需通过公网访问,可参考 TKE Serverless 集群如何放通外网。 |
| 指标采集路径 | Nacos 指标暴露的路径,默认为 /nacos/actuator/prometheus。 |
| 抓取间隔 | 默认15s,填写示例:60s、1m30s、5m。 |
| 抓取超时 | 默认10s,抓取超时必须小于等于抓取间隔,填写方式同抓取间隔。 |
| Metric Relabel 配置 | 选填。兼容 Prometheus 原生的 metric_relabel_configs 和 Prometheus Operator 原生的 metricRelabelings 配置。不可混用。 |
如果 Nacos 部署在容器环境,可通过 ServiceDiscovery 类型部署监控采集配置。具体配置步骤如下:
1. 确保当前 Prometheus 实例已成功关联 Nacos 所在集群,步骤请参见 集成容器服务。
2. 在弹出的安装窗口中,找到实例配置 > 部署类型,下拉选择 ServiceDiscovery。
3. 在服务发现配置中,选取待监控的 Nacos 服务所在的集群,填写 Nacos 服务所在的命名空间、指标暴露的端口号或端口名称、Nacos Pod 标签。
4. 确认 Exporter 配置 > 指标采集路径中的 path 是否与 Nacos 服务配置一致。
5. 按需填写其他 Exporter 配置,然后单击保存。
| 参数 | 说明 |
| 名称 | 集成名称,命名规范如下:名称具有唯一性名称需要符合下面的正则:'^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$' |
| 部署类型 | 监控的部署类型,ServiceDiscovery 代表服务发现配置。 |
| 集群 | 待监控的 Nacos 服务所在的集群,需确保集群已成功被当前 Prometheus 实例关联,步骤请参见 集成容器服务。 |
| 命名空间 | Nacos 服务所在的集群命名空间。 |
| 端口 | Nacos 指标暴露的端口号或端口名称,需在工作负载 spec.template.spec.containers.ports 中增加端口配置。 |
| Pod 标签 | Nacos 服务 Pod 在 metadata.labels 中显式配置的标签。当通过工作负载创建 pod 时,则为工作负载 spec.template.metadata.labels 中配置的标签。 |
| 指标采集路径 | Nacos 指标暴露的路径,默认为 /nacos/actuator/prometheus。 |
| 抓取间隔 | 默认15s,填写示例:60s、1m30s、5m。 |
| 抓取超时 | 默认10s,抓取超时必须小于等于抓取间隔,填写方式同抓取间隔。 |
| Metric Relabel 配置 | 选填。兼容 Prometheus 原生的 metric_relabel_configs 和 Prometheus Operator 原生的 metricRelabelings 配置。不可混用。 |
三、前提条件
Prometheus 实例已绑定 Grafana 实例。
四、操作步骤
1. 登录 Prometheus 监控服务控制台,选择对应 Prometheus 实例进入管理页面。
2. 选择数据采集 > 集成中心,在集成中心页面找到 Nacos 监控卡片并点击弹出集成页面,选择 Dashboard > Dashboard 安装/升级来安装对应的 Grafana Dashboard。
3. 选择查看已集成,在已集成列表中单击 Grafana 图标即可自动进入 Nacos 监控大盘,查看实例相关的监控数据: