Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: Geliştirici | Premium
Bu makalede, Kubernetes kümesine dağıtılan kendi barındırılan ağ geçidi için yerel ölçümleri ve günlükleri yapılandırma ayrıntıları sağlanır. Bulut ölçümlerini ve günlüklerini yapılandırmak için bu makaleye bakın.
Ölçümler
Kendinden barındırılan ağ geçidi, metriklerin toplanması ve birleştirilmesi için bütünleştirici bir protokol olan StatsD'yi destekler. Bu bölümde StatsD'yi Kubernetes'e dağıtma, ağ geçidini statsD aracılığıyla ölçümleri yayacak şekilde yapılandırma ve ölçümleri izlemek için Prometheus kullanma adımları adım adım izlenmektedir.
StatsD ve Prometheus'ı kümeye dağıtma
Aşağıdaki örnek YAML yapılandırması, StatsD ve Prometheus'u şirket içinde barındırılan bir ağ geçidinin dağıtıldığı Kubernetes kümesine dağıtır. Ayrıca her bir hizmet için bir Hizmet oluşturur. Şirket içinde barındırılan ağ geçidi daha sonra ölçümleri StatsD hizmetinde yayımlar. Prometheus kontrol paneline Servis aracılığıyla erişirsiniz.
Uyarı
Aşağıdaki örnek, Docker Hub'dan herkese açık kapsayıcı görüntülerini çeker. Anonim çekme isteğinde bulunmak yerine Docker Hub hesabı kullanarak kimlik doğrulaması yapmak için bir çekme gizli dizisi ayarlayın. Genel içerikle çalışırken güvenilirliği artırmak için görüntüleri özel bir Azure Container Registry'de içeri aktarın ve yönetin. Genel görüntülerle çalışma hakkında daha fazla bilgi edinin.
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
Yapılandırmaları adlı metrics.yamlbir dosyaya kaydedin. Kümeye her şeyi dağıtmak için aşağıdaki komutu kullanın:
kubectl apply -f metrics.yaml
Dağıtım tamamlandıktan sonra podların çalışıp çalışmadığını denetlemek için aşağıdaki komutu çalıştırın. Pod'unuzun adı farklı.
kubectl get pods
NAME READY STATUS RESTARTS AGE
sputnik-metrics-f6d97548f-4xnb7 2/2 Running 0 1m
Aşağıdaki komutu çalıştırarak services'ün çalıştığını kontrol edin. Daha sonra kullanacağınız StatsD Hizmetinin CLUSTER-IP ve PORT değerlerini not alın. Prometheus panosunu EXTERNAL-IP ve PORT kullanarak ziyaret edebilirsiniz.
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
Ölçümleri göndermek için kendinden barındırmalı ağ geçidini yapılandırma
Artık hem StatsD hem de Prometheus dağıtıldığına göre, StatsD aracılığıyla metrikleri göndermeye başlamak için kendi kendine barındırılan ağ geçidinin yapılandırmalarını güncelleyebilirsiniz. Bu özelliği etkinleştirmek veya devre dışı bırakmak için self-hosted gateway Dağıtımının ConfigMap'indeki telemetry.metrics.local anahtarını kullanın. Ek seçenekler de ayarlayabilirsiniz. Aşağıdaki seçenekler kullanılabilir:
| Alan | Varsayılan | Açıklama |
|---|---|---|
| telemetry.metrics.local | none |
StatsD aracılığıyla kayıt yapmayı etkinleştirir. Değer , noneolabilirstatsd. |
| telemetri.metrikler.yerel.statsd.endpoint | Yok | StatsD uç noktasını belirler. |
| telemetry.metrics.local.statsd.sampling | Yok | Metrik örnekleme oranını belirtir. Değer 0 ile 1 arasında olabilir. Örnek: 0.5 |
| Telemetri.ölçümler.yerel.statsd.etiket-formatı | Yok | statsD exporter etiketleme biçimi. Değer none, librato, dogStatsD, influxDB olabilir. |
Aşağıda örnek bir yapılandırma verilmişti:
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"
Şirket içinde barındırılan ağ geçidi dağıtımının YAML dosyasını önceki yapılandırmalarla güncelleştirin ve aşağıdaki komutla değişiklikleri uygulayın:
kubectl apply -f <file-name>.yaml
En son yapılandırma değişikliklerini almak için aşağıdaki komutla ağ geçidi dağıtımını yeniden başlatın:
kubectl rollout restart deployment/<deployment-name>
Ölçümleri görüntüleme
Her şeyi dağıttığınız ve yapılandırdığınıza göre, kendi kendine barındırılan ağ geçidi istatistikleri StatsD aracılığıyla raporlar. Prometheus daha sonra statsD'den ölçümleri alır. Prometheus Servisi'nin EXTERNAL-IP ve PORT kullanarak Prometheus panosuna gidin.
Şirket içinde barındırılan ağ geçidi üzerinden bazı API çağrıları yapın. Her şey doğru yapılandırıldıysa aşağıdaki ölçümleri görüntüleyebilirsiniz:
| Ölçü birimi | Açıklama |
|---|---|
| istekler_toplam | Dönemdeki API isteklerinin sayısı |
| istek_süresi_saniye | Ağ geçidinin isteği aldığı andan, yanıtın tamamen gönderildiği ana kadar geçen milisaniye cinsinden süre |
| istek_arka_uc_sure_saniye | Genel arka uç Girdi/Çıktı işlemleri için harcanan milisaniye sayısı (bağlanma, bayt gönderme ve alma) |
| istek_müşteri_süresi_saniye | Genel istemci G/Ç için harcanan milisaniye sayısı (bağlantı kurulması, bayt gönderme ve alma) |
Kayıtlar
Varsayılan olarak, kendi kendine barındırılan ağ geçidi günlükleri stdout ve stderr'ye çıkış sağlar. Aşağıdaki komutu kullanarak günlükleri kolayca görüntüleyebilirsiniz:
kubectl logs <pod-name>
Azure Kubernetes Service'te şirket içinde barındırılan ağ geçidinizi dağıtırsanız, iş yüklerinizden verileri toplamak için kapsayıcılar için Azure İzleyiciyi etkinleştirebilir ve günlükleri Log Analytics'te görüntülemek için stdout ve stderr kullanabilirsiniz.
Şirket içinde barındırılan ağ geçidi, localsyslog, rfc5424 ve journal gibi birçok protokolü de destekler. Aşağıdaki tabloda desteklenen tüm seçenekler özetlenmektedir.
| Alan | Varsayılan | Açıklama |
|---|---|---|
| telemetry.logs.std | text |
Günlük kaydı yapmayı standart akışlar üzerinden etkinleştirir. Değer none, text, json olabilir |
| telemetry.logs.local | auto |
Yerel günlüğe kaydetmeyi etkinleştirir. Değer none, auto, localsyslog, rfc5424, journal, json olabilir |
| telemetry.kayitlar.yerel.yerelsyslog.son_nokta | Yok | Yerel syslog uç noktasını belirtir. Ayrıntılar için bkz. yerel syslog günlüklerini kullanma. |
| telemetry.logs.local.localsyslog.facility | Yok | Yerel syslog tesis kodunu belirtir. Örnek: 7 |
| telemetry.logs.local.rfc5424.endpoint | Yok | rfc5424 uç noktasını belirtir. |
| telemetry.logs.local.rfc5424.facility | Yok |
Rfc5424 başına tesis kodunu belirtir. Örnek: 7 |
| telemetri.kayıtlar.yerel.günlük.bağlantı_noktası | Yok | Defter uç noktasını belirtir. |
| .endpoint telemetry.logs.local.json | 127.0.0.1:8888 | JSON verilerini kabul eden UDP uç noktasını belirtir: dosya yolu, IP:bağlantı noktası veya ana bilgisayar adı:bağlantı noktası. |
Aşağıda yerel günlüğün örnek bir yapılandırması verilmişti:
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"
Yerel JSON uç noktasını kullanma
Bilinen sınırlamalar
- Yerel tanılama özelliği en fazla 3.072 bayt istek ve yanıt yükünü destekler. Yük boyutu bu sınırı aşarsa öbekleme JSON biçimini bozabilir.
Yerel syslog günlüklerini kullanma
Ağ geçidini akış günlükleri için yapılandırma
Günlükler için hedef olarak yerel syslog kullandığınızda, çalışma zamanının hedefe akış günlüklerine izin vermesi gerekir. Azure Kubernetes Service için hedefle eşleşen bir birim bağlamanız gerekir.
Aşağıdaki yapılandırma göz önünde bulundurulduğunda:
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
Günlükleri bu yerel syslog uç noktasına kolayca aktarabilirsiniz.
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
Azure Kubernetes Service'te (AKS) yerel syslog günlüklerini kullanma
Azure Kubernetes Service'te yerel syslog'u yapılandırırken, günlükleri keşfetmek için iki yol seçebilirsiniz:
- Container Insights ile Syslog koleksiyonunu kullanma
- Çalışan düğümlerine bağlan ve günlükleri keşfet
Çalışan düğümlerinden günlükleri kullanma
Çalışan düğümlerine erişim sağlayarak günlükleri kolayca kullanabilirsiniz:
- Node'a bir SSH bağlantısı oluşturun (docs).
- Günlükleri
host/var/log/syslogaltında bulun.
Örneğin, tüm syslog'ları yalnızca şirket içinde barındırılan ağ geçidinden gelenlerle filtreleyebilirsiniz:
$ 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"
Uyarı
Örneğinchroot, ile chroot /hostkökünü değiştirirseniz, önceki yolun bu değişikliği yansıtması gerekir.
İlgili içerik
- Azure API Management ağ geçitlerinin gözlemlenebilirlik özellikleri hakkında bilgi edinin.
- Azure API Management kendi kendine barındırmalı ağ geçidi hakkında daha fazla bilgi edinin.
- Günlükleri bulutta yapılandırma ve kalıcı hale ekleme hakkında bilgi edinin.