偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

引言

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

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

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

開始

基本設(shè)計

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

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

? Prometheus 可以使用一個 HTTP Post 請求 /-/reload 來在運行時重新加載配置文件使新的 scrape_config 生效;

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

Prometheus

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

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

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

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

當我們觀察這個 Pod 的 volumes 時候,有兩個 volume 可以重點關(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ù)共享,同時掛載于兩個容器的 /etc/prometheus/config_out/ 中;

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

PodMonitor / ServiceMonitor

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

? Secrets 內(nèi)部是一個 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

我們這些了解完成之后,對于我們后面的改進可謂是……語文不好,有點丟人,想不出來成語了。

Prometheus CRD YAML 優(yōu)化

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

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

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

啟用 WAL 壓縮;

wal_compression: true

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

retention: 7d

還有我們資源的優(yōu)化,如果你的集群應(yīng)用很多,資源太少,就會導(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

擴展

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

? Prometheus Agent

? PrometheusRule

結(jié)語

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

責任編輯:武曉燕 來源: 云原生運維圈
相關(guān)推薦

2020-12-09 09:13:08

云計算IT技術(shù)

2023-10-09 07:31:25

2022-11-03 11:18:52

阿里云Serverless

2020-12-29 08:48:35

邊緣計算云計算分布式云

2015-03-23 16:42:06

2021-07-01 11:29:45

KubernetesGrafana監(jiān)控

2020-03-09 09:15:56

集群Prometheus開源

2020-05-18 12:04:17

PrometheusMySQL監(jiān)控

2023-09-15 16:47:55

2017-04-21 15:15:54

對象存儲云價格

2020-11-24 12:07:57

阿里云serverless容器

2024-04-08 08:00:00

云監(jiān)控監(jiān)控數(shù)據(jù)Prometheus

2025-01-06 00:38:12

2010-08-23 10:41:51

Google蘋果Android

2020-07-27 08:23:15

HadoopPrometheusZabbix

2025-03-07 08:20:00

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

2011-12-16 16:19:58

移動Web

2018-08-16 17:25:20

阿里云ServerlessKubernetes

2020-11-23 09:57:39

微軟kubernetesAKS
點贊
收藏

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