Azure ağ geçidi için yerel ölçümleri ve API Management ağ geçidini yapılandırma

Bu makalede, Bir Kubernetes kümesine dağıtılan, kendinden konak ağ geçidi için yerel ölçümleri ve günlükleri yapılandırmayla ilgili ayrıntılar ve bilgiler ve bilgiler ve sağlar. Bulut ölçümlerini ve günlüklerini yapılandırmak için bu makaleye bakın.

Ölçümler

Kendinden konak ağ geçidi, ölçüm toplama ve toplama için birleştirici bir protokol haline geldi statsD'yidestekler. Bu bölümde StatsD'yi Kubernetes'e dağıtma, ağ geçidini StatsD aracılığıyla ölçümleri yapılandırılabilir ve prometheus kullanarak ölçümleri izleme adımları açıklandı.

Kümeye StatsD ve Prometheus dağıtma

Aşağıda, şirket içinde barındırılan ağ geçidinin dağıtılacağı Kubernetes kümesine StatsD ve Prometheus dağıtımına örnek bir YAML yapılandırması verilmiştir. Ayrıca her biri için bir Hizmet oluşturur. Kendi kendine barındırılan ağ geçidi, İstatistikler Hizmeti'ne ölçümler yayımlar. Prometheus panosuna Hizmeti aracılığıyla erişecek.

Not

Aşağıdaki örnek, genel kapsayıcı görüntülerini Docker Hub. Anonim çekme isteği yapmak yerine bir Docker Hub hesabı kullanarak kimlik doğrulaması yapmak için çekme gizli dizisi ayarlamanız önerilir. 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.

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ı bir dosyaya kaydedin metrics.yaml ve kümeye her şeyi dağıtmak için aşağıdaki komutu kullanın:

kubectl apply -f metrics.yaml

Dağıtım tamam olduktan sonra aşağıdaki komutu çalıştırarak Pod'ların çalıştırılıp çalışmay olduğunu kontrol edin. Pod adınız farklı olur.

kubectl get pods
NAME                                   READY   STATUS    RESTARTS   AGE
sputnik-metrics-f6d97548f-4xnb7        2/2     Running   0          1m

Aşağıdaki komutu çalıştırarak Hizmetlerin çalışmalarını kontrol edin. CLUSTER-IPStatsD Hizmetinin ve PORT notlarını not edin, daha sonra buna ihtiyacımız olacak. Ve kullanarak Prometheus panosuna ziyaret EXTERNAL-IP PORT 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çümler yayma için kendinden konak ağ geçidini yapılandırma

Hem StatsD hem de Prometheus dağıtıldığından, kendi içinde barındırılan ağ geçidinin yapılandırmalarını Güncelleştirerek İstatistiklerD aracılığıyla ölçümler yayma işlemi başlatılabilir. Özellik, ek seçeneklerle birlikte, kendinden konak ağ geçidi Dağıtımının ConfigMap'inde anahtarı kullanılarak telemetry.metrics.local etkinleştirilebilir veya devre dışı bırakılabilir. Kullanılabilir seçeneklerin dökümü aşağıda verilmiştir:

Alan Varsayılan Description
telemetry.metrics.local none StatsD aracılığıyla günlüğe kaydetmeyi sağlar. Değer , none statsd olabilir.
telemetry.metrics.local.statsd.endpoint yok İstatistiklerD uç noktasını belirtir.
telemetry.metrics.local.statsd.sampling yok Ölçüm örnekleme oranını belirtir. Değer 0 ile 1 arasında olabilir. Örneğin. 0.5
telemetry.metrics.local.statsd.tag-format yok StatsD exporter etiketleme biçimi. Değer , none librato , , dogStatsD influxDB olabilir.

Örnek yapılandırma şöyledir:

    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"

Kendinden konak 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ğıttık ve yapılandırdıyıldık, kendinden konak ağ geçidinin İstatistiklerD aracılığıyla ölçümleri bildirmesi gerekir. Prometheus, İstatistiklerD'den ölçümleri alır. Prometheus Hizmetinin ve kullanarak EXTERNAL-IP PORT Prometheus panosuna gidin.

Her şey doğru yapılandırıldıysa, kendi kendine barındırılan ağ geçidi üzerinden bazı API çağrıları yapma, aşağıdaki ölçümleri görüntüleyebilirsiniz:

Metric Açıklama
İstekler Dönemdeki API isteklerinin sayısı
DurationInmS Ağ geçidinin isteği aldığı andan, yanıtın tamamen gönderildiği ana kadar geçen milisaniye cinsinden süre
BackendDurationInMS Genel arka uç GÇ (bağlanma, gönderme ve alma bayt’ları) için harcanan milisaniye sayısı
ClientDurationInMS Genel istemci G/Ç (bağlanma, gönderme ve alma bayt’ları) için harcanan milisaniye sayısı

Günlükler

Otomatik olarak barındırılan ağ geçidi, günlükleri varsayılan olarak stdout ve stderr çıkışına iletir. Aşağıdaki komutu kullanarak günlükleri kolayca görüntüleyebilirsiniz:

kubectl logs <pod-name>

Kendi içinde barındırılan ağ geçidiniz Azure Kubernetes Service, kapsayıcıların iş yüklerinizi toplayıp Azure İzleyici Log Analytics'te günlükleri görüntülemesi için Azure İzleyici'yi stdout stderr etkinleştirebilirsiniz.

Kendinden konak ağ geçidi , ve gibi bir dizi localsyslog protokolü rfc5424 de journal destekler. Aşağıdaki tabloda desteklenen tüm seçenekler özetlenmiştir.

Alan Varsayılan Description
telemetry.logs.std text Standart akışlarda günlüğe kaydetmeyi sağlar. Değer , none text , olabilir json
telemetry.logs.local auto Yerel günlüğe kaydetmeyi sağlar. Değer , none auto , , , , localsyslog , rfc5424 journal olabilir 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 konak adı:bağlantı noktası.

Yerel günlüğün örnek yapılandırması şu şekildedir:

    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