Monitorado de postgresoj ene de Openshift

Bonan tagon, loĝantoj de Habr!

Hodiaŭ mi volas rakonti al vi, kiel ni vere volis monitori postgres kaj kelkajn aliajn entojn en la OpenShift-grupo kaj kiel ni faris ĝin.

Ĉe la enirejo ili havis:

  • Malferma deĵoro
  • Kasko
  • Prometeo


Por labori kun java aplikaĵo, ĉio estis sufiĉe simpla kaj travidebla, aŭ por esti pli preciza:

1) Aldonante al build.gradle

 implementation "io.micrometer:micrometer-registry-prometheus"

2) Rulu prometheus kun agordo

 - job_name: 'job-name'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    kubernetes_sd_configs:
    - role: pod
      namespaces:
        names: 
          - 'name'

3) Aldonante ekranon al Grafana

Ĉio estis sufiĉe simpla kaj proza ​​ĝis venis la momento por kontroli la bazojn, kiuj troviĝas proksime en nia nomspaco (jes, tio estas malbona, neniu faras tion, sed malsamaj aferoj okazas).

Kiel ĝi funkcias?

Krom la pod kun postgres kaj prometheus mem, ni bezonas unu plian enton - eksportilon.

Eksportanto en abstrakta koncepto estas agento, kiu kolektas metrikojn de aplikaĵo aŭ eĉ servilo. Por postgres-eksportisto, ĝi estas skribita en Go, ĝi funkcias laŭ la principo ruli SQL-skriptojn ene de la datumbazo kaj tiam prometheus prenas la rezultojn akiritajn. Ĉi tio ankaŭ permesas vin pligrandigi la kolektitajn metrikojn aldonante viajn proprajn.

Ni disfaldu ĝin tiel (ekzemplo deployment.yaml, ne-liga):


---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: postgres-exporter
  labels:
    app: {{ .Values.name }}
    monitoring: prometheus
spec:
  serviceName: {{ .Values.name }}
  replicas: 1
  revisionHistoryLimit: 5
  template:
    metadata:
      labels:
        app: postgres-exporter
        monitoring: prometheus
    spec:
      containers:
      - env:
        - name: DATA_SOURCE_URI
          value: postgresdb:5432/pstgr?sslmode=disable
        - name: DATA_SOURCE_USER
          value: postgres
        - name: DATA_SOURCE_PASS
          value: postgres
        resources:
          limits:
            cpu: 100m
            memory: 50Mi
          requests:
            cpu: 100m
            memory: 50Mi
        livenessProbe:
          tcpSocket:
            port: metrics
          initialDelaySeconds: 30
          periodSeconds: 30
        readinessProbe:
          tcpSocket:
            port: metrics
          initialDelaySeconds: 10
          periodSeconds: 30
        image: exporter
        name: postgres-exporter
        ports:
        - containerPort: 9187
          name: metrics

Ĝi ankaŭ postulis servon kaj bildfluon

Post deplojo, ni vere volas, ke ĉiuj vidu unu la alian.

Aldonu la sekvan pecon al la agordo de Prometheus:

  - job_name: 'postgres_exporter'
    metrics_path: '/metrics'
    scrape_interval: 5s
    dns_sd_configs:
    - names:
      - 'postgres-exporter'
      type: 'A'
      port: 9187

Kaj tiam ĉio funkciis, restas nur aldoni ĉiujn ĉi aĵojn al la grafana kaj ĝui la rezulton.

Krom la kapablo aldoni viajn proprajn demandojn, vi povas ŝanĝi la agordojn en prometheus, kolektante pli celitajn metrikojn.

Ĉi tio estis farita en simila maniero por:

  • Kafka
  • Elasta esploro
  • Mongo

PS Ĉiuj datumoj pri nomoj, havenoj kaj la resto estas prenitaj de la aero kaj ne enhavas ajnan informon.

Utilaj ligoj:
Listo de diversaj eksportistoj

fonto: www.habr.com

Aldoni komenton