Helyi metrikák és naplók konfigurálása az Azure API Management saját üzemeltetésű átjáróhoz
A KÖVETKEZŐKRE VONATKOZIK: Fejlesztő | Prémium
Ez a cikk a Kubernetes-fürtön üzembe helyezett helyi metrikák és naplók konfigurálásának részleteit ismerteti. A felhőmetrikák és naplók konfigurálásáról ebben a cikkben olvashat.
Mérőszámok
A saját üzemeltetésű átjáró támogatja a StatsD-t, amely egységesítő protokoll lett a metrikák gyűjtéséhez és összesítéséhez. Ez a szakasz végigvezeti a StatsD Kubernetesben való üzembe helyezésének lépésein, konfigurálja az átjárót metrikák StatsD-n keresztüli kibocsátásához, valamint a Prometheus használatával a metrikák monitorozásához.
A StatsD és a Prometheus üzembe helyezése a fürtön
Az alábbi YAML-mintakonfiguráció üzembe helyezi a StatsD-t és a Prometheust a Kubernetes-fürtön, ahol egy saját üzemeltetésű átjáró van üzembe helyezve. Emellett létrehoz egy szolgáltatást is mindegyikhez. A saját üzemeltetésű átjáró ezután közzéteszi a metrikákat a StatsD szolgáltatásban. A Prometheus-irányítópultot a szolgáltatáson keresztül fogjuk elérni.
Feljegyzés
Az alábbi példa nyilvános tárolórendszerképeket kér le a Docker Hubról. Javasoljuk, hogy állítson be egy lekéréses titkos kulcsot a hitelesítéshez egy Docker Hub-fiókkal a névtelen lekéréses kérések helyett. A nyilvános tartalommal végzett munka megbízhatóságának javítása érdekében importálja és kezelje a rendszerképeket egy privát Azure-tárolóregisztrációs adatbázisban. További információ a nyilvános rendszerképek használatával kapcsolatban.
apiVersion: v1
kind: ConfigMap
metadata:
name: sputnik-metrics-config
data:
statsd.yaml: ""
prometheus.yaml: |
global:
scrape_interval: 3s
evaluation_interval: 3s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'test_metrics'
static_configs:
- targets: ['localhost:9102']
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: sputnik-metrics
spec:
replicas: 1
selector:
matchLabels:
app: sputnik-metrics
template:
metadata:
labels:
app: sputnik-metrics
spec:
containers:
- name: sputnik-metrics-statsd
image: prom/statsd-exporter
ports:
- name: tcp
containerPort: 9102
- name: udp
containerPort: 8125
protocol: UDP
args:
- --statsd.mapping-config=/tmp/statsd.yaml
- --statsd.listen-udp=:8125
- --web.listen-address=:9102
volumeMounts:
- mountPath: /tmp
name: sputnik-metrics-config-files
- name: sputnik-metrics-prometheus
image: prom/prometheus
ports:
- name: tcp
containerPort: 9090
args:
- --config.file=/tmp/prometheus.yaml
volumeMounts:
- mountPath: /tmp
name: sputnik-metrics-config-files
volumes:
- name: sputnik-metrics-config-files
configMap:
name: sputnik-metrics-config
---
apiVersion: v1
kind: Service
metadata:
name: sputnik-metrics-statsd
spec:
type: NodePort
ports:
- name: udp
port: 8125
targetPort: 8125
protocol: UDP
selector:
app: sputnik-metrics
---
apiVersion: v1
kind: Service
metadata:
name: sputnik-metrics-prometheus
spec:
type: LoadBalancer
ports:
- name: http
port: 9090
targetPort: 9090
selector:
app: sputnik-metrics
Mentse a konfigurációkat egy nevű metrics.yaml
fájlba. A következő paranccsal mindent üzembe helyezhet a fürtön:
kubectl apply -f metrics.yaml
Az üzembe helyezés befejeződése után futtassa a következő parancsot a podok futásának ellenőrzéséhez. A pod neve eltérő lesz.
kubectl get pods
NAME READY STATUS RESTARTS AGE
sputnik-metrics-f6d97548f-4xnb7 2/2 Running 0 1m
Futtassa az alábbi parancsot a services
futtatás ellenőrzéséhez. Jegyezze fel a CLUSTER-IP
PORT
StatsD szolgáltatást, amelyet később használunk. A Prometheus irányítópultját a saját EXTERNAL-IP
és PORT
a .
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sputnik-metrics-prometheus LoadBalancer 10.0.252.72 13.89.141.90 9090:32663/TCP 18h
sputnik-metrics-statsd NodePort 10.0.41.179 <none> 8125:32733/UDP 18h
A saját üzemeltetésű átjáró konfigurálása metrikák kibocsátásához
Most, hogy a StatsD és a Prometheus is üzembe lett helyezve, frissíthetjük a saját üzemeltetésű átjáró konfigurációit, hogy metrikákat bocsátsunk ki a StatsD-n keresztül. A funkció a saját üzemeltetésű átjáró üzembe helyezésének konfigurációtérképén található kulccsal engedélyezhető vagy letiltható telemetry.metrics.local
további beállításokkal. A következő lehetőségek érhetők el:
Mező | Alapértelmezett | Leírás |
---|---|---|
telemetry.metrics.local | none |
Engedélyezi a naplózást a StatsD-ben. Az érték lehet none , statsd . |
telemetry.metrics.local.statsd.endpoint | n.a. | StatsD-végpontot ad meg. |
telemetry.metrics.local.statsd.sampling | n.a. | A metrikák mintavételezési sebességét határozza meg. Az érték 0 és 1 között lehet. Példa: 0.5 |
telemetry.metrics.local.statsd.tag-format | n.a. | StatsD exportőr címkézési formátuma. Az érték lehet none , librato , dogStatsD . influxDB |
Íme egy mintakonfiguráció:
apiVersion: v1
kind: ConfigMap
metadata:
name: contoso-gateway-environment
data:
config.service.endpoint: "<self-hosted-gateway-management-endpoint>"
telemetry.metrics.local: "statsd"
telemetry.metrics.local.statsd.endpoint: "10.0.41.179:8125"
telemetry.metrics.local.statsd.sampling: "1"
telemetry.metrics.local.statsd.tag-format: "dogStatsD"
Frissítse a saját üzemeltetésű átjáró üzembe helyezésének YAML-fájlját a fenti konfigurációkkal, és alkalmazza a módosításokat az alábbi paranccsal:
kubectl apply -f <file-name>.yaml
A legújabb konfigurációs módosítások felvételéhez indítsa újra az átjáró üzembe helyezését az alábbi paranccsal:
kubectl rollout restart deployment/<deployment-name>
A metrikák megtekintése
Most már minden üzembe lett helyezve és konfigurálva, a saját üzemeltetésű átjárónak StatsD-en keresztül kell jelentést adnia a metrikákról. A Prometheus ezután felveszi a metrikákat a StatsD-ből. Nyissa meg a Prometheus-irányítópultot a EXTERNAL-IP
Prometheus szolgáltatással.PORT
Hozzon létre néhány API-hívást a saját üzemeltetésű átjárón keresztül, ha minden megfelelően van konfigurálva, az alábbi metrikákat kell megtekintenie:
Metrika | Leírás |
---|---|
requests_total | AZ IDŐSZAK API-kéréseinek száma |
request_duration_seconds | A kérelem átjáróhoz való megérkezése és a teljes válasz elküldése között eltelt ezredmásodpercek száma |
request_backend_duration_seconds | A háttérrendszer teljes I/O-jára fordított ezredmásodpercek száma (bájtok csatlakoztatása, küldése és fogadása) |
request_client_duration_seconds | Az ügyfél teljes I/O-jára fordított ezredmásodpercek száma (bájtok csatlakoztatása, küldése és fogadása) |
Naplók
A saját üzemeltetésű átjáró alapértelmezés szerint naplókat stdout
ad ki.stderr
A naplókat egyszerűen megtekintheti a következő paranccsal:
kubectl logs <pod-name>
Ha a saját üzemeltetésű átjáró az Azure Kubernetes Service-ben van üzembe helyezve, engedélyezheti, hogy az Azure Monitor tárolókhoz gyűjtse és stderr
használja stdout
a számítási feladatokat, és tekintse meg a naplókat a Log Analyticsben.
A saját üzemeltetésű átjáró számos protokollt is támogat, többek között localsyslog
a journal
. rfc5424
Az alábbi táblázat összefoglalja a támogatott beállításokat.
Mező | Alapértelmezett | Leírás |
---|---|---|
telemetry.logs.std | text |
Engedélyezi a naplózást a standard streamekre. Az érték lehet none , , text json |
telemetry.logs.local | auto |
Engedélyezi a helyi naplózást. Az érték lehet none , auto , localsyslog , rfc5424 , , journal json |
telemetry.logs.local.localsyslog.endpoint | n.a. | A helyi syslog-végpontot adja meg. További részletekért lásd a helyi syslog-naplók használatát. |
telemetry.logs.local.localsyslog.facility | n.a. | Megadja a helyi syslog-létesítmény kódját. Példa: 7 |
telemetry.logs.local.rfc5424.endpoint | n.a. | Az rfc5424 végpontot adja meg. |
telemetry.logs.local.rfc5424.facility | n.a. | Az rfc5424 létesítménykódját adja meg. Példa: 7 |
telemetry.logs.local.journal.endpoint | n.a. | Naplóvégpontot ad meg. |
telemetry.logs.local.json.endpoint | 127.0.0.1:8888 | A JSON-adatokat elfogadó UDP-végpontot adja meg: fájl elérési útja, IP:port vagy gazdagépnév:port. |
Íme egy mintakonfiguráció a helyi naplózáshoz:
apiVersion: v1
kind: ConfigMap
metadata:
name: contoso-gateway-environment
data:
config.service.endpoint: "<self-hosted-gateway-management-endpoint>"
telemetry.logs.std: "text"
telemetry.logs.local.localsyslog.endpoint: "/dev/log"
telemetry.logs.local.localsyslog.facility: "7"
Helyi JSON-végpont használata
Ismert korlátozások
- A helyi diagnosztikához legfeljebb 3072 bájtnyi kérelem-válasz hasznos adatot támogatunk. A fenti adatok az adattömbelés miatt megszakíthatják a JSON-formátumot.
Helyi syslog-naplók használata
Átjáró konfigurálása naplók streameléséhez
Ha a helyi syslogot használja a naplók célhelyeként, a futtatókörnyezetnek engedélyeznie kell a streamnaplók célhelyre való átvitelét. A Kubernetes esetében egy kötetet kell csatlakoztatni, amely megfelel a célnak.
A következő konfigurációt figyelembe véve:
apiVersion: v1
kind: ConfigMap
metadata:
name: contoso-gateway-environment
data:
config.service.endpoint: "<self-hosted-gateway-management-endpoint>"
telemetry.logs.local: localsyslog
telemetry.logs.local.localsyslog.endpoint: /dev/log
A streamelési naplókat egyszerűen elindíthatja a helyi syslog-végponton:
apiVersion: apps/v1
kind: Deployment
metadata:
name: contoso-deployment
labels:
app: contoso
spec:
replicas: 1
selector:
matchLabels:
app: contoso
template:
metadata:
labels:
app: contoso
spec:
containers:
name: azure-api-management-gateway
image: mcr.microsoft.com/azure-api-management/gateway:2.5.0
imagePullPolicy: IfNotPresent
envFrom:
- configMapRef:
name: contoso-gateway-environment
# ... redacted ...
+ volumeMounts:
+ - mountPath: /dev/log
+ name: logs
+ volumes:
+ - hostPath:
+ path: /dev/log
+ type: Socket
+ name: logs
Helyi syslog-naplók használata az Azure Kubernetes Service-ben (AKS)
Amikor helyi syslogot szeretne használni az Azure Kubernetes Service-ben, kétféleképpen vizsgálhatja meg a naplókat:
- A Syslog-gyűjtemény használata a Container Insights használatával
- Csatlakozás > naplók feltárása a feldolgozó csomópontokon
Naplók felhasználása feldolgozó csomópontokból
Egyszerűen felhasználhatja őket a feldolgozó csomópontokhoz való hozzáféréssel:
- SSH-kapcsolat létrehozása a csomóponthoz (dokumentumok)
- A naplók a következő területen találhatók:
host/var/log/syslog
Szűrheti például az összes syslogot csak a saját üzemeltetésű átjáróból származókra:
$ cat host/var/log/syslog | grep "apimuser"
May 15 05:54:20 aks-agentpool-43853532-vmss000000 apimuser[8]: Timestamp=2023-05-15T05:54:20.0445178Z, isRequestSuccess=True, totalTime=290, category=GatewayLogs, callerIpAddress=141.134.132.243, timeGenerated=2023-05-15T05:54:20.0445178Z, region=Repro, correlationId=b28565ec-73e0-41e6-9312-efcdd6841846, method=GET, url="http://20.126.242.200/echo/resource?param1\=sample", backendResponseCode=200, responseCode=200, responseSize=628, cache=none, backendTime=287, apiId=echo-api, operationId=retrieve-resource, apimSubscriptionId=master, clientProtocol=HTTP/1.1, backendProtocol=HTTP/1.1, apiRevision=1, backendMethod=GET, backendUrl="http://echoapi.cloudapp.net/api/resource?param1\=sample"
May 15 05:54:21 aks-agentpool-43853532-vmss000000 apimuser[8]: Timestamp=2023-05-15T05:54:21.1189171Z, isRequestSuccess=True, totalTime=150, category=GatewayLogs, callerIpAddress=141.134.132.243, timeGenerated=2023-05-15T05:54:21.1189171Z, region=Repro, correlationId=ab4d7464-acee-40ae-af95-a521cc57c759, method=GET, url="http://20.126.242.200/echo/resource?param1\=sample", backendResponseCode=200, responseCode=200, responseSize=628, cache=none, backendTime=148, apiId=echo-api, operationId=retrieve-resource, apimSubscriptionId=master, clientProtocol=HTTP/1.1, backendProtocol=HTTP/1.1, apiRevision=1, backendMethod=GET, backendUrl="http://echoapi.cloudapp.net/api/resource?param1\=sample"
Feljegyzés
Ha például chroot /host
módosította a gyökértchroot
, akkor a fenti elérési útnak tükröznie kell ezt a változást.
Következő lépések
- Ismerje meg az Azure API Management-átjárók megfigyelhetőségi képességeit.
- További információ az Azure API Management saját üzemeltetésű átjárójáról.
- Tudnivalók a naplók felhőben való konfigurálásáról és megőrzéséről.