Ukuqapha nokugawula izinsiza zangaphandle kwiqoqo le-Kubernetes

Ukuqapha nokugawula izinsiza zangaphandle kwiqoqo le-Kubernetes

Inhlanhla kuwo wonke umuntu.

Angikawutholi umhlahlandlela ojwayelekile ku-inthanethi wokungena nokuqoqa amamethrikhi kusukela kumasevisi ezinkampani zangaphandle ukuya kumasistimu afakwe kuwo. Kubernetes. Ngithumela isisombululo sami. Lesi sihloko sithatha ukuthi usuvele unomsebenzi osebenzayo Prometheus nezinye izinsiza. Njengesibonelo somthombo wedatha wesevisi yangaphandle esezingeni eliphezulu, kuzosetshenziswa i-DBMS I-PostgreSQL esitsheni Docker. Inkampani isebenzisa umphathi wephakheji Helm, ngezansi embhalweni kuzoba nezibonelo kuwo. Kuso sonke isixazululo, silungiselela ishadi lethu, elihlanganisa amashadi afakwe esidlekeni azo zonke izinsiza ezisetshenzisiwe.

Ukugawula

Izinkampani eziningi zisebenzisa inqwaba yobuchwepheshe ukuqoqa, ukubuka nokubeka izingodo endaweni eyodwa Islastiki + Logstash + kibana, esifushanisiwe njenge-ELK. Esimweni sethu, asikho isidingo sokukhomba okuqukethwe futhi ngisebenzise okulula kakhulu Loki. Itholakala njengephakheji ye-Helm, siyingeze njengeshadi elincane ngokushintsha amanani we-ingress kanye ne-pv ukuze ihambisane nesistimu yethu.

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

Ukuthumela izingodo kusibonelo Loki sebenzisa I-Loki Docker Logging Driver.

Kufanele ufake lesi sengezo kukho konke Docker osokhaya ofuna ukuthola kubo izingodo. Kunezindlela ezimbalwa zokutshela i-daemon ukuthi isetshenziswa kanjani i-padding. Ngikhetha umshayeli ku-yaml I-Docker Ukubhala, okuyingxenye Ansible incwadi yokudlala.

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

lapho i-loki_url: kube-loki.example.domain/loki/api/v1/push

Amamethrikhi

Amamethrikhi aqoqwa ku-PostgreSQL kusetshenziswa postgres_exporter ngoba Prometheus. Ukuqhubeka kwefayela elingenhla Ansible incwadi yokudlala.

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

Ukuze kube nokucace kakhudlwana, sizobhala amagama ezinsizakalo zangaphandle sisebenzisa ama-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 }}

Ukulungiselela i-Prometheus ukuthola idatha ye-postgres_exporter kwenziwa ngokuhlela amanani kushadi elincane.

amanani.yaml

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

Ukuze ubone ngeso lengqondo idatha etholiwe, faka Ideshibhodi efanele kuyo
UGrafana futhi ulungiselele imithombo yedatha. Lokhu kungenziwa futhi ngamavelu kushadi elincane laseGrafana.

Ibukeka kanjani
Ukuqapha nokugawula izinsiza zangaphandle kwiqoqo le-Kubernetes

Ngithemba ukuthi lesi sihloko esifushane sikusize uqonde imibono eyinhloko ngemuva kwalesi sixazululo futhi sikugcinele isikhathi lapho uhlela ukuqapha nokungena kwezinsizakalo zangaphandle ze-Loki/Prometheus kuqoqo le-Kubernetes.

Source: www.habr.com

Engeza amazwana