Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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 egyéni erőforrásdefiníciók (CRD-k) használatával további testreszabásokhoz és további célokhoz.
Egyéni erőforrás-definíciók (CRD-k)
Az Azure Monitor Prometheus felügyelt szolgáltatásának engedélyezése automatikusan üzembe helyezi az egyéni erőforrás-definíciókat (CRD) pod monitorokhoz és szolgáltatás monitorokhoz. Ezek a CRD-k megegyeznek az OSS podfigyelőivel és a Prometheus OSS-szolgáltatásfigyelőivel , kivéve a csoportnév módosítását. Ha meglévő Prometheus CRD-kkel és egyéni erőforrásokkal rendelkezik a fürtön, ezek a CRD-k nem ütköznek a bővítmény által létrehozott CRD-kkel. Ugyanakkor a felügyelt Prometheus-bővítmény nem veszi fel az OSS Prometheushoz létrehozott CRD-ket. Ez az elkülönítés szándékos a kaparási feladatok elkülönítése érdekében.
Pod vagy szolgáltatásfigyelő létrehozása
Használja a Pod- és Szolgáltatásfigyelő-sablonokat , és kövesse az API-specifikációt az egyéni erőforrások (PodMonitor és Service Monitor) létrehozásához. A meglévő OSS egyéni erőforrásoknak, amelyeket a felügyelt Prometheus vesz át, az egyetlen szükséges módosítása az API-csoport – azmonitoring.coreos.com/v1.
Fontos
Ügyeljen arra, hogy a sablonokban megadott labelLimit, labelNameLengthLimit és labelValueLengthLimit címkét használja, hogy azok ne legyenek elvetve a feldolgozás során. 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 .
A pod- és szolgáltatásmonitoroknak az alábbi példákhoz hasonlóan kell kinéznie:
Példa podfigyelőre
# Note the API version is azmonitoring.coreos.com/v1 instead of monitoring.coreos.com/v1
apiVersion: azmonitoring.coreos.com/v1
kind: PodMonitor
# Can be deployed in any namespace
metadata:
name: reference-app
namespace: app-namespace
spec:
labelLimit: 63
labelNameLengthLimit: 511
labelValueLengthLimit: 1023
# The selector specifies which pods to filter for
selector:
# Filter by pod labels
matchLabels:
environment: test
matchExpressions:
- key: app
operator: In
values: [app-frontend, app-backend]
# [Optional] Filter by pod namespace. Required if service is in another namespace.
namespaceSelector:
matchNames: [app-frontend, app-backend]
# [Optional] Labels on the pod with these keys will be added as labels to each metric scraped
podTargetLabels: [app, region, environment]
# Multiple pod endpoints can be specified. Port requires a named port.
podMetricsEndpoints:
- port: metricscs from the exa
Példa szolgáltatásfigyelőre
# Note the API version is azmonitoring.coreos.com/v1 instead of monitoring.coreos.com/v1
apiVersion: azmonitoring.coreos.com/v1
kind: ServiceMonitor
# Can be deployed in any namespace
metadata:
name: reference-app
namespace: app-namespace
spec:
labelLimit: 63
labelNameLengthLimit: 511
labelValueLengthLimit: 1023
# The selector filters endpoints by service labels.
selector:
matchLabels:
app: reference-app
# Multiple endpoints can be specified. Port requires a named port.
endpoints:
- port: metrics
Pod vagy szolgáltatásfigyelő üzembe helyezése
Helyezze üzembe a podot vagy szolgáltatásmonitort kubectl apply az alábbi példákhoz hasonlóan.
Mintaalkalmazás létrehozása
Helyezzen üzembe egy Prometheus metrikákat publikáló mintaalkalmazást, amelyet a pod/szolgáltatásmonitor konfigurálhat.
kubectl apply -f https://raw.githubusercontent.com/Azure/prometheus-collector/refs/heads/main/internal/referenceapp/prometheus-reference-app.yaml
Podmonitor és/vagy szolgáltatásmonitor létrehozása metrikák lekaparásához
Helyezzen üzembe egy podmonitort, amely úgy van konfigurálva, hogy lekaparja az alkalmazást az előző lépésből.
Pod monitorozása
kubectl apply -f https://raw.githubusercontent.com/Azure/prometheus-collector/refs/heads/main/otelcollector/deploy/example-custom-resources/pod-monitor/pod-monitor-reference-app.yaml
Szolgáltatásfigyelő
kubectl apply -f https://raw.githubusercontent.com/Azure/prometheus-collector/refs/heads/main/otelcollector/deploy/example-custom-resources/service-monitor/service-monitor-reference-app.yaml
Hibaelhárítás
A pod- vagy szolgáltatásmonitorok sikeres alkalmazásakor a bővítménynek automatikusan el kell kezdenie a metrikák gyűjtését a célokból. Az egyéni erőforrások általános hibaelhárításához, és annak biztosítására, hogy a célok megjelenjenek a 127.0.0.1/targets címen, tekintse meg az Azure Monitor Prometheus-metrikák hibaelhárításának gyűjteményét.
A konfigurációs beállítások lekésése
A következő szakaszok a CRD-ben 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 a CRD összes lekérési feladatára vonatkoznak, de felülírják őket, ha az egyes feladatoknál vannak megadva.
Megjegyzés:
Ha olyan globális beállításokat szeretne használni, amelyek az összes kaparófeladatra vonatkoznak, és csak egyéni erőforrásokkal rendelkeznek, akkor is létre kell hoznia egy ConfigMap-térképet, amely csak a globális beállításokat használja. Az egyéni erőforrások mindegyikének beállításai felülbírálják a globális szakaszban lévőket
Konfigurációk lekaparása
Az egyéni erőforrások célfelderítésének támogatott módszerei jelenleg a Pod és a Service Monitor.
Pod- és szolgáltatásfigyelők
A pod- és szolgáltatásmonitorokkal felderített célok különböző __meta_* címkékkel rendelkeznek a használt monitortól függően. A szakasz címkéivel szűrheti a relabelings célokat, vagy lecserélheti a célcímkéket. Tekintse meg a pod- és szolgáltatásfigyelőkre vonatkozó példákat.
Újracímkézések
A relabelings 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 relabelingsmó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.
relabelings:
- sourceLabels: [__address__]
targetLabel: example_label
replacement: 'example_value'
Pod- vagy Szolgáltatásfigyelő-címkék használata
A pod- és szolgáltatásmonitorokkal felderített célok különböző __meta_* címkékkel rendelkeznek a használt monitortól függően. 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 relabelings segítségével adjon nekik címkenevet. Ezután használja metricRelabelings a szűréshez.
# Use the kubernetes namespace as a label called 'kubernetes_namespace'
relabelings:
- sourceLabels: [__meta_kubernetes_namespace]
action: replace
targetLabel: kubernetes_namespace
# Keep only metrics with the kubernetes namespace 'default'
metricRelabelings:
- sourceLabels: [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'
relabelings:
- sourceLabels: [__meta_kubernetes_pod_label_k8s_app]
targetLabel: 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
relabelings:
- sourceLabels: [__meta_kubernetes_node_name]
targetLabel: instance
Megjegyzés:
Ha újracímkézési konfigurációkkal rendelkezik, győződjön meg arról, hogy az újracímkézés nem szűri ki a célokat, és a megfelelően konfigurált címkék megfelelnek a céloknak.
Metricai újracímkézések
A metrikák átcímkézései az adatok gyűjtése után, de még a betöltés előtt történnek. A szakasz használatával szűrheti a metricRelabelings 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'
metricRelabelings:
- sourceLabels: [__name__]
action: drop
regex: 'example_metric_name'
Csak bizonyos metrikákat tarts meg név szerint
# Keep only the metric named 'example_metric_name'
metricRelabelings:
- sourceLabels: [__name__]
action: keep
regex: 'example_metric_name'
# Keep only metrics that start with 'example_'
metricRelabelings:
- sourceLabels: [__name__]
action: keep
regex: '(example_.*)'
Metrikák szűrése címkék szerint
# Keep metrics only where example_label = 'example'
metricRelabelings:
- sourceLabels: [example_label]
action: keep
regex: 'example'
# Keep metrics only if `example_label` equals `value_1` or `value_2`
metricRelabelings:
- sourceLabels: [example_label]
action: keep
regex: '(value_1|value_2)'
# Keep metrics only if `example_label_1 = value_1` and `example_label_2 = value_2`
metricRelabelings:
- sourceLabels: [example_label_1, example_label_2]
separator: ';'
action: keep
regex: 'value_1;value_2'
# Keep metrics only if `example_label` exists as a label
metricRelabelings:
- sourceLabels: [example_label_1]
action: keep
regex: '.+'
Metrikák átnevezése A metrika átnevezése nem támogatott.
Alapszintű hitelesítés és tulajdonosi jogkivonatok
A PodMonitors és a ServiceMonitors használatával támogatottak az alapszintű hitelesítési vagy tulajdonosi jogkivonatokat használó kaparási célok. Győződjön meg arról, hogy a felhasználónevet/jelszót/token tartalmazó titok ugyanabban a névtérben van, mint a pod/szolgáltatásfigyelő. Ez a viselkedés megegyezik az OSS Prometheus-operatoréval.
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:
- Az alábbi példában adja meg a PodMonitor vagy a ServiceMonitor TLS-konfigurációs beállítását:
tlsConfig: ca: secret: key: "<certfile>" name: "ama-metrics-mtls-secret" cert: secret: key: "<certfile>" name: "ama-metrics-mtls-secret" keySecret: key: "<keyfile>" name: "ama-metrics-mtls-secret" insecureSkipVerify: false
Alapszintű hitelesítés és TLS
Ha az alapszintű hitelesítési vagy tulajdonosi jogkivonatot (fájlalapú hitelesítő adatokat) és a TLS-hitelesítési beállításokat is használni szeretné a CRD-ben, győződjön meg arról, hogy a titkos kód ama-metrics-mtls-secret tartalmazza az adatszakasz összes kulcsát a megfelelő base64 kódolású értékekkel, az alábbiak szerint:
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.