You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Nuclio函数指标接入Prometheus Operator?

Nuclio指标接入Prometheus Operator配置指南

1. 确认Nuclio metrics端口暴露状态

你已经在ConfigMap里配置了prometheusPull sink,端口为8090,先检查Nuclio组件是否已正确暴露该端口:

  • 查看Nuclio控制器Pod的端口配置:
    kubectl get pods -n nuclio -l app=nuclio-controller -o jsonpath='{.items[*].spec.containers[*].ports}'
    
  • 查看单个Nuclio函数Pod的端口配置(替换<function-pod-name>为实际Pod名称):
    kubectl get pod <function-pod-name> -n nuclio -o jsonpath='{.spec.containers[*].ports}'
    

确保输出结果中包含8090端口的声明。

2. 创建Nuclio metrics服务(无现成服务时)

如果Nuclio控制器或函数没有对应Service暴露metrics端口,需要手动创建:

Nuclio控制器metrics Service

apiVersion: v1
kind: Service
metadata:
  name: nuclio-controller-metrics
  namespace: nuclio
  labels:
    app: nuclio-controller
spec:
  selector:
    app: nuclio-controller
  ports:
  - name: metrics
    port: 8090
    targetPort: 8090

Nuclio函数批量metrics Service

若需统一监控所有Nuclio函数,可创建匹配所有函数的Service:

apiVersion: v1
kind: Service
metadata:
  name: nuclio-functions-metrics
  namespace: nuclio
  labels:
    app: nuclio-function
spec:
  selector:
    nuclio.io/function: "true"  # 匹配Nuclio函数默认标签,可根据实际调整
  ports:
  - name: metrics
    port: 8090
    targetPort: 8090

执行命令应用Service:

kubectl apply -f <service文件名> -n nuclio

3. 创建ServiceMonitor资源(Prometheus Operator发现规则)

Prometheus Operator通过ServiceMonitor CRD识别metrics目标,需在monitoring命名空间创建(或确保Prometheus配置了跨命名空间发现):

Nuclio控制器ServiceMonitor

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: nuclio-controller-monitor
  namespace: monitoring
  labels:
    release: kube-prometheus-stack  # 需与kube-prometheus-stack的release名称一致
spec:
  namespaceSelector:
    matchNames:
    - nuclio
  selector:
    matchLabels:
      app: nuclio-controller  # 与控制器Service的标签匹配
  endpoints:
  - port: metrics
    path: /metrics
    interval: 30s

Nuclio函数ServiceMonitor

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: nuclio-functions-monitor
  namespace: monitoring
  labels:
    release: kube-prometheus-stack
spec:
  namespaceSelector:
    matchNames:
    - nuclio
  selector:
    matchLabels:
      app: nuclio-function  # 与函数Service的标签匹配
  endpoints:
  - port: metrics
    path: /metrics
    interval: 30s

执行命令应用ServiceMonitor:

kubectl apply -f <servicemonitor文件名> -n monitoring

4. 验证配置有效性

  • 端口转发访问Prometheus UI:
    kubectl port-forward svc/kube-prometheus-stack-prometheus 9090:9090 -n monitoring
    
  • 在Prometheus UI的「Status」→「Targets」页面,搜索nuclio,查看对应target是否显示为UP状态。

常见问题排查

  • 若目标未出现,检查ServiceMonitor的release标签是否与kube-prometheus-stack的release名一致(用helm list -n monitoring查看)
  • 测试Nuclio Pod的metrics端口是否可访问:
    kubectl port-forward <nuclio-pod-name> 8090:8090 -n nuclio
    curl http://localhost:8090/metrics
    
    若能返回metrics数据,说明问题出在Service或ServiceMonitor配置
  • 查看Prometheus日志排查抓取错误:
    kubectl logs -n monitoring -l app=prometheus -c prometheus
    

内容的提问来源于stack exchange,提问作者Mulu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:50:24