Monitro postgres y tu mewn i Openshift

Diwrnod da, drigolion Habr!

Heddiw, rwyf am ddweud wrthych sut yr oeddem wir eisiau monitro postgres a chwpl o endidau eraill y tu mewn i glwstwr OpenShift a sut y gwnaethom hynny.

Wrth y fynedfa roedd ganddyn nhw:

  • Openshift
  • Helm
  • Prometheus


I weithio gyda chymhwysiad java, roedd popeth yn eithaf syml a thryloyw, neu i fod yn fwy manwl gywir:

1) Ychwanegu at build.gradle

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

2) Rhedeg prometheus gyda chyfluniad

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

3) Ychwanegu arddangosfa i Grafana

Roedd popeth yn eithaf syml a rhyddiaith nes i'r foment ddod i fonitro'r seiliau sydd wedi'u lleoli gerllaw yn ein gofod enwau (ie, mae hyn yn ddrwg, does neb yn gwneud hyn, ond mae pethau gwahanol yn digwydd).

Sut mae'n gweithio?

Yn ogystal Γ’'r pod gyda postgres a prometheus ei hun, mae angen un endid arall - allforiwr.

Mae allforiwr mewn cysyniad haniaethol yn asiant sy'n casglu metrigau o raglen neu hyd yn oed gweinydd. Ar gyfer allforiwr postgres, mae wedi'i ysgrifennu yn Go, mae'n gweithio ar yr egwyddor o redeg sgriptiau SQL y tu mewn i'r gronfa ddata ac yna mae prometheus yn cymryd y canlyniadau a gafwyd. Mae hyn hefyd yn caniatΓ‘u ichi ehangu'r metrigau a gasglwyd trwy ychwanegu eich un chi.

Gadewch i ni ei ddefnyddio fel hyn (enghraifft deployment.yaml, heb fod yn rhwymol):


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

Roedd hefyd angen ffrwd gwasanaeth a delwedd

Ar Γ΄l lleoli, rydyn ni wir eisiau i bawb weld ei gilydd.

Ychwanegwch y darn canlynol at y ffurfwedd Prometheus:

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

Ac yna fe weithiodd popeth, y cyfan sydd ar Γ΄l yw ychwanegu'r holl bethau hyn at y grafana a mwynhau'r canlyniad.

Yn ogystal Γ’'r gallu i ychwanegu eich ymholiadau eich hun, gallwch newid y gosodiadau yn prometheus, gan gasglu mwy o fetrigau wedi'u targedu.

Gwnaethpwyd hyn mewn ffordd debyg ar gyfer:

  • Kafka
  • Elastig
  • Mongo

PS Cymerir yr holl ddata ar enwau, porthladdoedd a'r gweddill o'r awyr ac nid yw'n cynnwys unrhyw wybodaeth.

Dolenni defnyddiol:
Rhestr o allforwyr amrywiol

Ffynhonnell: hab.com

Ychwanegu sylw