Kubernetes klasterinə xarici xidmətlərin monitorinqi və qeydi

Kubernetes klasterinə xarici xidmətlərin monitorinqi və qeydi

Hər kəsə uğurlar.

Mən üçüncü tərəf xidmətlərindən istifadə edilən sistemlərdə ölçüləri qeyd etmək və toplamaq üçün onlayn ümumiləşdirilmiş bələdçi tapmadım. Kubernetes. Mən həllimi dərc edirəm. Bu məqalə sizin artıq bir işinizin olduğunu güman edir Prometey və digər xidmətlər. Xarici statuslu xidmət üçün məlumat mənbəyinə nümunə olaraq DBMS istifadə olunacaq PostgreSQL bir konteynerdə yükvuran. Şirkət paket menecerindən istifadə edir sükan, aşağıda mətndə bununla bağlı nümunələr olacaq. Bütün həll yolu üçün istifadə olunan bütün xidmətlərin iç-içə diaqramlarını ehtiva edən öz diaqramımızı hazırlayırıq.

Giriş

Bir çox şirkət jurnalları toplamaq, baxmaq və mərkəzləşdirmək üçün bir sıra texnologiyalardan istifadə edir Elasticsearch + Logstash + kibana, ELK kimi qısaldılmışdır. Bizim vəziyyətimizdə məzmunu indeksləşdirməyə ehtiyac yoxdur və mən daha yüngül istifadə etdim Loki. Helm paketi olaraq mövcuddur, sistemimizə uyğun olaraq giriş və pv dəyərlərini dəyişdirərək onu alt diaqram kimi əlavə etdik.

dəyərlər.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"

Günlükləri nümunəyə göndərmək üçün Loki istifadə Loki Docker Logging Driver.

Bu əlavəni hər şeyə quraşdırmalısınız yükvuran logları almaq istədiyiniz hostlar. Demona paddingdən necə istifadə edəcəyini söyləməyin bir neçə yolu var. Yaml-də sürücü seçirəm Docker tərtib edinhissəsi olan Yoxdur oyun kitabı.

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 }}"
...

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

Metriklər

Metriklər PostgreSQL-dən istifadə edərək toplanır postgres_exporter uğrunda Prometey. Yuxarıdakı faylın davamı Yoxdur oyun kitabı.

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"
...

Daha aydınlıq üçün biz Endpoints istifadə edərək xarici dövlət xidmətlərinin adlarını yazacağıq.

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 }}

Prometheus-u postgres_exporter məlumatlarını qəbul etmək üçün konfiqurasiya etmək alt diaqramdakı dəyərləri redaktə etməklə həyata keçirilir.

dəyərlər.yaml

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

Alınan məlumatları vizuallaşdırmaq üçün müvafiq Dashboard quraşdırın
Qrafana və məlumat mənbələrini konfiqurasiya edin. Bu, Grafana alt diaqramındakı dəyərlər vasitəsilə də edilə bilər.

Nə bənzəyir?
Kubernetes klasterinə xarici xidmətlərin monitorinqi və qeydi

Ümid edirəm ki, bu qısa məqalə bu həllin arxasında duran əsas fikirləri anlamağa kömək etdi və Kubernetes klasterində Loki/Prometheus üçün xarici xidmətlərin monitorinqini və qeydiyyatını qurarkən vaxtınıza qənaət etdi.

Mənbə: www.habr.com

Добавить комментарий