Kutarisa uye kutema ekunze masevhisi kune Kubernetes cluster

Kutarisa uye kutema ekunze masevhisi kune Kubernetes cluster

Rombo rakanaka kune wese.

Ini handina kuwana gwara rakajairwa pamhepo pakutema matanda uye kuunganidza metrics kubva kune wechitatu-bato masevhisi mumasisitimu akaiswa mukati. Kubernetes. Ndiri kutumira mhinduro yangu. Ichi chinyorwa chinofungidzira kuti unotova nekushanda Prometheus nemamwe mabasa. Semuenzaniso we data sosi yebasa rekunze, DBMS ichashandiswa PostgreSQL mumudziyo Docker. Iyo kambani inoshandisa package maneja Helmamu, pasi pechinyorwa pachava nemienzaniso pairi. Kune mhinduro yese, isu tiri kugadzirira yedu chati, iyo inosanganisira nested machati eese masevhisi anoshandiswa.

Kutema miti

Makambani mazhinji anoshandisa stack yetekinoroji kuunganidza, kuona uye kuisa pakati matanda Elasticsearch + logstash + kibana, rakadimburirwa seELK. Mune yedu kesi, hapana chikonzero chekunongedza zvirimo uye ini ndakashandisa yakareruka Loki. Inowanikwa seHelm package, isu takaiwedzera se subchart nekushandura hunhu hwe ingress uye pv kuti ienderane nehurongwa hwedu.

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

Kutumira matanda kune muenzaniso Loki shandisa Loki Docker Logging Driver.

Iwe unofanirwa kuisa iyi yekuwedzera pane zvese Docker mauto aunoda kugamuchira matanda. Pane nzira dzakati wandei dzekuudza daemon mashandisiro epadding. Ndinosarudza mutyairi mune yaml Docker Kudzora, icho chikamu Anable playbook.

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

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

Metrics

Metrics inounganidzwa kubva kuPostgreSQL uchishandisa postgres_exporter nokuti Prometheus. Kuenderera mberi kwefaira iri pamusoro Anable playbook.

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

Kuti tinyatsojekeserwa, tichanyora mazita ekunze ekunze masevhisi tichishandisa 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 }}

Kugadzirisa Prometheus kuti igamuchire postgres_exporter data kunoitwa nekugadzirisa maitiro mune subchart.

values.yaml

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

Kuona iyo data yakagamuchirwa, isa iyo yakakodzera Dashboard mukati
grafana uye gadzirisa zvinyorwa zve data. Izvi zvinogona zvakare kuitwa kuburikidza nehunhu muGrafana subchart.

Chakaita sei
Kutarisa uye kutema ekunze masevhisi kune Kubernetes cluster

Ndinovimba chinyorwa chipfupi ichi chakubatsira iwe kunzwisisa iwo makuru mazano kuseri kweiyi mhinduro uye yakakuchengetera nguva paunenge uchimisikidza kutarisa uye kutema matanda ekunze masevhisi eLoki/Prometheus muboka reKubernetes.

Source: www.habr.com

Voeg