குபெர்னெட்ஸ் கிளஸ்டருக்கு வெளிப்புற சேவைகளை கண்காணித்தல் மற்றும் பதிவு செய்தல்

குபெர்னெட்ஸ் கிளஸ்டருக்கு வெளிப்புற சேவைகளை கண்காணித்தல் மற்றும் பதிவு செய்தல்

அனைவருக்கும் நல்வாழ்த்துக்கள்.

மூன்றாம் தரப்பு சேவைகளில் உள்ள கணினிகளில் பதிவுசெய்தல் மற்றும் அளவீடுகளை சேகரிப்பது பற்றிய பொதுவான வழிகாட்டியை ஆன்லைனில் நான் காணவில்லை. Kubernetes. எனது தீர்வை பதிவிடுகிறேன். இந்த கட்டுரை உங்களிடம் ஏற்கனவே ஒரு வேலை இருப்பதாகக் கருதுகிறது பிரமீதீயஸ் மற்றும் பிற சேவைகள். வெளிப்புற ஸ்டேட்ஃபுல் சேவைக்கான தரவு மூலத்திற்கு உதாரணமாக, ஒரு DBMS பயன்படுத்தப்படும் போஸ்ட்கெரே ஒரு கொள்கலனில் கூலியாள். நிறுவனம் ஒரு தொகுப்பு மேலாளரைப் பயன்படுத்துகிறது தலைமையில், கீழே உள்ள உரையில் எடுத்துக்காட்டுகள் இருக்கும். முழு தீர்வுக்காக, நாங்கள் எங்கள் சொந்த விளக்கப்படத்தை தயார் செய்கிறோம், இதில் பயன்படுத்தப்படும் அனைத்து சேவைகளின் உள்ளமை விளக்கப்படங்களும் அடங்கும்.

பதிவு செய்தல்

பல நிறுவனங்கள் பதிவுகளை சேகரிக்க, பார்க்க மற்றும் மையப்படுத்த தொழில்நுட்பங்களின் அடுக்கைப் பயன்படுத்துகின்றன Elasticsearch + Logstash + kibana, ELK என சுருக்கப்பட்டது. எங்கள் விஷயத்தில், உள்ளடக்கத்தை அட்டவணைப்படுத்த வேண்டிய அவசியமில்லை, நான் மிகவும் இலகுரக பயன்படுத்தினேன் லோகி. இது ஒரு ஹெல்ம் தொகுப்பாகக் கிடைக்கிறது, எங்கள் கணினிக்கு ஏற்றவாறு உட்செலுத்துதல் மற்றும் pvக்கான மதிப்புகளை மாற்றுவதன் மூலம் அதை துணை விளக்கப்படமாகச் சேர்த்துள்ளோம்.

மதிப்புகள்.யாம்ல்

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 இல் தேர்ந்தெடுக்கிறேன் டக்கர் எழுது, இது ஒரு பகுதியாகும் Ansible விளையாட்டு புத்தகம்.

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 செய்ய பிரமீதீயஸ். மேலே உள்ள கோப்பின் தொடர்ச்சி Ansible விளையாட்டு புத்தகம்.

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

postgres_exporter தரவைப் பெறுவதற்கு Prometheus ஐ உள்ளமைப்பது துணை அட்டவணையில் மதிப்புகளைத் திருத்துவதன் மூலம் செய்யப்படுகிறது.

மதிப்புகள்.யாம்ல்

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

பெறப்பட்ட தரவைக் காட்சிப்படுத்த, பொருத்தமான டாஷ்போர்டை நிறுவவும்
கிரபனா மற்றும் தரவு மூலங்களை உள்ளமைக்கவும். கிராஃபானா துணை அட்டவணையில் உள்ள மதிப்புகள் மூலமாகவும் இதைச் செய்யலாம்.

அது எப்படி இருக்கும்
குபெர்னெட்ஸ் கிளஸ்டருக்கு வெளிப்புற சேவைகளை கண்காணித்தல் மற்றும் பதிவு செய்தல்

இந்தத் தீர்வின் பின்னணியில் உள்ள முக்கிய யோசனைகளைப் புரிந்துகொள்ள இந்தச் சிறு கட்டுரை உங்களுக்கு உதவியதாகவும், குபெர்னெட்டஸ் கிளஸ்டரில் லோகி/ப்ரோமிதியஸுக்கான வெளிப்புறச் சேவைகளின் கண்காணிப்பு மற்றும் பதிவுகளை அமைக்கும் போது உங்கள் நேரத்தை மிச்சப்படுத்தியதாகவும் நம்புகிறேன்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்