Monatóireacht agus logáil seirbhísí seachtracha chuig braisle Kubernetes

Monatóireacht agus logáil seirbhísí seachtracha chuig braisle Kubernetes

Ádh mór do gach duine.

Níl treoir ghinearálaithe aimsithe agam ar líne ar logáil agus bailiú méadrachta ó sheirbhísí tríú páirtí i gcórais arna n-imscaradh i Kubernetes. Tá mo réiteach á phostáil agam. Glacann an t-alt seo leis go bhfuil obair oibre agat cheana féin Prometheus agus seirbhísí eile. Mar shampla d’fhoinse sonraí do sheirbhís stáit sheachtrach, úsáidfear DBMS PostgreSQL i gcoimeádán dhugaire. Úsáideann an chuideachta bainisteoir pacáiste Helm, thíos sa téacs beidh samplaí air. Maidir leis an réiteach iomlán, táimid ag ullmhú ár gcairt féin, a chuimsíonn cairteacha neadaithe de na seirbhísí go léir a úsáidtear.

Logáil

Úsáideann go leor cuideachtaí stór teicneolaíochtaí chun logaí a bhailiú, a fheiceáil agus a lárú Elasticsearch + Logstash + ciobán, arna ghiorrú mar ELK. In ár gcás, ní gá an t-ábhar a innéacsú agus d'úsáid mé níos éadroma Loki. Tá sé ar fáil mar phacáiste Helm, chuireamar leis mar fho-chairt é trí na luachanna le haghaidh ingress agus pv a athrú chun freastal ar ár gcóras.

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

Chun logs a sheoladh chuig shampla Loki úsáid a bhaint as Tiománaí logáil isteach Loki Docker.

Ní mór duit an breiseán seo a shuiteáil ar gach rud dhugaire hóstach óna bhfuil tú ag iarraidh logaí a fháil. Tá go leor bealaí ann a insint don deamhan conas an stuáil a úsáid. Roghnaigh mé an tiománaí i yaml Comhdháil Docker, atá mar chuid Freagra leabhar súgartha.

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

áit a bhfuil loki_url: kube-loki.example.domain/loki/api/v1/push

Méadracht

Bailítear méadracht ó PostgreSQL ag baint úsáide as postgres_onnmhaireoir le haghaidh Prometheus. Leanúint leis an gcomhad thuas Freagra leabhar súgartha.

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

Ar mhaithe le soiléireacht níos fearr, scríobhfaimid ainmneacha seirbhísí stáit seachtracha ag baint úsáide as Endpoints.

postgres-seirbhís.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 }}

Déantar Prometheus a chumrú chun sonraí postgres_exporter a fháil trí luachanna a chur in eagar san fhochairt.

luachanna.yaml

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

Chun na sonraí a fuarthas a shamhlú, suiteáil an Painéal cuí i
grafana agus foinsí sonraí a chumrú. Is féidir é seo a dhéanamh freisin trí luachanna i bhfo-chairt Grafana.

Cén chosúlacht atá air
Monatóireacht agus logáil seirbhísí seachtracha chuig braisle Kubernetes

Tá súil agam gur chabhraigh an t-alt gairid seo leat na príomhsmaointe atá taobh thiar den réiteach seo a thuiscint agus gur shábháil sé am duit agus tú ag bunú monatóireachta agus logáil seirbhísí seachtracha do Loki/Prometheus i mbraisle Kubernetes.

Foinse: will.com

Add a comment