自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Prometheus 的新戰(zhàn)場(chǎng):精準(zhǔn)監(jiān)控阿里云 AKS Serverless 集群

安全 應(yīng)用安全
Prometheus-Operator 是 Kubernetes 生態(tài)中廣泛應(yīng)用的監(jiān)控組件,能夠簡(jiǎn)化 Prometheus 的部署和管理。然而,隨著云原生技術(shù)的發(fā)展,監(jiān)控阿里云 AKS Serverless 集群成為了一個(gè)新的挑戰(zhàn)。

引言

我們緊接著上篇的 PromQL,接著往上蓋大樓。這篇我們的主角是 Prometheus-Operator 的 Prometheus,它的重要性就不言而喻了。

Prometheus-Operator 是 Kubernetes 生態(tài)中廣泛應(yīng)用的監(jiān)控組件,能夠簡(jiǎn)化 Prometheus 的部署和管理。然而,隨著云原生技術(shù)的發(fā)展,監(jiān)控阿里云 AKS Serverless 集群成為了一個(gè)新的挑戰(zhàn)。這些服務(wù)本質(zhì)上是無(wú)服務(wù)器的,無(wú)法通過(guò)傳統(tǒng)的節(jié)點(diǎn)指標(biāo)采集方式進(jìn)行監(jiān)控。因此,我們需要對(duì) Prometheus 自身進(jìn)行調(diào)整,以更好地適配阿里云 AKS Serverless 場(chǎng)景。

本文將探討如何通過(guò)重塑 Prometheus ,使其高效監(jiān)控阿里云 AKS Serverless 環(huán)境。

開始

基本設(shè)計(jì)

prometheus-operator 的控制鏈路其實(shí)非常簡(jiǎn)單,我們只需要知道以下基本原理就行:

? PodMonitor 和 ServiceMonitor 最終是用于生成 Prometheus 配置文件中的 srape_config;

? Prometheus 可以使用一個(gè) HTTP Post 請(qǐng)求 /-/reload 來(lái)在運(yùn)行時(shí)重新加載配置文件使新的 scrape_config 生效;

以上文為例,prometheus-operator 的控制鏈路是:

Prometheus

prometheus-operator 監(jiān)聽(tīng) Promtheus 資源,當(dāng)有 Add Event 發(fā)生時(shí),prometheus-operator 將以 StatefulSet 的形式部署 Prometheus 實(shí)例。每一個(gè) Prometheus Pod 里有兩個(gè)容器:

? prometheus 容器:主容器,使用 /etc/prometheus/config_out/prometheus.env.yaml 作為主要的配置文件:

...
    - --config.file=/etc/prometheus/config_out/prometheus.env.yaml 
...

? prometheus-config-reloader 容器:輔助容器,用于監(jiān)聽(tīng)上游配置文件的變化并調(diào)用主容器的 reload 接口重新加載配置;

當(dāng)我們觀察這個(gè) Pod 的 volumes 時(shí)候,有兩個(gè) volume 可以重點(diǎn)關(guān)注:

...
volumes:
  - name: config
    secret:
      defaultMode: 420
      secretName: prom-agent-prometheus-agent
  - name: config-out
    emptyDir:
      medium: Memory
...

? config-out:EmptyDir 類型的卷,主要是用于 prometheus 容器與 prometheus-config-reloader 容器的數(shù)據(jù)共享,同時(shí)掛載于兩個(gè)容器的 /etc/prometheus/config_out/ 中;

? config:底層是一個(gè) Secret,這個(gè) config 將被掛載為 prometheus-config-reloader 容器中的 /etc/prometheus/config/prometheus.yaml.gz 。 prometheus-config-reloader 會(huì)監(jiān)聽(tīng)這個(gè)文件的變化,一旦有變化,將基于新的文件內(nèi)容生成新的配置文件 /etc/prometheus/config_out/prometheus.env.yaml。 prometheus-config-reloader 將調(diào)用主容器的 reload API 來(lái)重新加載配置文件;

PodMonitor / ServiceMonitor

? prometheus-operator 監(jiān)聽(tīng) PodMonitor 和 ServiceMonitor 的變化。一旦對(duì)應(yīng)資源發(fā)生了變化,prometheus-operator 將基于新的資源生成新的配置文件并將其更新到對(duì)應(yīng)的 Secrets 中。由于對(duì)應(yīng) Secrets 以文件形式掛載于 prometheus-config-reloader 容器中并被監(jiān)聽(tīng)文件變化,所以當(dāng)?shù)讓?Secrets 發(fā)生了變化,kubelet 將分鐘級(jí)傳播變化到對(duì)應(yīng)容器內(nèi)部,從而觸發(fā) prometheus-config-reloader 容器內(nèi)的監(jiān)聽(tīng)邏輯。

? Secrets 內(nèi)部是一個(gè) Base64 之后的 gz 格式的 prometheus.yaml,比如我們可以用下面這種方式解碼出 prometheus.yaml:

kubectl get secrets prometheus-k8s -o jsonpath="{.data.prometheus\.yaml\.gz}" | base64 -d > prometheus.yaml.gz 

gzip -d prometheus.yaml.gz

我們這些了解完成之后,對(duì)于我們后面的改進(jìn)可謂是……語(yǔ)文不好,有點(diǎn)丟人,想不出來(lái)成語(yǔ)了。

Prometheus CRD YAML 優(yōu)化

我們先從 Prometheus 的持久化數(shù)據(jù)說(shuō)起:

storage:
    volumeClaimTemplate:
      spec:
        storageClassName: alicloud-nas-subpath
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 15Gi

本地存儲(chǔ)優(yōu)化;

啟用 WAL 壓縮;

wal_compression: true

減少數(shù)據(jù)保留時(shí)間;

retention: 7d

還有我們資源的優(yōu)化,如果你的集群應(yīng)用很多,資源太少,就會(huì)導(dǎo)致 pod 異常,這邊你自己調(diào)整:

resources:
    limits:
      cpu: "3"
      memory: 3Gi
    requests:
      cpu: 1000m
      memory: 1024Mi

完整文件;

apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
  labels:
    app.kubernetes.io/component: prometheus
    app.kubernetes.io/instance: k8s
    app.kubernetes.io/name: prometheus
    app.kubernetes.io/part-of: kube-prometheus
    app.kubernetes.io/version: 3.0.1
  name: k8s
  namespace: monitoring
spec:
  alerting:
    alertmanagers:
    - apiVersion: v2
      name: alertmanager-main
      namespace: monitoring
      port: web
  enableFeatures: []
  storage:
    volumeClaimTemplate:
      spec:
        storageClassName: alicloud-nas-subpath
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 15Gi
  externalLabels: {}
  image: quay.io/prometheus/prometheus:v3.0.1
  nodeSelector:
    kubernetes.io/os: linux
  podMetadata:
    labels:
      app.kubernetes.io/component: prometheus
      app.kubernetes.io/instance: k8s
      app.kubernetes.io/name: prometheus
      app.kubernetes.io/part-of: kube-prometheus
      app.kubernetes.io/version: 3.0.1
  podMonitorNamespaceSelector: {}
  #  matchExpressions:
  #    - key: kubernetes.io/metadata.name
  #      operator: In
  #      values:
  #        - monitoring
  #        - lobby
  podMonitorSelector: {}
  probeNamespaceSelector: {}
  probeSelector: {}
  replicas: 2
  resources:
    limits:
      cpu: "5"
      memory: 5Gi
    requests:
      cpu: 2000m
      memory: 2048Mi
  ruleNamespaceSelector: {}
  ruleSelector: {}
  scrapeConfigNamespaceSelector: {}
  scrapeConfigSelector: {}
  securityContext:
    fsGroup: 2000
    runAsNonRoot: true
    runAsUser: 1000
  serviceAccountName: prometheus-k8s
  serviceMonitorSelector: {}
  serviceMonitorNamespaceSelector: {}
  #  matchExpressions:
  #    - key: kubernetes.io/metadata.name
  #      operator: In
  #      values:
  #        - monitoring
  #        - lobby
  version: 3.0.1
  retention: 15d
  wal_compression: true

擴(kuò)展

因?yàn)?Prometheus 這邊優(yōu)化的還挺多的,所以我們這一篇就先講到這里,后面我們會(huì)更多的剖析相關(guān)內(nèi)容。

? Prometheus Agent

? PrometheusRule

結(jié)語(yǔ)

我們 Prometheus 基礎(chǔ)的優(yōu)化和改進(jìn)就結(jié)束了,相比較前幾篇,這篇的東西不是很多。其實(shí)還有很多的東西都需要講,我會(huì)把它們給分開。

責(zé)任編輯:武曉燕 來(lái)源: 云原生運(yùn)維圈
相關(guān)推薦

2020-12-09 09:13:08

云計(jì)算IT技術(shù)

2020-12-29 08:48:35

邊緣計(jì)算云計(jì)算分布式云

2015-03-23 16:42:06

2023-10-09 07:31:25

2017-04-21 15:15:54

對(duì)象存儲(chǔ)云價(jià)格

2022-11-03 11:18:52

阿里云Serverless

2023-09-15 16:47:55

2021-07-01 11:29:45

KubernetesGrafana監(jiān)控

2020-05-18 12:04:17

PrometheusMySQL監(jiān)控

2020-03-09 09:15:56

集群Prometheus開源

2020-11-24 12:07:57

阿里云serverless容器

2010-08-23 10:41:51

Google蘋果Android

2024-04-08 08:00:00

云監(jiān)控監(jiān)控?cái)?shù)據(jù)Prometheus

2017-11-03 13:47:12

邊緣計(jì)算歐洲

2025-03-07 08:20:00

數(shù)據(jù)泄露網(wǎng)絡(luò)安全身份管理

2011-12-16 16:19:58

移動(dòng)Web

2025-01-06 00:38:12

2021-12-08 16:40:17

元宇宙

2020-07-27 08:23:15

HadoopPrometheusZabbix
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)