Kubernetes පොකුරට බාහිර සේවාවන් නිරීක්ෂණය කිරීම සහ ලොග් කිරීම

Kubernetes පොකුරට බාහිර සේවාවන් නිරීක්ෂණය කිරීම සහ ලොග් කිරීම

සැමට සුභ ගමන්.

තුන්වන පාර්ශ්ව සේවාවලින් යොදවා ඇති පද්ධතිවලට ලොග් වීම සහ ප්‍රමිතික එකතු කිරීම පිළිබඳ සාමාන්‍යකරණය කළ මාර්ගෝපදේශයක් මා හට මාර්ගගතව හමු නොවීය. කුබර්නෙට්ස්. මම මගේ විසඳුම පළ කරමි. මෙම ලිපිය උපකල්පනය කරන්නේ ඔබ දැනටමත් වැඩ කර ඇති බවයි Prometheus සහ වෙනත් සේවාවන්. බාහිර රාජ්‍ය සේවාවක් සඳහා දත්ත මූලාශ්‍රයක උදාහරණයක් ලෙස, DBMS භාවිතා කරනු ඇත PostgreSQL කන්ටේනරයක Docker. සමාගම පැකේජ කළමනාකරු භාවිතා කරයි හෙල්ම්, පහත පෙළෙහි ඒ පිළිබඳ උදාහරණ ඇත. සම්පූර්ණ විසඳුම සඳහා, අපි භාවිතා කරන සියලුම සේවාවන්හි කැදලි ප්‍රස්ථාර ඇතුළත් අපගේම ප්‍රස්ථාරයක් සකස් කරමින් සිටිමු.

ලොග් කිරීම

බොහෝ සමාගම් ලඝු-සටහන් එකතු කිරීමට, බැලීමට සහ මධ්‍යගත කිරීමට තාක්ෂණයන් තොගයක් භාවිතා කරයි Elasticsearch + ලොග්ස්ටැෂ් + කිබානා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 Loging Driver.

ඔබ මෙම ඇඩෝනය සෑම දෙයකම ස්ථාපනය කළ යුතුය Docker ඔබට ලොග ලබා ගැනීමට අවශ්‍ය සත්කාරක. padding භාවිතා කරන ආකාරය ඩීමන් හට පැවසීමට ක්‍රම කිහිපයක් තිබේ. මම රියදුරු තෝරා ගන්නේ 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 සඳහා 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"
...

වැඩි පැහැදිලි කිරීමක් සඳහා, අපි අන්ත ලක්ෂ්‍ය භාවිතයෙන් බාහිර රාජ්‍ය සේවාවල නම් ලියන්නෙමු.

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 වින්‍යාස කිරීම උප ප්‍රස්ථාරයේ අගයන් සංස්කරණය කිරීමෙන් සිදු කෙරේ.

අගයන්.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

අදහස් එක් කරන්න