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

基于阿里云Prometheus指標(biāo)的容器水平伸縮

更新時(shí)間:

默認(rèn)HPA只支持基于CPU和內(nèi)存的自動伸縮,并不能滿足日常的運(yùn)維需求。阿里云Prometheus監(jiān)控全面對接開源Prometheus生態(tài),支持類型豐富的組件監(jiān)控,提供多種開箱即用的預(yù)置監(jiān)控大盤,且提供全面托管的Prometheus服務(wù)。本文介紹如何將阿里云Prometheus指標(biāo)轉(zhuǎn)換成HPA可用的指標(biāo),從而為應(yīng)用提供更加便捷的擴(kuò)縮機(jī)制。

前提條件

已部署阿里云Prometheus監(jiān)控組件。具體操作,請參見使用阿里云Prometheus監(jiān)控ACS集群狀態(tài)

操作步驟

部署ack-alibaba-cloud-metrics-adapter

  1. 登錄容器計(jì)算服務(wù)控制臺,在左側(cè)導(dǎo)航欄選擇集群

  2. 集群頁面,單擊目標(biāo)集群ID,然后在左側(cè)導(dǎo)航欄,選擇應(yīng)用 > Helm

  3. Helm頁面,單擊左上角的創(chuàng)建

  4. 創(chuàng)建面板中,Chart搜索選擇ack-alibaba-cloud-metrics-adapter,然后單擊下一步

  5. 在參數(shù)配置頁面,選擇版本號并設(shè)置相應(yīng)參數(shù),然后單擊確定

    Helm頁面可看到ack-alibaba-cloud-metrics-adapter組件已成功部署到集群中。

    image

  6. Helm頁面,找到ack-alibaba-cloud-metrics-adapter,并單擊右側(cè)的更新

  7. 使用以下內(nèi)容,替換模板中對應(yīng)的參數(shù),然后單擊更新

      ......
      prometheus:
      	enabled: true
        # 填寫阿里云Prometheus監(jiān)控的地址。
        url: https://cn-beijing.arms.aliyuncs.com:9443/api/v1/prometheus/xxxx/xxxx/xxxx/cn-beijing
      	# 阿里云Prometheus開啟鑒權(quán)Token后,請配置prometheusHeader Authorization。
        prometheusHeader:
        	Authorization: xxxxxxx
        adapter:
          rules:
            custom:
            # 添加新的轉(zhuǎn)換規(guī)則,請確保阿里云Prometheus中指標(biāo)標(biāo)簽和此處一致,如果不一致,請參見阿里云Prometheus中指標(biāo)標(biāo)簽修改。
            - seriesQuery: http_requests_total{namespace!="",pod!=""}
              resources:
                overrides:
                  # 此處resource為Kubernetes的API Resource,可通過kubectl api-resources -o wide查看。
                  # 此處key對應(yīng)Prometheus數(shù)據(jù)中的LabelName,請確認(rèn)Prometheus指標(biāo)數(shù)據(jù)中有此LabelName。
                  namespace: {resource: "namespace"}
                  pod: {resource: "pod"}
              name:
                matches: ^(.*)_total
                as: ${1}_per_second
              metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[2m])) by (<<.GroupBy>>)
            default: false
        enabled: true    # 這里設(shè)置為true,打開Prometheus adapter。
        ......

    參數(shù)名

    說明

    AlibabaCloudMetricsAdapter.prometheus.url

    填寫阿里云Prometheus監(jiān)控的地址。

    關(guān)于如何獲取Prometheus數(shù)據(jù)請求URL,請參見如何獲取Prometheus數(shù)據(jù)請求URL

    AlibabaCloudMetricsAdapter.prometheus.prometheusHeader.Authorization

    填寫Token。

    關(guān)于如何獲取Token,請參見如何獲取Prometheus數(shù)據(jù)請求URL

    AlibabaCloudMetricsAdapter.prometheus.adapter.rules.custom

    字段內(nèi)容修改為下面示例YAML中對應(yīng)的內(nèi)容。

    AlibabaCloudMetricsAdapter.prometheus.adapter.rules.default

    默認(rèn)創(chuàng)建預(yù)置指標(biāo),推薦關(guān)閉,配置為false

    說明

    關(guān)于ack-alibaba-cloud-adapter配置文件詳細(xì)說明,請參見ack-alibaba-cloud-adapter配置文件詳解

部署示例應(yīng)用

  1. 登錄容器計(jì)算服務(wù)控制臺,在左側(cè)導(dǎo)航欄選擇集群

  2. 集群頁面,單擊目標(biāo)集群ID,然后在左側(cè)導(dǎo)航欄,選擇工作負(fù)載 > 無狀態(tài)

  3. 無狀態(tài)頁面,單擊右上角的使用YAML創(chuàng)建資源

  4. 創(chuàng)建頁面,部署以下YAML文件創(chuàng)建一個(gè)名為sample-app的應(yīng)用及對應(yīng)的Service,然后單擊創(chuàng)建

    說明

    此容器暴露出http_requests_total的指標(biāo),用來標(biāo)識訪問次數(shù)。

    展開查看YAML文件內(nèi)容

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sample-app
      labels:
        app: sample-app
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: sample-app
      template:
        metadata:
          labels:
            app: sample-app
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/acs/knative-sample-fib-server:v1
            name: metrics-provider
            ports:
            - name: http
              containerPort: 8080
            env:
            - name: NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name  
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: sample-app
      namespace: default
      labels:
        app: sample-app
    spec:
      ports:
        - port: 8080
          name: http
          protocol: TCP
          targetPort: 8080
      selector:
        app: sample-app
      type: ClusterIP

添加ServiceMonitor

  1. 登錄ARMS控制臺

  2. 在左側(cè)導(dǎo)航欄,單擊接入中心,然后在搜索框中搜索自定義指標(biāo)采集,單擊自定義指標(biāo)采集卡片。

  3. 在彈出面板的開始接入頁簽下,選中容器服務(wù)環(huán)境,并選擇目標(biāo)ACS集群。

  4. 參考下表在配置信息區(qū)域填寫ServiceMonitor的配置信息,然后單擊確定

    配置項(xiàng)

    示例值

    接入名稱

    sample-app

    服務(wù)發(fā)現(xiàn)方式

    ServiceMonitor

    命名空間

    default

    端口名稱

    http

    指標(biāo)采集路徑

    /metrics

    采集間隔(秒)

    30

    標(biāo)簽匹配

    • app

    • sample-app

  5. 等待接入狀態(tài)檢查完成。出現(xiàn)接入成功,開始您的觀測之旅字樣則說明接入操作已完成。

  6. 單擊接入管理,確認(rèn)監(jiān)控狀態(tài)。效果如下圖。

    image

ack-alibaba-cloud-adapter配置文件詳解

以上文中sample-app容器中暴露出來的http_requests_total指標(biāo)轉(zhuǎn)換成HPA中的http_requests_per_second為例,完整的ack-alibaba-cloud-adapter配置文件如下。

- seriesQuery: http_requests_total{namespace!="",pod!=""}
  resources:
    overrides:
      namespace: {resource: "namespace"}
      pod: {resource: "pod"}
  name:
    matches: ^(.*)_total
    as: ${1}_per_second
  metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[2m])) by (<<.GroupBy>>)

配置項(xiàng)

說明

seriesQuery

PromQL請求數(shù)據(jù)。

metricsQuery

seriesQuery中PromQL請求的數(shù)據(jù)做聚合操作。

resources

PromQL里的數(shù)據(jù)Label,與resource進(jìn)行匹配。這里的resource是指集群內(nèi)的api-resource,例如Pod、Namespace。可通過kubectl api-resources -o wide查看。此處Key對應(yīng)Prometheus數(shù)據(jù)中的LabelName,請確認(rèn)Prometheus指標(biāo)數(shù)據(jù)中有此LabelName。

name

根據(jù)正則匹配把Prometheus指標(biāo)名轉(zhuǎn)為比較可讀的指標(biāo)名,這里是把http_request_total轉(zhuǎn)為http_request_per_second

  • Discovery:ack-alibaba-cloud-adapter組件會從Prometheus發(fā)現(xiàn)可用的指標(biāo)。

    指定待轉(zhuǎn)換的Prometheus指標(biāo),您可以通過seriesFilters精確過濾指標(biāo)。seriesQuery可以根據(jù)標(biāo)簽進(jìn)行查找(示例代碼如下)。

    seriesQuery: http_requests_total{namespace!="",pod!=""}
    seriesFilters:
        - isNot: "^container_.*_seconds_total"
    說明

    seriesFilters為非必填項(xiàng),用來過濾指標(biāo):

    • is:<regex>,匹配包含該正則表達(dá)式的指標(biāo)。

    • isNot:<regex>,匹配不包含該正則表達(dá)式的指標(biāo)。

  • Association:將指標(biāo)與Kubernetes資源(Pod、Namespace)相關(guān)聯(lián)。

    設(shè)置Prometheus指標(biāo)標(biāo)簽與Kubernetes中的資源映射關(guān)系。http_requests_total指標(biāo)的標(biāo)簽包括namespace!=""pod!=""

    - seriesQuery: http_requests_total{namespace!="",pod!=""}
      resources:
        overrides:
          namespace: {resource: "namespace"}
          pod: {resource: "pod"}
  • Naming:定義轉(zhuǎn)換后的HPA可用指標(biāo)名稱。

    用于將Prometheus指標(biāo)名稱轉(zhuǎn)換成HPA的指標(biāo)名稱,但不會改變Prometheus本身的指標(biāo)名稱。如果使用Prometheus原來的指標(biāo),可以不設(shè)置。

    說明

    您可以通過執(zhí)行命令kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1"查看HPA可用的所有指標(biāo)。

    - seriesQuery: http_requests_total{namespace!="",pod!=""}
      resources:
        overrides:
          namespace: {resource: "namespace"}
          pod: {resource: "pod"}
      name:
        matches: "^(.*)_total"
        as: "${1}_per_second"
  • Querying:定義查詢Prometheus語句。

    查詢Prometheus API的模板。ack-alibaba-cloud-adapter會根據(jù)HPA中的參數(shù),填充參數(shù)到此模板中,然后發(fā)送給Prometheus API請求,并將獲得的值最終提供給HPA進(jìn)行彈性擴(kuò)縮。

    - seriesQuery: http_requests_total{namespace!="",pod!=""}
      resources:
        overrides:
          namespace: {resource: "namespace"}
          pod: {resource: "pod"}
      name:
        matches: ^(.*)_total
        as: ${1}_per_second
      metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[2m])) by (<<.GroupBy>>)

如何獲取Prometheus數(shù)據(jù)請求URL

阿里云Prometheus監(jiān)控

  1. 登錄ARMS控制臺

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

  3. Prometheus監(jiān)控頁面左上角選擇ACS集群所在的地域,然后單擊目標(biāo)實(shí)例名稱進(jìn)入對應(yīng)實(shí)例頁面。

  4. 在左側(cè)導(dǎo)航欄單擊設(shè)置,然后單擊設(shè)置頁簽。

  5. 設(shè)置頁簽下獲取HTTP API地址(Grafana讀取地址)和Token。

    推薦使用內(nèi)網(wǎng),如無法使用內(nèi)網(wǎng)時(shí),可使用公網(wǎng)。

    Prometheus.png

開源Prometheus監(jiān)控

  1. 部署Prometheus監(jiān)控方案。

    1. 登錄容器計(jì)算服務(wù)控制臺,在左側(cè)導(dǎo)航欄選擇集群

    2. 集群頁面,單擊目標(biāo)集群ID,然后在左側(cè)導(dǎo)航欄,選擇應(yīng)用 > Helm

    3. Helm頁面,單擊左上角的創(chuàng)建

    4. 創(chuàng)建面板中,Chart搜索選擇ack-prometheus-operator,然后單擊下一步

    5. 參數(shù)配置頁面,設(shè)置相應(yīng)參數(shù),然后單擊確定

      1. 查看部署結(jié)果:

        1. 執(zhí)行以下命令,將集群中的Prometheus映射到本地9090端口。

          kubectl port-forward svc/ack-prometheus-operator-prometheus 9090:9090 -n monitoring
        2. 在瀏覽器中訪問localhost:9090,即可查看Prometheus。

        3. 選擇菜單欄Status > Targets,查看所有采集任務(wù)。采集任務(wù)如果所有任務(wù)的狀態(tài)為UP,表示所有采集任務(wù)均已正常運(yùn)行。Targets

  2. 查看Labels中對應(yīng)的servicenamespace

    以ServiceName是ack-prometheus-operator-prometheus,ServiceNamespace是monitoring為例說明該開源Prometheus數(shù)據(jù)請求的URL:

    http://ack-prometheus-operator-prometheus.monitoring.svc.cluster.local:9090