Monitorimi dhe regjistrimi i shërbimeve të jashtme në grupin Kubernetes

Monitorimi dhe regjistrimi i shërbimeve të jashtme në grupin Kubernetes

Fat të gjithëve.

Nuk kam gjetur një udhëzues të përgjithësuar në internet për regjistrimin dhe mbledhjen e matjeve nga shërbimet e palëve të treta në sistemet e vendosura në Kubernetes. Unë po postoj zgjidhjen time. Ky artikull supozon se ju tashmë keni një punë Prometeu dhe shërbime të tjera. Si shembull i një burimi të dhënash për një shërbim të jashtëm shtetëror, do të përdoret një DBMS PostgreSQL në një enë prerës. Kompania përdor një menaxher paketash kaskë, më poshtë në tekst do të ketë shembuj mbi të. Për të gjithë zgjidhjen, ne po përgatisim grafikun tonë, i cili përfshin grafikët e ndërthurur të të gjitha shërbimeve të përdorura.

Prerjet

Shumë kompani përdorin një grumbull teknologjish për të mbledhur, parë dhe centralizuar regjistrat Elasticsearch + logstash + kibana, shkurtuar si ELK. Në rastin tonë, nuk ka nevojë të indeksojmë përmbajtjen dhe kam përdorur një peshë më të lehtë Loki. Është i disponueshëm si një paketë Helm, ne e shtuam atë si një nëngrafikë duke ndryshuar vlerat për hyrje dhe pv për t'iu përshtatur sistemit tonë.

vlerat.yaml

ingress:
  enabled: true
  annotations:
     kubernetes.io/ingress.class: nginx
  hosts:
    - host: kube-loki.example.domain
      paths: 
        - /
  tls: []

....

persistence:
  type: pvc
  enabled: true
  accessModes:
    - ReadWriteOnce
  size: 100Gi
  finalizers:
    - kubernetes.io/pvc-protection
  existingClaim: "pv-loki"

Për të dërguar regjistrat në një shembull Loki përdorim Shofer Loki Docker Logging.

Duhet ta instaloni këtë shtesë në çdo gjë prerës hostet nga të cilët dëshironi të merrni regjistrat. Ka disa mënyra për t'i treguar demonit se si të përdorë mbushjen. Unë zgjedh shoferin në yaml Shkruaj Docker, e cila është pjesë Ansible libër lojërash.

postgres.yaml

    - name: Run containers
      docker_compose:
        project_name: main-postgres
        definition:
          version: '3.7'
          services:
            p:
              image: "{{ postgres_version }}"
              container_name: postgresql
              restart: always
              volumes:
                - "{{ postgres_dir }}/data:/var/lib/postgresql/data"
                - "{{ postgres_dir }}/postgres_init_scripts:/docker-entrypoint-initdb.d"
              environment:
                POSTGRES_PASSWORD: {{ postgres_pass }}
                POSTGRES_USER: {{ postgres_user }}
              ports:
                - "{{ postgres_ip }}:{{ postgres_port }}:5432"
              logging:
                driver: "loki"
                options:
                  loki-url: "{{ loki_url }}"
                  loki-batch-size: "{{ loki_batch_size }}"
                  loki-retries: "{{ loki_retries }}"
...

ku loki_url: kube-loki.example.domain/loki/api/v1/push

Metrikë

Metrikat mblidhen nga PostgreSQL duke përdorur postgres_eksportues për Prometeu. Vazhdimi i dosjes së mësipërme Ansible libër lojërash.

postgres.yaml

...
            pexp:
              image: "wrouesnel/postgres_exporter"
              container_name: pexporter
              restart: unless-stopped
              environment:
                DATA_SOURCE_NAME: "postgresql://{{ postgres_user }}:{{ postgres_pass }}@p:5432/postgres?sslmode=disable"
              ports:
                - "{{ postgres_ip }}:{{ postgres_exporter_port }}:9187"
              logging:
                driver: "json-file"
                options:
                  max-size: "5m"
...

Për qartësi më të madhe, ne do të shkruajmë emrat e shërbimeve të jashtme shtetërore duke përdorur Endpoints.

postgres-service.yaml

apiVersion: v1
kind: Endpoints
metadata:
  name: postgres-exporter
subsets:
  - addresses:
      - ip: {{ .Values.service.postgres.ip }}
    ports:
      - port: {{ .Values.service.postgres.port }}
        protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: postgres-exporter
  labels:
    chart:  "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
spec:
  ports:
    - protocol: TCP
      port: {{ .Values.service.postgres.port }}
      targetPort: {{ .Values.service.postgres.port }}

Konfigurimi i Prometheus për të marrë të dhëna postgres_exporter bëhet duke redaktuar vlerat në nëngrafikë.

vlerat.yaml

scrape_configs:
...
  - job_name: postgres-exporter
    static_configs:
      - targets: 
         - postgres-exporter.applicationnamespace.svc.cluster.local:9187
        labels:
          alias: postgres
...

Për të vizualizuar të dhënat e marra, instaloni panelin e duhur të kontrollit
grafana dhe konfiguroni burimet e të dhënave. Kjo mund të bëhet edhe përmes vlerave në nëngrafinë Grafana.

Si duket
Monitorimi dhe regjistrimi i shërbimeve të jashtme në grupin Kubernetes

Shpresoj se ky artikull i shkurtër ju ka ndihmuar të kuptoni idetë kryesore pas kësaj zgjidhjeje dhe t'ju kursejë kohë kur vendosni monitorimin dhe regjistrimin e shërbimeve të jashtme për Loki/Prometheus në një grup Kubernetes.

Burimi: www.habr.com

Shto një koment