Παρακολούθηση postgres μέσα στο Openshift

Καλημέρα, κάτοικοι του Χαμπρ!

Σήμερα θέλω να σας πω πώς πραγματικά θέλαμε να παρακολουθούμε το postgres και μερικές άλλες οντότητες μέσα στο σύμπλεγμα OpenShift και πώς το κάναμε.

Στην είσοδο είχαν:

  • Οπίσθια μετατόπιση
  • Πηδάλιο
  • Προμηθέας


Για να δουλέψετε με μια εφαρμογή java, όλα ήταν αρκετά απλά και διαφανή ή για να είμαστε πιο ακριβείς:

1) Προσθήκη στο build.gradle

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

2) Εκτελέστε το prometheus με διαμόρφωση

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

3) Προσθήκη οθόνης στο Grafana

Όλα ήταν αρκετά απλά και πεζά μέχρι που ήρθε η στιγμή να παρακολουθήσουμε τις βάσεις που βρίσκονται κοντά στον χώρο ονομάτων μας (ναι, αυτό είναι κακό, κανείς δεν το κάνει αυτό, αλλά συμβαίνουν διαφορετικά πράγματα).

Πώς λειτουργεί;

Εκτός από το pod με το postgres και τον ίδιο τον prometheus, χρειαζόμαστε έναν ακόμη φορέα - εξαγωγέα.

Ένας εξαγωγέας σε μια αφηρημένη έννοια είναι ένας πράκτορας που συλλέγει μετρήσεις από μια εφαρμογή ή ακόμα και έναν διακομιστή. Για τον εξαγωγέα postgres, είναι γραμμένο στο Go, λειτουργεί με βάση την αρχή της εκτέλεσης σεναρίων SQL μέσα στη βάση δεδομένων και στη συνέχεια ο prometheus παίρνει τα αποτελέσματα που λαμβάνονται. Αυτό σας επιτρέπει επίσης να επεκτείνετε τις μετρήσεις που συλλέγετε προσθέτοντας τις δικές σας.

Ας το αναπτύξουμε ως εξής (παράδειγμα deployment.yaml, μη δεσμευτικό):


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

Χρειαζόταν επίσης υπηρεσία και ροή εικόνας

Μετά την ανάπτυξη, θέλουμε πραγματικά να βλέπονται όλοι.

Προσθέστε το ακόλουθο κομμάτι στη διαμόρφωση Prometheus:

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

Και μετά όλα λειτούργησαν, το μόνο που μένει είναι να προσθέσετε όλα αυτά τα πράγματα στη γραφάνα και να απολαύσετε το αποτέλεσμα.

Εκτός από τη δυνατότητα προσθήκης των δικών σας ερωτημάτων, μπορείτε να αλλάξετε τις ρυθμίσεις στο prometheus, συλλέγοντας πιο στοχευμένες μετρήσεις.

Αυτό έγινε με παρόμοιο τρόπο για:

  • Κάφκα
  • Ελαστική αναζήτηση
  • Μόνγκο

Υ.Γ Όλα τα δεδομένα για ονόματα, λιμάνια και τα υπόλοιπα λαμβάνονται από τον αέρα και δεν περιέχουν καμία πληροφορία.

Χρήσιμοι σύνδεσμοι:
Κατάλογος διάφορων εξαγωγέων

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο