کوبرنیٹس کلسٹر میں بیرونی خدمات کی نگرانی اور لاگنگ

کوبرنیٹس کلسٹر میں بیرونی خدمات کی نگرانی اور لاگنگ

سب کو مبارک ہو۔

میں نے تعینات کردہ سسٹمز میں تھرڈ پارٹی سروسز سے میٹرکس کو لاگ ان کرنے اور جمع کرنے کے بارے میں آن لائن کوئی عام گائیڈ نہیں ملا Kubernetes. میں اپنا حل پوسٹ کر رہا ہوں۔ یہ مضمون فرض کرتا ہے کہ آپ کے پاس پہلے سے کام ہے۔ Prometheus اور دیگر خدمات۔ ایک بیرونی اسٹیٹفول سروس کے لیے ڈیٹا سورس کی مثال کے طور پر، ایک DBMS استعمال کیا جائے گا۔ PostgreSQL کی ایک کنٹینر میں میں Docker. کمپنی پیکیج مینیجر کا استعمال کرتی ہے۔ پتوار، نیچے متن میں اس پر مثالیں ہوں گی۔ پورے حل کے لیے، ہم اپنا چارٹ تیار کر رہے ہیں، جس میں استعمال ہونے والی تمام سروسز کے نیسٹڈ چارٹ شامل ہیں۔

لاگنگ

بہت سی کمپنیاں لاگز کو جمع کرنے، دیکھنے اور سنٹرلائز کرنے کے لیے ٹیکنالوجیز کا ایک ڈھیر استعمال کرتی ہیں۔ Elasticsearch + لاگسٹ + کباب، مختصراً ELK۔ ہمارے معاملے میں، مواد کو انڈیکس کرنے کی ضرورت نہیں ہے اور میں نے زیادہ ہلکا پھلکا استعمال کیا۔ لوکی. یہ ہیلم پیکج کے طور پر دستیاب ہے، ہم نے اپنے سسٹم کے مطابق داخلے اور پی وی کی قدروں کو تبدیل کرکے اسے سب چارٹ کے طور پر شامل کیا ہے۔

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

کسی مثال کے لیے لاگ بھیجنے کے لیے لوکی استعمال کریں لوکی ڈوکر لاگنگ ڈرائیور.

آپ کو یہ ایڈ آن ہر چیز پر انسٹال کرنا ہوگا۔ میں Docker وہ میزبان جن سے آپ لاگ وصول کرنا چاہتے ہیں۔ ڈیمون کو پیڈنگ استعمال کرنے کا طریقہ بتانے کے کئی طریقے ہیں۔ میں یامل میں ڈرائیور کو منتخب کرتا ہوں۔ Docker Compose، جو حصہ ہے ناممکن پلے بک

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 لیے Prometheus. مندرجہ بالا فائل کا تسلسل ناممکن پلے بک

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 ڈیٹا حاصل کرنے کے لیے کنفیگر کرنا سب چارٹ میں اقدار میں ترمیم کرکے کیا جاتا ہے۔

values.yaml

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

موصولہ ڈیٹا کو دیکھنے کے لیے، مناسب ڈیش بورڈ انسٹال کریں۔
گرافانا اور ڈیٹا کے ذرائع کو ترتیب دیں۔ یہ گرافانا سب چارٹ میں اقدار کے ذریعے بھی کیا جا سکتا ہے۔

ایسا کیا لگتا ہے؟
کوبرنیٹس کلسٹر میں بیرونی خدمات کی نگرانی اور لاگنگ

مجھے امید ہے کہ اس مختصر مضمون نے اس حل کے پیچھے بنیادی خیالات کو سمجھنے میں آپ کی مدد کی ہے اور کبرنیٹس کلسٹر میں لوکی/پرومیتھیس کے لیے بیرونی خدمات کی نگرانی اور لاگنگ ترتیب دیتے وقت آپ کا وقت بچایا ہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں