Megosztás a következőn keresztül:


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.yamlfá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 PORTa .

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 localsysloga 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, , textjson
telemetry.logs.local auto Engedélyezi a helyi naplózást. Az érték lehet none, auto, localsyslog, rfc5424, , journaljson
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:

Naplók felhasználása feldolgozó csomópontokból

Egyszerűen felhasználhatja őket a feldolgozó csomópontokhoz való hozzáféréssel:

  1. SSH-kapcsolat létrehozása a csomóponthoz (dokumentumok)
  2. 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 /hostmó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