Openshift daxilində postgres monitorinqi

Gününüz xeyir, Habr sakinləri!

Bu gün sizə OpenShift klasterində postgres və bir neçə başqa obyekti necə izləmək istədiyimizi və bunu necə etdiyimizi söyləmək istəyirəm.

Girişdə onlar var idi:

  • Açıq sürüşmə
  • sükan
  • Prometey


Java proqramı ilə işləmək üçün hər şey olduqca sadə və şəffaf idi, daha dəqiq desək:

1) build.gradle-ə əlavə edilir

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

2) Prometeyi konfiqurasiya ilə işə salın

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

3) Grafanaya ekran əlavə etmək

Ad məkanımızda yaxınlıqda yerləşən bazaları izləmək üçün vaxt gələnə qədər hər şey olduqca sadə və prozaik idi (bəli, bu pisdir, bunu heç kim etmir, amma fərqli şeylər olur).

Bu necə işləyir?

Postgres və prometey ilə poddan əlavə, bizə daha bir varlıq lazımdır - ixracatçı.

Mücərrəd bir konsepsiyada ixracatçı proqramdan və ya hətta serverdən ölçüləri toplayan agentdir. Postgres ixracatçısı üçün Go-da yazılmışdır, verilənlər bazası daxilində SQL skriptlərini işlətmək prinsipi ilə işləyir və sonra prometheus əldə edilən nəticələri götürür. Bu, həmçinin öz ölçülərinizi əlavə etməklə toplanmış göstəriciləri genişləndirməyə imkan verir.

Gəlin bunu belə yerləşdirək (misal deployment.yaml, məcburi deyil):


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

Bu, həmçinin xidmət və görüntü axını tələb edirdi

Yerləşdirmədən sonra biz həqiqətən hamının bir-birini görməsini istəyirik.

Prometheus konfiqurasiyasına aşağıdakı parçanı əlavə edin:

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

Və sonra hər şey işlədi, qalan şey bütün bunları qrafana əlavə etmək və nəticədən həzz almaqdır.

Öz sorğularınızı əlavə etmək qabiliyyətinə əlavə olaraq, daha çox hədəf göstəricilər toplayaraq prometheus-da parametrləri dəyişə bilərsiniz.

Bu, oxşar şəkildə edildi:

  • Kafka
  • Elasticsearch
  • Mongo

PS Adlar, limanlar və qalanlar haqqında bütün məlumatlar havadan götürülür və heç bir məlumat ehtiva etmir.

Faydalı linklər:
Müxtəlif ixracatçıların siyahısı

Mənbə: www.habr.com

Добавить комментарий