Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Prometheus-metrikák gyűjteményének testreszabása a Kubernetes-fürtből azt ismerteti, hogyan szabhatja testre a Prometheus-metrikák kaparását a Kubernetes-fürt alapértelmezett példányaiból a ConfigMap használatával. Ez a cikk bemutatja, hogyan hozhat létre egyéni kaparásfeladatokat a ConfigMap használatával további testreszabási és további célokhoz.
Konfigurációtérképek
Az alábbi táblázat az egyéni kaparási feladatok létrehozásához használt konfigurációtérképeket ismerteti. Ezek a konfigurációtérképek alapértelmezés szerint nem léteznek a fürtben, ha engedélyezve van a felügyelt Prometheus.
| Konfigurációs térkép | Description |
|---|---|
ama-metrics-prometheus-config (Ajánlott) |
Az ilyen nevű ConfigMap létrehozásakor a rendszer a benne definiált kaparós feladatokat a fürtben futó Azure Monitor-metrikák replika podjáról futtatja. |
ama-metrics-prometheus-config-node (Haladó) |
Adja meg a Prometheus scrape konfigurációját az addon DaemonSethez, amely a fürt minden Linux-csomópontján fut, valamint a csomópontok mindegyikére vonatkozó csomópontszintű célokat is. Lásd: Speciális beállítás. |
ama-metrics-prometheus-config-node-windows (Haladó) |
Adja meg a Prometheus scrape konfigurációját az addon DaemonSethez, amely a fürt minden Windows-csomópontján fut, valamint adja meg a csomópont szintű célokat az egyes csomópontokon. Lásd: Speciális beállítás. |
Prometheus konfigurációs fájl létrehozása
A közvetlen módosítás ama-metrics-prometheus-confighelyett egyszerűbb létrehozni egy konfigurációs fájlt, majd átalakítani ConfigMap-ra. A fájl különböző szakaszaival kapcsolatos részletekért tekintse meg az alábbi Scrape konfigurációs beállításokat .
Hozzon létre egy Prometheus scrape konfigurációs fájlt prometheus-config a következő formátumban. Ez a scrape_configs szakasz alatt felsorolja a kaparáskonfigurációkat, és opcionálisan használhatja a globális szakaszt a globális scrape_interval, scrape_timeout és external_labels beállításához. A kaparókonfiguráció beállításainak részletes részleteiért tekintse meg Prometheus.io kaparáskonfigurációs referenciát .
global:
scrape_interval: <duration>
scrape_timeout: <duration>
external_labels:
<labelname1>: <labelvalue>
<labelname2>: <labelvalue>
scrape_configs:
- <job-x>
- <job-y>
Az alábbi minta Prometheus scrape konfigurációs fájl:
global:
scrape_interval: 30s
scrape_configs:
- job_name: my_static_config
scrape_interval: 60s
static_configs:
- targets: ['my-static-service.svc.cluster.local:1234']
- job_name: prometheus_example_app
scheme: http
kubernetes_sd_configs:
- role: service
relabel_configs:
- source_labels: [__meta_kubernetes_service_name]
action: keep
regex: "prometheus-example-service"
Jótanács
Tekintse meg a Prometheus-példákat egy Kubernetes-fürt kaparáskonfigurációira.
A scrape config fájl ellenőrzése
Az ügynök egy egyéni promconfigvalidator eszközzel ellenőrzi a ConfigMap-on keresztül kapott Prometheus-konfigurációt. Ha a konfiguráció érvénytelen, az ügynök elutasítja az egyéni konfigurációt. Miután létrehozta a Prometheus konfigurációs fájlját, ezzel az eszközzel ellenőrizheti a konfigurációt, mielőtt létrehoz egy ConfigMap-et az ügynökhöz.
Az promconfigvalidator eszköz az Azure Monitor metrika-bővítmény podon belül lesz szállítva. A fürtjében található kube-system névtérben bármelyik ama-metrics-node-* pod használatával letöltheti az érvényesítési eszközt. Az kubectl cp eszköz és konfigurációja az alábbi paranccsal tölthető le.
for podname in $(kubectl get pods -l rsName=ama-metrics -n=kube-system -o json | jq -r '.items[].metadata.name'); do kubectl cp -n=kube-system "${podname}":/opt/promconfigvalidator ./promconfigvalidator; kubectl cp -n=kube-system "${podname}":/opt/microsoft/otelcollector/collector-config-template.yml ./collector-config-template.yml; chmod 500 promconfigvalidator; done
A végrehajtható fájl és a yaml másolása után keresse meg a Prometheus konfigurációs fájl elérési útját. Ezután cserélje le a <config path>-t a parancsban, és az érvényesítőt futtassa a következő módon.
./promconfigvalidator/promconfigvalidator --config "<config path>" --otelTemplate "./promconfigvalidator/collector-config-template.yml"
Az érvényesítő futtatása létrehozza az egyesített konfigurációs fájlt merged-otel-config.yaml , ha nincs megadva elérési út az opcionális output paraméterrel. Ne használja ezt az automatikusan létrehozott egyesített fájlt, mivel csak eszközérvényesítési és hibakeresési célokra használják.
ConfigMap-ként történő konfigurációs fájl üzembe helyezése
Az egyéni Prometheus-konfigurációs fájlt a prometheus-config, ama-metrics-prometheus-config, vagy ama-metrics-prometheus-config-node ConfigMapben található, ama-metrics-prometheus-config-node-windows névre hallgató mezőként használja fel a kube-system névtérben. Hozzon létre egy ConfigMap-et a scrape konfigurációs fájlból úgy, hogy a Prometheus konfigurációs fájlját átnevezi prometheus-config fájlkiterjesztés nélkül, majd futtassa az alábbi mintaparancsok közül egyet vagy többet, attól függően, hogy melyik ConfigMap-et szeretné létrehozni az egyéni scrape feladat konfigurációjához.
Hozzon létre ConfigMap-et a replikakészlet számára:
kubectl create ConfigMap ama-metrics-prometheus-config --from-file=prometheus-config -n kube-system
Ez létrehoz egy ama-metrics-prometheus-config elnevezésű ConfigMap-et a kube-system névtérben. Ha ellenőrizni szeretné, hogy van-e probléma a konfiguráció érvényesítésével, feldolgozásával vagy egyesítésével kapcsolatban, megtekintheti a ama-metrics replika podjait
Hozzon létre ConfigMap-et, amelyet a Linux DaemonSet használ:
kubectl create ConfigMap ama-metrics-prometheus-config-node --from-file=prometheus-config -n kube-system
Ez létrehoz egy ConfigMap-et ama-metrics-prometheus-config-node néven a kube-system névtérben. Annak ellenőrzéséhez, hogy van-e probléma a konfiguráció érvényesítésével, feldolgozásával vagy egyesítésével kapcsolatban, tekintse meg a ama-metrics-node linuxos deamonset podokat
A Windows DaemonSet által használandó konfigurációtérkép létrehozása
kubectl create ConfigMap ama-metrics-prometheus-config-node-windows --from-file=prometheus-config -n kube-system
Ez létrehoz egy ama-metrics-prometheus-config-node-windows nevű ConfigMap-et a kube-system névtérben. Annak ellenőrzéséhez, hogy van-e probléma a konfiguráció érvényesítésével, feldolgozásával vagy egyesítésével kapcsolatban, tekintse meg a ama-metrics-win-node Windows deamonset podokat
Hibaelhárítás
Ha sikeresen létrehozta a ConfigMap-et a kube-system névtérben, és továbbra sem látja az egyéni célokat lehívva, ellenőrizze a replika pod naplókat az ama-metrics-prometheus-config ConfigMap-nél vagy a DaemonSet pod naplókat az ama-metrics-prometheus-config-node ConfigMap esetén a kubectl logs parancs segítségével, és győződjön meg arról, hogy nincsenek hibák a Alapértelmezett és az Egyéni Prometheus Konfiguráció indítása szakaszban a prometheus-config-merger előtaggal.
Konfigurációk lekaparása
Jelenleg a scrapekonfiguráció célfelderítésének támogatott módszerei vagy a -et, vagy a static_configs-t használják a célok megadására vagy felderítésére.
A statikus konfigurációkban megtalálható a statikus célok listája, valamint a hozzájuk hozzáadni kívánt további címkék, ahogyan az alábbi ábrán is szerepel.
scrape_configs:
- job_name: example
- targets: [ '10.10.10.1:9090', '10.10.10.2:9090', '10.10.10.3:9090' ... ]
- labels: [ label1: value1, label1: value2, ... ]
Az egyesével kubernetes_sd_configs felderített célok különböző címkékkel rendelkeznek __meta_* , attól függően, hogy milyen szerepkör van megadva. A szakasz címkéivel szűrheti a relabel_configs célokat, vagy lecserélheti a célcímkéket.
Újracímkézetlen konfigurációk
A relabel_configs szakasz a célfelderítéskor lesz alkalmazva, és a feladat minden egyes céljára érvényes. Az alábbi példák a használati relabel_configsmódokat mutatják be.
Címke hozzáadása Adjon hozzá új címkét example_label, értékével example_value a feladat minden metrikájához. Csak azért használja __address__ forráscímkeként, mert ez a címke mindig létezik, és hozzáadja a címkét a feladat minden céljához.
relabel_configs:
- source_labels: [__address__]
target_label: example_label
replacement: 'example_value'
Kubernetes Service Discovery-címkék használata
Ha egy munka kubernetes_sd_configs segítségével célokat derít fel, minden szerepkörhöz tartozó __meta_* címkék vannak a metrikák számára. A __* címkék a célpontok felderítése után el lesznek dobva. A szűréshez a metrikák szintjén való használatuk érdekében először relabel_configs segítségével adjon nekik címkenevet. Ezután használja metric_relabel_configs a szűréshez.
# Use the kubernetes namespace as a label called 'kubernetes_namespace'
relabel_configs:
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
# Keep only metrics with the kubernetes namespace 'default'
metric_relabel_configs:
- source_labels: [kubernetes_namespace]
action: keep
regex: 'default'
Feladat- és példány újracímkézés
A job és instance címke értékeit a forráscímke alapján módosíthatja, ugyanúgy, mint bármely más címkét.
# Replace the job name with the pod label 'k8s app'
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_k8s_app]
target_label: job
# Replace the instance name with the node name. This is helpful to replace a node IP
# and port with a value that is more readable
relabel_configs:
- source_labels: [__meta_kubernetes_node_name]
target_label: instance
Metrikák címkézési konfigurációi
A metrika-újracímkézési konfigurációk a kaparás után és a betöltés előtt lesznek alkalmazva. A szakasz használatával szűrheti a metric_relabel_configs metrikákat a kaparás után. Lásd az alábbi példákat.
Metrikák törlése név szerint
# Drop the metric named 'example_metric_name'
metric_relabel_configs:
- source_labels: [__name__]
action: drop
regex: 'example_metric_name'
Csak bizonyos metrikákat tarts meg név szerint
# Keep only the metric named 'example_metric_name'
metric_relabel_configs:
- source_labels: [__name__]
action: keep
regex: 'example_metric_name'
# Keep only metrics that start with 'example_'
metric_relabel_configs:
- source_labels: [__name__]
action: keep
regex: '(example_.*)'
Metrikák szűrése címkék szerint
# Keep metrics only where example_label = 'example'
metric_relabel_configs:
- source_labels: [example_label]
action: keep
regex: 'example'
# Keep metrics only if `example_label` equals `value_1` or `value_2`
metric_relabel_configs:
- source_labels: [example_label]
action: keep
regex: '(value_1|value_2)'
# Keep metrics only if `example_label_1 = value_1` and `example_label_2 = value_2`
metric_relabel_configs:
- source_labels: [example_label_1, example_label_2]
separator: ';'
action: keep
regex: 'value_1;value_2'
# Keep metrics only if `example_label` exists as a label
metric_relabel_configs:
- source_labels: [example_label_1]
action: keep
regex: '.+'
Metrikák átnevezése A metrika átnevezése nem támogatott.
Megjegyzés:
Ha az egyéni konfigurációban lévő összes feladathoz címkéket szeretne hozzáadni, explicit módon adjon hozzá címkéket metrics_relabel_configs az egyes feladatokhoz. A globális külső címkék nem támogatottak a ConfigMap-alapú prometheus-konfigurációval.
relabel_configs:
- source_labels: [__address__]
target_label: example_label
replacement: 'example_value'
Alapszintű hitelesítés és tulajdonosi jogkivonatok
Ha egyszerű szövegként használja a felhasználónevet, a jelszót vagy a hitelesítő adatokat a kaparás konfigurációjában, nincs szükség további módosításokra. A konfigurációban megadott értékek kaparáshoz lesznek használva. Ha a prometheus-konfigurációban basic_auth vagy bearer_token beállításokhoz használja a username_file vagy password_file (illetve bármilyen _file konfigurációs beállítást), kövesse az alábbi lépéseket:
Hozzon létre egy titkos kulcsot a
kube-systemnévtérben.ama-metrics-mtls-secretA kulcs
password1neve bármilyen lehet, amíg egyezik a fájlnévvel apassword_fileútvonalon, ahogy az szerepel a Prometheus scrape konfigurációban a következő lépésben. A kulcs értékének base64 kódolásúnak kell lennie.apiVersion: v1 kind: Secret metadata: name: ama-metrics-mtls-secret namespace: kube-system type: Opaque data: password1: <base64-encoded-string>A
ama-metrics-mtls-secrettitok aama-metricspodokra van szerelve az/etc/prometheus/certs/útvonalon, és elérhetővé válik a Prometheus scraper számára. A kulcs (password1a fenti példában) a fájl neve lesz. Az érték a base64 dekódolva van, és a tárolóban lévő fájl tartalmaként van hozzáadva.Adja meg a filepatht az egyéni kaparás konfigurációjában a ConfigMap-ban:
Alapszintű hitelesítés A
usernamemezőnek tartalmaznia kell a tényleges felhasználónév-sztringet. Apassword_filemezőnek tartalmaznia kell a jelszót tartalmazó fájl elérési útját.# Sets the `Authorization` header on every scrape request with the # configured username and password. basic_auth: username: <username string> password_file: /etc/prometheus/certs/password1Tulajdonosi jogkivonat A
bearer_token_filemezőnek tartalmaznia kell a jogkivonatot tartalmazó fájl elérési útját.# Sets the `Authorization` header on every scrape request with the bearer token # read from the configured file. It is mutually exclusive with `bearer_token`. bearer_token_file: /etc/prometheus/certs/password1
Ezekről a beállításokról további információt a Prometheus scrape_config dokumentációjában talál.
TLS-alapú adatgyűjtés
Ha a Prometheus metrikáit egy https-végpontról szeretné begyűjteni, a Prometheus konfigurációjában, a PodMonitorban vagy a ServiceMonitorban a scheme értékét állítsa https-re, és adjon meg extra TLS-beállításokat.
Hozzon létre egy titkos kulcsot a
kube-systemnévtérben.ama-metrics-mtls-secretA titkos objektum adatszakaszában megadott kulcs-érték párok külön fájlként lesznek csatlakoztatva ebben a /etc/prometheus/certs helyen az adatszakaszban megadott kulcsokkal megegyező fájlnevekkel. A titkos értékeknek base64 kódolásúnak kell lenniük.Az alábbiakban egy titkos yaML-példát mutatunk be:
apiVersion: v1 kind: Secret metadata: name: ama-metrics-mtls-secret namespace: kube-system type: Opaque data: <certfile>: base64_cert_content <keyfile>: base64_key_contentA
ama-metrics-mtls-secrettitok aama-metricspodokra van szerelve az/etc/prometheus/certs/útvonalon, és elérhetővé válik a Prometheus scraper számára. A kulcs a fájlnév lesz. Az érték a base64 dekódolva van, és a tárolóban lévő fájl tartalmaként van hozzáadva.Adja meg a fájlútmutatót a Prometheus konfigurációjában, a PodMonitorban vagy a ServiceMonitorban:
- A következő példában adja meg a TLS konfigurációs beállítását egy ConfigMap-fájlban:
tls_config: # CA certificate to validate API server certificate with. ca_file: /etc/prometheus/certs/<certfile> # Certificate and key files for client cert authentication to the server. cert_file: /etc/prometheus/certs/<certfile> key_file: /etc/prometheus/certs/<keyfile> # Disable validation of the server certificate. insecure_skip_verify: false
Alapszintű hitelesítés és TLS
Ha alapszintű hitelesítési vagy tulajdonosi jogkivonatot (fájlalapú hitelesítő adatokat) és TLS-hitelesítési beállításokat is szeretne használni a ConfigMap-térképen, győződjön meg arról, hogy a titkos ama-metrics-mtls-secret kód tartalmazza az adatszakasz összes kulcsát a megfelelő base64 kódolású értékekkel, ahogyan az alábbi példában látható:
apiVersion: v1
kind: Secret
metadata:
name: ama-metrics-mtls-secret
namespace: kube-system
type: Opaque
data:
certfile: base64_cert_content # used for TLS
keyfile: base64_key_content # used for TLS
password1: base64-encoded-string # used for basic auth
password2: base64-encoded-string # used for basic auth
Megjegyzés:
Az /etc/prometheus/certs/ elérési út kötelező, de password1 bármilyen sztring lehet, és meg kell egyeznie a fent létrehozott titkos kódban szereplő adatok kulcsával. Ennek az az oka, hogy a titkos kód ama-metrics-mtls-secret a tárolón belüli elérési útra /etc/prometheus/certs/ van csatlakoztatva.
A base64 kódolású értéket az ama-metrics podok automatikusan dekódolják, amikor a titkos kód fájlként van csatlakoztatva. Győződjön meg arról, hogy a titkos kód neve ama-metrics-mtls-secret és a kube-system névtérben van.
Először létre kell hozni a titkos kulcsot, majd létre kell hozni a ConfigMap, PodMonitor vagy ServiceMonitor nevet a névtérben kube-system . A titkos kódok létrehozásának sorrendje számít. Ha nincs titkos kód, csak egy ConfigMap, PodMonitor vagy ServiceMonitor, amely a titkos kódra mutat, a következő hiba jelenik meg az ama-metrics prometheus-collector tárolónaplókban: no file found for cert....
A TLS konfigurációs beállításairól további információt a tls_config talál.
Speciális beállítás: Egyéni Prometheus kaparófeladatok konfigurálása a DaemonSethez
A ama-metrics replika pod az egyéni Prometheus konfigurációt használja, és lekaparja a megadott célokat. A nagy számú csomópontot és podot tartalmazó fürtök esetében, valamint a nagymennyiségű beolvasandó metrika kezelésekor, néhány alkalmazható egyéni beolvasási cél áthelyezhető az egyetlen ama-metrics Replica podról a ama-metrics DaemonSet podra.
A ama-metrics-prometheus-config-node ConfigMap hasonló a replica-set ConfigMap-hez, és úgy hozható létre, hogy az egyes csomópontokon statikus gyűjtési konfigurációk legyenek. A kaparási konfigurációnak csak egyetlen csomópontot kell céloznia, és nem szabad szolgáltatásfelderítési/pod-széljegyzeteket használnia. Ellenkező esetben minden csomópont megpróbálja lekaparni az összes célt, és sok hívást kezdeményez a Kubernetes API-kiszolgálóhoz.
Az egyéni adatok letöltési céljai ugyanazt a formátumot követhetik a static_configs segítségével a célok megadásakor, továbbá használhatják a $NODE_IP környezeti változót, és meghatározhatják az adatgyűjtéshez szükséges portot. A DaemonSet minden podja felveszi a konfigurációt, lekaparja a metrikákat, és elküldi őket az adott csomóponthoz.
Az alábbi node-exporter konfiguráció a DaemonSet podok egyik alapértelmezett célja. A környezeti változót $NODE_IP használja, amely már be van állítva minden ama-metrics bővítménytárolóhoz egy adott port megcélzásához a csomóponton.
- job_name: nodesample
scrape_interval: 30s
scheme: http
metrics_path: /metrics
relabel_configs:
- source_labels: [__metrics_path__]
regex: (.*)
target_label: metrics_path
- source_labels: [__address__]
replacement: '$NODE_NAME'
target_label: instance
static_configs:
- targets: ['$NODE_IP:9100']
A konfigurációs beállítások lekésése
A következő szakaszok a ConfigMap-ban használt Prometheus konfigurációs fájlban támogatott beállításokat ismertetik. A beállításokkal kapcsolatos további részletekért tekintse meg a Prometheus konfigurációs referenciáját .
Globális beállítások
A globális beállítások konfigurációs formátuma megegyezik az OSS prometheus konfigurációja által támogatott formátummal
global:
scrape_interval: <duration>
scrape_timeout: <duration>
external_labels:
<labelname1>: <labelvalue>
<labelname2>: <labelvalue>
scrape_configs:
- <job-x>
- <job-y>
A globális szakaszban megadott beállítások az összes kaparófeladatra vonatkoznak (a Configmap és az Egyéni erőforrások esetében egyaránt), de felül vannak bírálva, ha az egyes feladatokban vannak megadva.
Megjegyzés:
Ha olyan globális beállításokat szeretne használni, amelyek az összes kaparási feladatra vonatkoznak, és csak egyéni erőforrásokkal rendelkeznek, akkor is létre kell hoznia egy konfigurációtérképet, amely csak a globális beállításokat használja.(Az egyéni erőforrások beállításai felülbírálják a globális szakaszban szereplő beállításokat)