创建部署问题时,请参考下面模板,你提供的信息越多,越容易及时获得解答。如果未按模板创建问题,管理员有权关闭问题。
确保帖子格式清晰易读,用 markdown code block 语法格式化代码块。
你只花一分钟创建的问题,不能指望别人花上半个小时给你解答。

操作系统信息
例如:虚拟机,Centos7.5,4C/8G

Kubernetes版本信息
kubectl version : 1.22.10

容器运行时
docker version / crictl version / nerdctl version 结果贴在下方

docker version:20.10.8

KubeSphere版本信息
kubesphere 版本:v3.3.0,使用kk安装,先all-in-one模式,后增加的节点

问题是什么

按照此博客的方法,部署自己的springboot项目,到prometheus查看,发现没有收集到指标。不知道哪个地方配置错了,对监控这块还不太熟悉,还望不吝赐教,谢谢 😁 😁

在 KubeSphere 中使用 DevOps 部署 Java 微服务配置监控预警

下面是ServiceMonitor配置文件:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: >
      {"apiVersion":"monitoring.coreos.com/v1","kind":"ServiceMonitor","metadata":{"annotations":{},"labels":{"app":"java-actuator-prometheus","component":"java-actuator-prometheus","heritage":"Tiller","release":"prometh-java-actuator"},"name":"monitor-java-actuator-prometheus","namespace":"kubesphere-monitoring-system"},"spec":{"endpoints":[{"honorLabels":true,"interval":"5s","path":"/api/actuator/prometheus","port":"http"}],"jobLabel":"java-actuator-prometheus","namespaceSelector":{"any":true},"selector":{"matchLabels":{"release":"java-actuator-prometheus"}}}}
  labels:
    app: java-actuator-prometheus
    component: java-actuator-prometheus
    heritage: Tiller
    release: prometh-java-actuator
  name: monitor-java-actuator-prometheus
  namespace: default
spec:
  endpoints:
    - honorLabels: true
      interval: 5s
      path: /actuator/prometheus
      port: http
  jobLabel: java-actuator-prometheus
  namespaceSelector:
    any: true
  selector:
    matchLabels:
      release: java-actuator-prometheus

下面是分别是deploment配置文件:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: test
  namespace: website
  labels:
    app: test
    release: java-actuator-prometheus
  annotations:
    deployment.kubernetes.io/revision: '7'
    kubesphere.io/creator: admin
    prometheus.io/path: /actuator/prometheus
    prometheus.io/port: '9001'
    prometheus.io/scrape: 'true'
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: test
        release: java-actuator-prometheus
    spec:
      volumes:
        - name: host-time
          hostPath:
            path: /etc/localtime
            type: ''
      containers:
        - name: container-ez9eia
          image: xxxruoyi-admin:SNAPSHOT--200
          args:
            - '--spring.profiles.active=prod'
          ports:
            - name: tcp-8080
              containerPort: 8080
              protocol: TCP
            - name: tcp-9001
              containerPort: 9001
              protocol: TCP
          resources: {}
          volumeMounts:
            - name: host-time
              readOnly: true
              mountPath: /etc/localtime
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      serviceAccountName: default
      serviceAccount: default
      securityContext: {}
      imagePullSecrets:
        - name: harbor2
      schedulerName: default-scheduler
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600

下面是service配置文件:

kind: Service
apiVersion: v1
metadata:
  name: test-service
  namespace: website
  labels:
    app: test-service
    release: java-actuator-prometheus
  annotations:
    kubesphere.io/creator: admin
    prometheus.io/path: /actuator/prometheus
    prometheus.io/port: '9001'
    prometheus.io/scrape: 'true'
spec:
  ports:
    - name: http-9001
      protocol: TCP
      port: 9001
      targetPort: 9001
      nodePort: 32307
  selector:
    app: test
  clusterIP: 10.233.37.166
  clusterIPs:
    - 10.233.37.166
  type: NodePort
  sessionAffinity: None
  externalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  internalTrafficPolicy: Cluster

我在命令行运行,是可以通过接口返回指标的:

然后我也在prometheus web ui中看到了配置文件:

但是在prometheus中看不到相关的指标,不清楚哪里配置错了,希望熟悉监控的朋友,可以赐教 😆 😆

    die1100

    在 ServiceMonitor 配置的endpoints中配置的 port name 为http

      endpoints:
        - honorLabels: true
          interval: 5s
          path: /actuator/prometheus
          port: http

    但service中的port name 是 http-9001

        - name: http-9001
          protocol: TCP
          port: 9001
          targetPort: 9001
          nodePort: 32307

    这里不一致 😅

      frezes

      我还再想,http底层用tcp,应该能通呢,就没在意,我试一下,感谢感谢 🤣