ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್‌ಗೆ ಬಾಹ್ಯ ಸೇವೆಗಳ ಮೇಲ್ವಿಚಾರಣೆ ಮತ್ತು ಲಾಗಿಂಗ್

ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್‌ಗೆ ಬಾಹ್ಯ ಸೇವೆಗಳ ಮೇಲ್ವಿಚಾರಣೆ ಮತ್ತು ಲಾಗಿಂಗ್

ಎಲ್ಲರಿಗೂ ಶುಭವಾಗಲಿ.

ಥರ್ಡ್-ಪಾರ್ಟಿ ಸೇವೆಗಳಿಂದ ನಿಯೋಜಿಸಲಾದ ಸಿಸ್ಟಮ್‌ಗಳಿಗೆ ಲಾಗಿಂಗ್ ಮತ್ತು ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಕುರಿತು ಆನ್‌ಲೈನ್‌ನಲ್ಲಿ ಸಾಮಾನ್ಯೀಕೃತ ಮಾರ್ಗದರ್ಶಿಯನ್ನು ನಾನು ಕಂಡುಕೊಂಡಿಲ್ಲ ಕುಬರ್ನೆಟ್ಸ್. ನಾನು ನನ್ನ ಪರಿಹಾರವನ್ನು ಪೋಸ್ಟ್ ಮಾಡುತ್ತಿದ್ದೇನೆ. ನೀವು ಈಗಾಗಲೇ ಕೆಲಸವನ್ನು ಹೊಂದಿರುವಿರಿ ಎಂದು ಈ ಲೇಖನವು ಊಹಿಸುತ್ತದೆ ಪ್ರಮೀತಿಯಸ್ ಮತ್ತು ಇತರ ಸೇವೆಗಳು. ಬಾಹ್ಯ ಸ್ಥಿತಿಯ ಸೇವೆಗಾಗಿ ಡೇಟಾ ಮೂಲದ ಉದಾಹರಣೆಯಾಗಿ, DBMS ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ PostgreSQL ಒಂದು ಪಾತ್ರೆಯಲ್ಲಿ ಡಾಕರ್. ಕಂಪನಿಯು ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ ಹೆಲ್ಮ್, ಕೆಳಗೆ ಪಠ್ಯದಲ್ಲಿ ಅದರ ಮೇಲೆ ಉದಾಹರಣೆಗಳಿರುತ್ತವೆ. ಸಂಪೂರ್ಣ ಪರಿಹಾರಕ್ಕಾಗಿ, ಬಳಸಿದ ಎಲ್ಲಾ ಸೇವೆಗಳ ನೆಸ್ಟೆಡ್ ಚಾರ್ಟ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ನಮ್ಮ ಸ್ವಂತ ಚಾರ್ಟ್ ಅನ್ನು ನಾವು ಸಿದ್ಧಪಡಿಸುತ್ತಿದ್ದೇವೆ.

ಲಾಗಿಂಗ್

ಲಾಗ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು, ವೀಕ್ಷಿಸಲು ಮತ್ತು ಕೇಂದ್ರೀಕರಿಸಲು ಅನೇಕ ಕಂಪನಿಗಳು ತಂತ್ರಜ್ಞಾನಗಳ ಸ್ಟಾಕ್ ಅನ್ನು ಬಳಸುತ್ತವೆ Elasticsearch + ಲಾಗ್‌ಸ್ಟ್ಯಾಶ್ + ಕಿಬಾನಾELK ಎಂದು ಸಂಕ್ಷಿಪ್ತಗೊಳಿಸಲಾಗಿದೆ. ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ವಿಷಯವನ್ನು ಸೂಚಿಕೆ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ ಮತ್ತು ನಾನು ಹೆಚ್ಚು ಹಗುರವಾದದ್ದನ್ನು ಬಳಸಿದ್ದೇನೆ ಲೋಕಿ. ಇದು ಹೆಲ್ಮ್ ಪ್ಯಾಕೇಜ್‌ನಂತೆ ಲಭ್ಯವಿದೆ, ನಮ್ಮ ಸಿಸ್ಟಮ್‌ಗೆ ಸರಿಹೊಂದುವಂತೆ ಪ್ರವೇಶ ಮತ್ತು ಪಿವಿ ಮೌಲ್ಯಗಳನ್ನು ಬದಲಾಯಿಸುವ ಮೂಲಕ ನಾವು ಅದನ್ನು ಉಪಚಾರ್ಟ್‌ನಂತೆ ಸೇರಿಸಿದ್ದೇವೆ.

ಮೌಲ್ಯಗಳು.ಯಾಮ್ಲ್

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"

ಒಂದು ನಿದರ್ಶನಕ್ಕೆ ದಾಖಲೆಗಳನ್ನು ಕಳುಹಿಸಲು ಲೋಕಿ ಬಳಕೆ ಲೋಕಿ ಡಾಕರ್ ಲಾಗಿಂಗ್ ಡ್ರೈವರ್.

ನೀವು ಎಲ್ಲದರಲ್ಲೂ ಈ ಆಡ್-ಆನ್ ಅನ್ನು ಸ್ಥಾಪಿಸಬೇಕು ಡಾಕರ್ ನೀವು ಲಾಗ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಬಯಸುವ ಹೋಸ್ಟ್‌ಗಳು. ಪ್ಯಾಡಿಂಗ್ ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂದು ಡೀಮನ್‌ಗೆ ಹೇಳಲು ಹಲವಾರು ಮಾರ್ಗಗಳಿವೆ. ನಾನು ಚಾಲಕವನ್ನು 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 }}"
...

ಲೋಕಿ_ಯುಆರ್ಎಲ್: 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 }}

ಪೋಸ್ಟ್‌ಗ್ರೆಸ್_ಎಕ್ಸ್‌ಪೋರ್ಟರ್ ಡೇಟಾವನ್ನು ಸ್ವೀಕರಿಸಲು ಪ್ರಮೀತಿಯಸ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು ಉಪಚಾರ್ಟ್‌ನಲ್ಲಿ ಮೌಲ್ಯಗಳನ್ನು ಸಂಪಾದಿಸುವ ಮೂಲಕ ಮಾಡಲಾಗುತ್ತದೆ.

ಮೌಲ್ಯಗಳು.ಯಾಮ್ಲ್

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

ಸ್ವೀಕರಿಸಿದ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಲು, ಸೂಕ್ತವಾದ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ
ಗ್ರಾಫಾನಾ ಮತ್ತು ಡೇಟಾ ಮೂಲಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ. ಗ್ರಾಫನಾ ಉಪಚಾರ್ಟ್‌ನಲ್ಲಿನ ಮೌಲ್ಯಗಳ ಮೂಲಕವೂ ಇದನ್ನು ಮಾಡಬಹುದು.

ಅದು ಹೇಗಿರುತ್ತದೆ
ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್‌ಗೆ ಬಾಹ್ಯ ಸೇವೆಗಳ ಮೇಲ್ವಿಚಾರಣೆ ಮತ್ತು ಲಾಗಿಂಗ್

ಈ ಸಣ್ಣ ಲೇಖನವು ಈ ಪರಿಹಾರದ ಹಿಂದಿನ ಮುಖ್ಯ ಆಲೋಚನೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡಿದೆ ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ಲೋಕಿ/ಪ್ರಮೀಥಿಯಸ್‌ಗಾಗಿ ಬಾಹ್ಯ ಸೇವೆಗಳ ಮೇಲ್ವಿಚಾರಣೆ ಮತ್ತು ಲಾಗಿಂಗ್ ಅನ್ನು ಹೊಂದಿಸುವಾಗ ನಿಮ್ಮ ಸಮಯವನ್ನು ಉಳಿಸುತ್ತದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ