Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
PLATÍ PRO: Vývojářská verze | Prémiová verze
Tento článek obsahuje podrobnosti o konfiguraci místních metrik a protokolů pro bránu v místním prostředí nasazenou v clusteru Kubernetes. Informace o konfiguraci cloudových metrik a protokolů najdete v tomto článku.
Metodiky
Samo-hostovaná brána podporuje StatsD, což je jednotný protokol pro shromažďování a agregaci metrik. Tato část vás provede postupem nasazení StatsD do Kubernetes, konfigurací brány pro generování metrik prostřednictvím StatsD a monitorováním metrik pomocí Prometheus.
Nasadit StatsD a Prometheus do clusteru
Následující ukázková konfigurace YAML nasadí StatsD, Prometheus do clusteru Kubernetes, kde je nasazena brána v rámci vlastního hostingu. Vytvoří také službu pro každou z nich. Samohostovaná brána poté publikuje metriky do služby StatsD. K řídicímu panelu Prometheus se dostanete pomocí jeho služby.
Poznámka:
Následující příklad načítá image veřejného kontejneru z Docker Hubu. Nastavte tajný kód pro vyžádání změn pro ověření pomocí účtu Docker Hubu místo vytvoření anonymní žádosti o přijetí změn. Pokud chcete zvýšit spolehlivost při práci s veřejným obsahem, importujte a spravujte image v privátní službě Azure Container Registry. Zjistěte více o práci s veřejnými obrázky.
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
Uložte konfigurace do souboru s názvem metrics.yaml. Pomocí následujícího příkazu nasaďte vše do clusteru:
kubectl apply -f metrics.yaml
Po dokončení nasazení spusťte následující příkaz, abyste zkontrolovali, zda jsou Pody spuštěné. Název vašeho podu se liší.
kubectl get pods
NAME READY STATUS RESTARTS AGE
sputnik-metrics-f6d97548f-4xnb7 2/2 Running 0 1m
Spusťte následující příkaz, abyste zkontrolovali, zda services běží. Poznamenejte si CLUSTER-IP a PORT služby StatsD, které použijete později. Můžete navštívit řídicí panel Prometheus pomocí jeho EXTERNAL-IP a PORT.
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
Nastavte bránu hostovanou na místě pro vysílání metrik
Teď, když jsou nasazeny StatsD i Prometheus, můžete aktualizovat konfigurace samoobslužné brány a začít generovat metriky prostřednictvím StatsD. Pomocí klíče telemetry.metrics.local v objektu ConfigMap nasazení samo-hostované brány povolíte nebo zakážete tuto funkci. Můžete také nastavit další možnosti. K dispozici jsou následující možnosti:
| Pole | Výchozí | Popis |
|---|---|---|
| telemetry.metrics.local | none |
Povolí protokolování prostřednictvím StatsD. Hodnota může být none, statsd. |
| telemetry.metrics.local.statsd.endpoint | není k dispozici | Určuje koncový bod StatsD. |
| telemetry.metrics.local.statsd.sampling | není k dispozici | Určuje vzorkovací frekvenci metrik. Hodnota může být mezi 0 a 1. Příklad: 0.5 |
| měření.telemetrie.místní.statsd.formát-štítku | není k dispozici | Formát označování exportéru StatsD. Hodnota může být none, , libratodogStatsD, influxDB. |
Tady je ukázková konfigurace:
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"
Aktualizujte soubor YAML nasazení brány v místním prostředí s použitím předchozích konfigurací a proveďte změny pomocí následujícího příkazu:
kubectl apply -f <file-name>.yaml
Pokud chcete získat nejnovější změny konfigurace, restartujte nasazení brány pomocí následujícího příkazu:
kubectl rollout restart deployment/<deployment-name>
Zobrazení metrik
Teď, když jste nasadili a nakonfigurovali všechno, hlásí samostatně hostovaná brána metriky prostřednictvím StatsD. Prometheus pak získá metriky od StatsD. Pomocí EXTERNAL-IP a PORT služby Prometheus přejděte na řídicí panel Prometheus.
Proveďte několik volání rozhraní API prostřednictvím lokální brány. Pokud je všechno správně nakonfigurované, můžete zobrazit následující metriky:
| Ukazatel | Popis |
|---|---|
| celkový počet požadavků | Počet požadavků rozhraní API v období |
| délka_trvání_požadavku_v_sekundách | Počet milisekund od chvíle, kdy brána přijala požadavek, do chvíle odeslání úplné odpovědi. |
| žádost_trvání_backendu_vteřiny | Počet milisekund strávených na celkových vstupně-výstupních operacích back-endu (připojování, odesílání a přijímání bajtů) |
| request_klient_doba_v_sekundách | Počet milisekund strávených na celkových vstupně-výstupních operacích klienta (připojování, odesílání a přijímání bajtů) |
Záznamy
Ve výchozím nastavení brána v místním prostředí odesílá protokoly do stdout a stderr. Protokoly můžete snadno zobrazit pomocí následujícího příkazu:
kubectl logs <pod-name>
Pokud nasadíte svou vlastnoručně spravovanou bránu ve službě Azure Kubernetes Service, můžete povolit službu Azure Monitor pro kontejnery, aby shromažďovala stdout a stderr z vašich úloh a zobrazovala protokoly v Log Analytics.
Brána v místním prostředí také podporuje mnoho protokolů, včetně localsyslog, rfc5424a journal. Následující tabulka shrnuje všechny podporované možnosti.
| Pole | Výchozí | Popis |
|---|---|---|
| telemetry.logs.std | text |
Umožňuje protokolování do standardních datových proudů. Hodnota může být none, , textjson |
| telemetry.logs.local | auto |
Povolí místní protokolování. Hodnota může být none, , autolocalsyslog, rfc5424, journaljson |
| telemetry.logs.local.localsyslog.endpoint | není k dispozici | Určuje místní koncový bod syslogu. Podrobnosti naleznete v protokolech syslog v místním systému. |
| telemetry.logs.local.localsyslog.facility | není k dispozici | Určuje místní kód kanálu syslog. Příklad: 7 |
| telemetry.logs.local.rfc5424.endpoint | není k dispozici | Určuje koncový bod RFC5424. |
| telemetry.logs.local.rfc5424.facility | není k dispozici | Určuje kód zařízení podle rfc5424. Příklad: 7 |
| telemetry.logs.local.journal.endpoint | není k dispozici | Určuje koncový bod deníku. |
| telemetry.logs.local.json.endpoint | 127.0.0.1:8888 | Určuje koncový bod UDP, který přijímá data JSON: cestu k souboru, IP:port nebo název hostitele:port. |
Tady je ukázková konfigurace místního protokolování:
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"
Použití místního koncového bodu JSON
Známá omezení
- Funkce místní diagnostiky podporuje až 3 072 bajtů datové části žádosti a odpovědi. Pokud velikost datové části překročí tento limit, může blok dat narušit formát JSON.
Použití místních protokolů syslogu
Konfigurace brány pro streamování protokolů
Pokud jako cíl protokolů použijete místní syslog, runtime musí umožnit streamování protokolů do cíle. Pro službu Azure Kubernetes Service musíte připojit svazek, který odpovídá cíli.
Vzhledem k následující konfiguraci:
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
Protokoly streamování můžete snadno spustit do místního koncového bodu syslogu:
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
Používání místních protokolů syslog ve službě Azure Kubernetes Service (AKS)
Při konfiguraci místního syslogu ve službě Azure Kubernetes Service můžete protokoly prozkoumat dvěma způsoby:
- Použití kolekce Syslog se službou Container Insights
- Připojte se a prozkoumejte logy na pracovních uzlech
Využívání protokolů z pracovních uzlů
Protokoly (logy) můžete snadno využívat získáním přístupu k pracovním uzlům:
- Vytvořte připojení SSH k uzlu (dokumentaci).
- Vyhledejte protokoly v části
host/var/log/syslog.
Například můžete filtrovat všechny syslogy tak, aby zahrnovaly pouze ty z brány v místním prostředí:
$ 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=aaaa0000-bb11-2222-33cc-444444dddddd, 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=bbbb1111-cc22-3333-44dd-555555eeeeee, 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"
Poznámka:
Pokud změníte kořen pomocí chroot, například chroot /host, pak musí předchozí cesta tuto změnu odrážet.
Související obsah
- Seznamte se s možnostmi pozorovatelnosti bran služby Azure API Management.
- Přečtěte si další informace o bráně Azure API Management s lokálním hostováním.
- Přečtěte si o konfiguraci a zachování protokolů v cloudu.