日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過ServiceMonitor創(chuàng)建服務(wù)發(fā)現(xiàn)

可觀測監(jiān)控 Prometheus 版支持使用CRD ServiceMonitor的方式來滿足您自定義服務(wù)發(fā)現(xiàn)的采集需求。通過使用ServiceMonitor,您可以自行定義Pod發(fā)現(xiàn)的Namespace范圍以及通過matchLabel來選擇監(jiān)聽的Service。本文將基于SpringBoot框架演示如何通過ServiceMonitor創(chuàng)建服務(wù)發(fā)現(xiàn)。

Demo

您可以通過下載Demo工程,同步體驗(yàn)通過ServiceMonitor創(chuàng)建服務(wù)發(fā)現(xiàn)的完整過程。

步驟一:創(chuàng)建基礎(chǔ)代碼依賴

  1. 創(chuàng)建一個Maven應(yīng)用,并在pom.xml文件中添加以下依賴。

        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>io.micrometer</groupId>
                <artifactId>micrometer-registry-prometheus</artifactId>
                <version>1.6.6</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
  2. 在項(xiàng)目的src/resources/applications.properties文件中添加以下配置。

    management.endpoints.web.exposure.include=prometheus
  3. 啟動項(xiàng)目,通過瀏覽器訪問http://{host}:{port}/actuator/prometheus

    獲取到對應(yīng)的JVM監(jiān)控,返回示例如下:ServiceMonitor返回示例

步驟二:部署Kubernetes集群

  1. 構(gòu)建一個鏡像,并將構(gòu)建鏡像的Dockerfile文件上傳至鏡像倉庫。有關(guān)鏡像的更多信息,請參見綁定源代碼托管平臺

  2. 參考以下內(nèi)容創(chuàng)建Deployment。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: micrometer-prometheus
      namespace: default
      labels:
        app: demo-prometheus
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: demo-prometheus
      template:
        metadata:
          labels:
            app: demo-prometheus
        spec:
          containers:
            - name: micrometer-prometheus
              image: manjusakalza/micrometer-prometheus:latest
              ports:
                - containerPort: 8080
  3. 參考以下內(nèi)容創(chuàng)建Service。

    apiVersion: v1
    kind: Service
    metadata:
      name: prometheus-metrics-demo
      namespace: default
      labels:
        micrometer-prometheus-discovery: 'true'
    spec:
      selector:
        app: demo-prometheus
      ports:
        - protocol: TCP
          port: 8080
          targetPort: 8080
          name: metrics

步驟三:創(chuàng)建ServiceMonitor

ServiceMonitorYAML文件示例如下:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: micrometer-demo
  namespace: default
spec:
  endpoints:
    - interval: 15s
      path: /actuator/prometheus
      port: metrics    #注意:這里port配置的是端口名,并非端口號。
  namespaceSelector:
    any: true
  selector:
    matchLabels:
      micrometer-prometheus-discovery: 'true'

在這段YAML文件中,各代碼段的含義如下:

  • metadata下的namenamespace將指定ServiceMonitor所需的一些關(guān)鍵元信息。

  • specendpoints為服務(wù)端點(diǎn),代表Prometheus所需的采集Metrics的地址。endpoints為一個數(shù)組,同時可以創(chuàng)建多個endpoints。每個endpoints包含三個字段,每個字段的含義如下:

    • interval:指定Prometheus對當(dāng)前endpoints采集的周期。單位為秒,在本次示例中設(shè)定為15s

    • path:指定Prometheus的采集路徑。在本次示例中,指定為/actuator/prometheus。

    • port:指定采集數(shù)據(jù)需要通過的端口,設(shè)置的端口為步驟二創(chuàng)建Service時端口所設(shè)置的name。在本次示例中,設(shè)定為metrics。

      重要

      這里port配置的是端口名,并非端口號。

  • specnamespaceSelector為需要發(fā)現(xiàn)的Service的范圍。namespaceSelector包含兩個互斥字段,字段的含義如下:

    • any:有且僅有一個值true,當(dāng)該字段被設(shè)置時,將監(jiān)聽所有符合Selector過濾條件的Service的變動。

    • matchNames:數(shù)組值,指定需要監(jiān)聽的namespace的范圍。例如,只想監(jiān)聽defaultarms-prom兩個命名空間中的Service,那么matchNames設(shè)置如下:

      namespaceSelector:
        matchNames:
        - default
        - arms-prom
  • specselector用于選擇Service。

    在本次示例所使用的Servicemicrometer-prometheus-discovery: 'true' Label,所以selector設(shè)置如下:

    selector:
      matchLabels:
        micrometer-prometheus-discovery: 'true'

阿里云Prometheus可以通過以下兩種方式創(chuàng)建ServiceMonitor,請選擇其中一種方式創(chuàng)建。

通過控制臺創(chuàng)建ServiceMonitor

  1. 登錄ARMS控制臺

  2. 在左側(cè)導(dǎo)航欄選擇Prometheus監(jiān)控 > 實(shí)例列表,進(jìn)入可觀測監(jiān)控 Prometheus 版的實(shí)例列表頁面。

  3. 單擊目標(biāo)Prometheus實(shí)例名稱。

  4. 在左側(cè)導(dǎo)航欄,單擊服務(wù)發(fā)現(xiàn),然后單擊配置頁簽。

  5. 配置頁面,單擊ServiceMonitor頁簽,然后單擊添加ServiceMonitor。

  6. 添加ServiceMonitor對話框,輸入YAML文件內(nèi)容,然后單擊確定

通過命令創(chuàng)建ServiceMonitor

  1. 將寫好的YAML文件保存至本地。

  2. 執(zhí)行以下命令使YAML文件生效。

    kubectl apply -f {YAML文件所在的路徑}

步驟四:驗(yàn)證ServiceMonitor

通過以下操作,驗(yàn)證Prometheus是否成功進(jìn)行服務(wù)發(fā)現(xiàn)。

  1. 登錄ARMS控制臺

  2. 在左側(cè)導(dǎo)航欄選擇Prometheus監(jiān)控 > 實(shí)例列表,進(jìn)入可觀測監(jiān)控 Prometheus 版的實(shí)例列表頁面。

  3. 單擊目標(biāo)Prometheus實(shí)例名稱。

  4. 在左側(cè)導(dǎo)航欄單擊服務(wù)發(fā)現(xiàn),然后單擊Targets頁簽。

    Targets頁簽,查看是否存在名稱為{namespace}/{serviceMonitorName}/xTarget。ServiceMonitor在Target頁簽顯示

  5. 單擊{namespace}/{serviceMonitorName}/x所在行展開Target,然后單擊Endpoint鏈接。

    驗(yàn)證Metrics是否正常。ServiceMonitor的Target的endpoint