A’ cumail sùil air agus a’ clàradh sheirbheisean taobh a-muigh gu buidheann Kubernetes

A’ cumail sùil air agus a’ clàradh sheirbheisean taobh a-muigh gu buidheann Kubernetes

Gur math a thèid leis a h-uile duine.

Chan eil mi air stiùireadh coitcheann a lorg air-loidhne mu bhith a’ logadh agus a’ cruinneachadh mheatairean bho sheirbheisean treas-phàrtaidh gu siostaman a tha air an cleachdadh ann an Kubernetes. Tha mi a’ postadh mo fhuasgladh. Tha an artaigil seo a’ gabhail ris gu bheil obair-obrach agad mu thràth Prometheus agus seirbheisean eile. Mar eisimpleir de thùs dàta airson seirbheis stàite taobh a-muigh, thèid DBMS a chleachdadh PostgreSQL ann an soitheach Docker. Bidh a’ chompanaidh a’ cleachdadh manaidsear pacaid Helm, gu h-ìosal anns an teacsa bidh eisimpleirean air. Airson an fhuasglaidh gu lèir, tha sinn ag ullachadh ar clàr fhèin, anns a bheil clàran neadachaidh de na seirbheisean air fad a thathar a’ cleachdadh.

Logadh

Bidh mòran chompanaidhean a’ cleachdadh stac de theicneòlasan gus logaichean a chruinneachadh, fhaicinn agus a mheadhanachadh Elasticsearch + Logstash + kibana, air a ghiorrachadh mar ELK. Anns a 'chùis againn, chan eil feum air clàr-amais a dhèanamh air an t-susbaint agus chleachd mi fear nas aotrom Loki. Tha e ri fhaighinn mar phasgan Helm, chuir sinn ris mar fho-chairt le bhith ag atharrachadh nan luachan airson ingress agus pv a rèir ar siostam.

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

Gus logaichean a chuir gu eisimpleir Loki cleachdadh Dràibhear clàraidh Loki Docker.

Feumaidh tu an tuilleadan seo a stàladh air a h-uile rud Docker luchd-aoigheachd às a bheil thu airson logaichean fhaighinn. Tha grunn dhòighean ann innse don deamhan mar a chleachdas e am pleadhag. Tha mi a ' taghadh an driver ann yaml Companaidh Docker, a tha na phàirt Freagair leabhar-cluiche.

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

far a bheil loki_url: kube-loki.example.domain/loki/api/v1/push

Meatrics

Bithear a’ cruinneachadh metrics bho PostgreSQL a’ cleachdadh postgres_exporter airson Prometheus. A’ leantainn leis an fhaidhle gu h-àrd Freagair leabhar-cluiche.

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

Airson barrachd soilleireachd, sgrìobhaidh sinn ainmean sheirbheisean stàite taobh a-muigh a’ cleachdadh Endpoints.

postgres-seirbheis.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 }}

Tha rèiteachadh Prometheus gus dàta postgres_exporter fhaighinn air a dhèanamh le bhith a’ deasachadh luachan san fho-chairt.

luachan.yaml

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

Gus an dàta a fhuaireadh fhaicinn, cuir a-steach an deas-bhòrd iomchaidh
grafana agus a 'rèiteachadh stòran dàta. Faodar seo a dhèanamh cuideachd tro luachan ann am fo-chairt Grafana.

Cò ris a tha e coltach
A’ cumail sùil air agus a’ clàradh sheirbheisean taobh a-muigh gu buidheann Kubernetes

Tha mi an dòchas gun do chuidich an artaigil ghoirid seo thu le bhith a’ tuigsinn na prìomh bheachdan air cùl an fhuasglaidh seo agus gun do shàbhail e ùine dhut nuair a bha thu a’ stèidheachadh sgrùdadh agus logadh sheirbheisean taobh a-muigh airson Loki / Prometheus ann am buidheann Kubernetes.

Source: www.habr.com

Cuir beachd ann