Kubernetes క్లస్టర్‌కు బాహ్య సేవలను పర్యవేక్షించడం మరియు లాగింగ్ చేయడం

Kubernetes క్లస్టర్‌కు బాహ్య సేవలను పర్యవేక్షించడం మరియు లాగింగ్ చేయడం

అందరికీ శుభోదయం.

థర్డ్-పార్టీ సర్వీస్‌ల నుండి మోహరించిన సిస్టమ్‌లలోకి లాగిన్ చేయడం మరియు కొలమానాలను సేకరించడంపై ఆన్‌లైన్‌లో సాధారణీకరించిన గైడ్ నాకు కనిపించలేదు Kubernetes. నేను నా పరిష్కారాన్ని పోస్ట్ చేస్తున్నాను. ఈ వ్యాసం మీకు ఇప్పటికే పని ఉందని ఊహిస్తుంది ప్రోమేతియస్ మరియు ఇతర సేవలు. బాహ్య స్టేట్‌ఫుల్ సర్వీస్ కోసం డేటా సోర్స్‌కి ఉదాహరణగా, DBMS ఉపయోగించబడుతుంది PostgreSQL ఒక కంటైనర్లో డాకర్. కంపెనీ ప్యాకేజీ నిర్వాహకుడిని ఉపయోగిస్తుంది హెల్మ్, దిగువ వచనంలో దానిపై ఉదాహరణలు ఉంటాయి. మొత్తం పరిష్కారం కోసం, మేము మా స్వంత చార్ట్‌ను సిద్ధం చేస్తున్నాము, ఇందులో ఉపయోగించిన అన్ని సేవల యొక్క సమూహ చార్ట్‌లు ఉంటాయి.

లాగింగ్

చాలా కంపెనీలు లాగ్‌లను సేకరించడానికి, వీక్షించడానికి మరియు కేంద్రీకరించడానికి సాంకేతికతలను ఉపయోగిస్తాయి Elasticsearch + Logstash + కిబానా, ELK గా సంక్షిప్తీకరించబడింది. మా విషయంలో, కంటెంట్‌ను ఇండెక్స్ చేయాల్సిన అవసరం లేదు మరియు నేను మరింత తేలికైనదాన్ని ఉపయోగించాను Loki. ఇది హెల్మ్ ప్యాకేజీగా అందుబాటులో ఉంది, మా సిస్టమ్‌కు అనుగుణంగా ఇన్‌గ్రెస్ మరియు 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 ఉపయోగం లోకి డాకర్ లాగింగ్ డ్రైవర్.

మీరు ప్రతిదానిలో ఈ యాడ్-ఆన్‌ను తప్పనిసరిగా ఇన్‌స్టాల్ చేయాలి డాకర్ మీరు లాగ్‌లను స్వీకరించాలనుకుంటున్న హోస్ట్‌లు. పాడింగ్‌ను ఎలా ఉపయోగించాలో డెమోన్‌కు చెప్పడానికి అనేక మార్గాలు ఉన్నాయి. నేను 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"
...

మరింత స్పష్టత కోసం, మేము ఎండ్‌పాయింట్‌లను ఉపయోగించి బాహ్య స్టేట్‌ఫుల్ సేవల పేర్లను వ్రాస్తాము.

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

పోస్ట్‌గ్రెస్_ఎక్స్‌పోర్టర్ డేటాను స్వీకరించడానికి ప్రోమేతియస్‌ను కాన్ఫిగర్ చేయడం సబ్‌చార్ట్‌లోని విలువలను సవరించడం ద్వారా జరుగుతుంది.

విలువలు.yaml

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

స్వీకరించిన డేటాను దృశ్యమానం చేయడానికి, తగిన డాష్‌బోర్డ్‌ను ఇన్‌స్టాల్ చేయండి
గ్రాఫనా మరియు డేటా మూలాలను కాన్ఫిగర్ చేయండి. గ్రాఫానా సబ్‌చార్ట్‌లోని విలువల ద్వారా కూడా ఇది చేయవచ్చు.

ఇది ఎలా ఉంది
Kubernetes క్లస్టర్‌కు బాహ్య సేవలను పర్యవేక్షించడం మరియు లాగింగ్ చేయడం

ఈ పరిష్కారం వెనుక ఉన్న ప్రధాన ఆలోచనలను అర్థం చేసుకోవడానికి ఈ చిన్న కథనం మీకు సహాయపడిందని మరియు కుబెర్నెట్స్ క్లస్టర్‌లో Loki/Prometheus కోసం బాహ్య సేవల పర్యవేక్షణ మరియు లాగింగ్‌ను సెటప్ చేసేటప్పుడు మీ సమయాన్ని ఆదా చేసిందని నేను ఆశిస్తున్నాను.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి