一、概述

本文介绍如何使用 Kube-Prometheus 监控 Nacos 服务。Nacos 自带 Prometheus 指标接口,无需额外部署 Exporter,只需通过 Endpoint 和 ServiceMonitor 配置即可实现监控。

监控方式:

  • Nacos 内置了 Micrometer 指标,通过 /nacos/actuator/prometheus 接口暴露
  • 使用 Endpoints 手动指定 Nacos 集群节点 IP
  • 通过 ServiceMonitor 配置 Prometheus 采集规则

二、配置部署

2.1 创建 Endpoints

由于 Nacos 通常部署在 K8s 集群外部,需要手动创建 Endpoints 指向 Nacos 服务器。

apiVersion: v1
kind: Endpoints
metadata:
  name: nacos-exporter
  namespace: monitoring
subsets:
- addresses:
  - ip: # 列举 nacos 的机器的ip1
  - ip: # 列举 nacos 的机器的ip2 ...
  ports:
  - name: http
    port: 8848  # nacos-exporter 端口
    protocol: TCP

配置说明:

  • addresses:列举所有 Nacos 集群节点的 IP 地址
  • port: 8848:Nacos 默认端口,也是 Prometheus 指标暴露端口

2.2 创建 Service

apiVersion: v1
kind: Service
metadata:
  labels:
    app: nacos-exporter
    type: nacos
    version: 1.4.4
    platform: mos
  name: nacos-exporter
  namespace: monitoring
spec:
  ports:
  - port: 8848  # nacos-exporter 端口
    protocol: TCP
    targetPort: http
  type: ClusterIP

配置说明:

  • Service 不需要 selector,因为它关联的是手动创建的 Endpoints
  • platform: mos:自定义标签,用于环境区分

2.3 创建 ServiceMonitor

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: nacos-exporter
  namespace: monitoring
spec:
  endpoints:
  - interval: 15s
    path: /nacos/actuator/prometheus
    port: http
  targetLabels: [platform]
  namespaceSelector:
    matchNames:
    - monitoring
  selector:
    matchLabels:
      app: nacos-exporter
      type: nacos

配置说明:

  • path: /nacos/actuator/prometheus:Nacos 的 Prometheus 指标路径
  • interval: 15s:每 15 秒采集一次指标
  • targetLabels:将 Service 的 platform 标签添加到采集的指标中

三、验证部署

# 检查 Endpoints 是否创建成功
kubectl get endpoints nacos-exporter -n monitoring

# 检查 Service 状态
kubectl get svc nacos-exporter -n monitoring

# 检查 ServiceMonitor
kubectl get servicemonitor nacos-exporter -n monitoring

# 测试访问 Nacos 指标接口
curl http://<nacos-ip>:8848/nacos/actuator/prometheus

四、监控指标说明

Nacos 提供的核心监控指标:

  • nacos_monitor{name="serviceCount"}:服务数量
  • nacos_monitor{name="instanceCount"}:实例数量
  • nacos_monitor{name="configCount"}:配置数量
  • nacos_monitor{name="publishSuccessCount"}:配置发布成功次数
  • nacos_monitor{name="publishFailCount"}:配置发布失败次数
  • http_server_requests_seconds_*:HTTP 请求的响应时间统计
  • jvm_*:JVM 相关指标(内存、线程、GC 等)

五、注意事项

  1. Nacos 版本要求:Nacos 1.4.0 及以上版本才支持 Prometheus 指标暴露
  2. 网络访问:确保 K8s 集群能够访问 Nacos 服务器的 8848 端口
  3. 多节点配置:Nacos 集群需要在 Endpoints 中列出所有节点 IP
  4. 指标路径:不同 Nacos 版本可能指标路径有差异,请根据实际情况调整