Azure API Management şirket içi barındırılan ağ geçidi için yerel ölçümleri ve günlükleri yapılandırma
Bu makalede, Kubernetes kümesinde dağıtılan şirket içinde barındırılan ağ geçidi için yerel ölçümleri ve günlükleri yapılandırmaya ilişkin ayrıntılar sağlanır. Bulut ölçümlerini ve günlüklerini yapılandırmak için bu makaleye bakın.
Kullanılabilirlik
Önemli
Bu özellik, API Management Premium ve Geliştirici katmanlarında kullanılabilir.
Ölçümler
Şirket içinde barındırılan ağ geçidi, ölçüm toplama ve toplama için birleştirici bir protokol haline gelen 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 açıklanır.
StatsD ve Prometheus'ı kümeye dağıtma
Aşağıda statsD ve Prometheus'u şirket içinde barındırılan bir ağ geçidinin dağıtıldığı Kubernetes kümesine dağıtmak için örnek bir YAML yapılandırması verilmiştir. Ayrıca her biri için bir Hizmet oluşturur. Şirket içi barındırılan ağ geçidi, ölçümleri statsD Hizmetinde yayımlar. Prometheus panosuna Hizmeti aracılığıyla erişeceğiz.
Not
Aşağıdaki örnek, Docker Hub genel 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 ayarlamanızı öneririz. Genel içerikle çalışırken güvenilirliği artırmak için görüntüleri özel bir Azure kapsayıcı kayıt defterinde 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.yaml
bir dosyaya kaydedin ve 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ıştığını denetlemek için aşağıdaki komutu çalıştırın. Pod adınızın farklı olacağını unutmayın.
kubectl get pods
NAME READY STATUS RESTARTS AGE
sputnik-metrics-f6d97548f-4xnb7 2/2 Running 0 1m
Hizmetlerin çalıştığını denetlemek için aşağıdaki komutu çalıştırın. StatsD Hizmeti'nin ve PORT
değerlerini not CLUSTER-IP
alın, daha sonra buna ihtiyacımız olacak. ve PORT
kullanarak Prometheus panosunu EXTERNAL-IP
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
Şirket içi barındırılan ağ geçidini ölçümleri yayacak şekilde yapılandırma
Artık hem statsD hem de Prometheus dağıtıldığına göre, statsD aracılığıyla ölçümleri yaymaya başlamak için şirket içinde barındırılan ağ geçidinin yapılandırmalarını güncelleştirebiliriz. Özellik, şirket içinde barındırılan ağ geçidi dağıtımının telemetry.metrics.local
ConfigMap'indeki anahtarı ek seçeneklerle birlikte kullanılarak etkinleştirilebilir veya devre dışı bırakılabilir. Kullanılabilir seçeneklerin dökümü aşağıdadır:
Alan | Varsayılan | Açıklama |
---|---|---|
telemetry.metrics.local | none |
statsD aracılığıyla günlüğe kaydetmeyi etkinleştirir. Değer , statsd olabilirnone . |
telemetry.metrics.local.statsd.endpoint | yok | statsD uç noktasını belirtir. |
telemetry.metrics.local.statsd.sampling | yok | Ölçüm örnekleme hızını belirtir. Değer 0 ile 1 arasında olabilir. Örneğin. 0.5 |
telemetry.metrics.local.statsd.tag-format | yok | statsD dışarı aktarma etiketleme biçimi. Değer , none , librato , dogStatsD . influxDB |
Örnek bir yapılandırma aşağıda verilmiştir:
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çi barındırılan ağ geçidi dağıtımının YAML dosyasını yukarıdaki yapılandırmalarla güncelleştirin ve aşağıdaki komutu kullanarak 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 komutu kullanarak ağ geçidi dağıtımını yeniden başlatın:
kubectl rollout restart deployment/<deployment-name>
Ölçümleri görüntüleme
Artık her şeyi dağıtıp yapılandırdık. Şirket içinde barındırılan ağ geçidinin ölçümleri statsD aracılığıyla raporlaması gerekir. Prometheus, İstatistikler'den ölçümleri alır. Prometheus Hizmeti'nin ve'sini EXTERNAL-IP
PORT
kullanarak Prometheus panosuna gidin.
Şirket içi 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çüm | Açıklama |
---|---|
requests_total | Dönem içindeki API isteklerinin sayısı |
request_duration_seconds | Ağ geçidinin isteği aldığı andan, yanıtın tamamen gönderildiği ana kadar geçen milisaniye cinsinden süre |
request_backend_duration_seconds | Genel arka uç GÇ (bağlanma, gönderme ve alma bayt’ları) için harcanan milisaniye sayısı |
request_client_duration_seconds | Genel istemci G/Ç (bağlanma, gönderme ve alma bayt’ları) için harcanan milisaniye sayısı |
Günlükler
Şirket içi barındırılan ağ geçidi, günlükleri varsayılan olarak ve stderr
için stdout
çıkış olarak alır. Aşağıdaki komutu kullanarak günlükleri kolayca görüntüleyebilirsiniz:
kubectl logs <pod-name>
Şirket içinde barındırılan ağ geçidiniz Azure Kubernetes Service dağıtıldıysa, kapsayıcılar için Azure İzleyici'nin iş yüklerinizi toplamasını stdout
ve stderr
günlükleri Log Analytics'te görüntülemesini sağlayabilirsiniz.
Şirket içinde barındırılan ağ geçidi, , rfc5424
ve journal
gibi localsyslog
bir dizi protokolü de destekler. Aşağıdaki tabloda desteklenen tüm seçenekler özetlenmiştir.
Alan | Varsayılan | Açıklama |
---|---|---|
telemetry.logs.std | text |
Standart akışlarda günlüğe kaydetmeyi etkinleştirir. Değer , , text olabilir none json |
telemetry.logs.local | auto |
Yerel günlüğe kaydetmeyi etkinleştirir. Değer , , auto , localsyslog , rfc5424 , journal , olabilir none json |
telemetry.logs.local.localsyslog.endpoint | yok | localsyslog uç noktasını belirtir. |
telemetry.logs.local.localsyslog.facility | yok | localsyslog tesis kodunu belirtir. Örneğin. 7 |
telemetry.logs.local.rfc5424.endpoint | yok | rfc5424 uç noktasını belirtir. |
telemetry.logs.local.rfc5424.facility | yok | Rfc5424 başına tesis kodunu belirtir. Örneğin. 7 |
telemetry.logs.local.journal.endpoint | yok | Günlük uç noktasını belirtir. |
telemetry.logs.local.json.endpoint | 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ı. |
Yerel günlüğün örnek yapılandırması aşağıda verilmiştir:
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"
Sonraki adımlar
- Azure API Management ağ geçitlerinin gözlemlenebilirlik özellikleri hakkında daha fazla bilgi edinmek için.
- Şirket içinde barındırılan ağ geçidi hakkında daha fazla bilgi edinmek için bkz. Azure API Management şirket içinde barındırılan ağ geçidine genel bakış
- Günlükleri bulutta yapılandırma ve kalıcı hale ekleme hakkında bilgi edinin