نظارت و ثبت خدمات خارجی به خوشه Kubernetes

نظارت و ثبت خدمات خارجی به خوشه Kubernetes

همگی موفق باشید.

من یک راهنمای کلی آنلاین در مورد ثبت و جمع‌آوری معیارها از خدمات شخص ثالث به سیستم‌های مستقر در کوبرنیتس. من راه حل خود را پست می کنم. این مقاله فرض می کند که شما در حال حاضر کار دارید تیتان فرزند پاپتوس و خدمات دیگر به عنوان نمونه ای از یک منبع داده برای یک سرویس خارجی حالت دار، یک DBMS استفاده خواهد شد PostgreSQL و در یک ظرف کارگر بارانداز. این شرکت از یک مدیر بسته استفاده می کند سکان، در زیر در متن نمونه هایی روی آن وجود خواهد داشت. برای کل راه حل، ما در حال آماده سازی نمودار خودمان هستیم که شامل نمودارهای تودرتو از تمام خدمات استفاده شده است.

ورود به سیستم

بسیاری از شرکت ها از مجموعه ای از فناوری ها برای جمع آوری، مشاهده و متمرکز کردن گزارش ها استفاده می کنند ارزیابی جستجو + لگستاش + کیبانا، به اختصار ELK. در مورد ما، نیازی به ایندکس کردن محتوا نیست و من از سبک وزن بیشتری استفاده کردم لکی. این به عنوان یک بسته Helm در دسترس است، ما آن را به عنوان یک نمودار فرعی با تغییر مقادیر ورودی و pv متناسب با سیستم خود اضافه کردیم.

ارزش ها.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"

برای ارسال گزارش به یک نمونه لکی استفاده درایور Loki Docker Logging.

شما باید این افزونه را روی همه چیز نصب کنید کارگر بارانداز میزبان هایی که می خواهید گزارش ها را از آنها دریافت کنید. راه های مختلفی وجود دارد که می توان به دیمون بگویید چگونه از بالشتک استفاده کند. من درایور را در yaml انتخاب می کنم داکور نوشتن، که بخشی است غیر ممکن کتاب بازی

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

جایی که loki_url: kube-loki.example.domain/loki/api/v1/push

معیارهای

معیارها با استفاده از PostgreSQL جمع آوری می شوند postgres_exporter برای تیتان فرزند پاپتوس. ادامه فایل فوق غیر ممکن کتاب بازی

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

برای وضوح بیشتر، نام سرویس های حالت دار خارجی را با استفاده از 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 }}

پیکربندی Prometheus برای دریافت داده های postgres_exporter با ویرایش مقادیر در نمودار فرعی انجام می شود.

ارزش ها.yaml

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

برای تجسم داده های دریافتی، داشبورد مناسب را در آن نصب کنید
گرافانا و منابع داده را پیکربندی کنید. این را می توان از طریق مقادیر موجود در نمودار فرعی Grafana نیز انجام داد.

چه چیزی به نظر می رسد
نظارت و ثبت خدمات خارجی به خوشه Kubernetes

امیدوارم این مقاله کوتاه به شما در درک ایده های اصلی این راه حل کمک کرده باشد و در زمان تنظیم نظارت و ثبت سرویس های خارجی برای Loki/Prometheus در یک خوشه Kubernetes در وقت شما صرفه جویی کند.

منبع: www.habr.com

اضافه کردن نظر