Openshift içindeki postgres'leri izleme

İyi günler Habr sakinleri!

Bugün size postgres'i ve OpenShift kümesi içindeki diğer birkaç varlığı gerçekten nasıl izlemek istediğimizi ve bunu nasıl yaptığımızı anlatmak istiyorum.

Girişte şunlar vardı:

  • Açık vardiya
  • Dümen
  • Prometheus


Bir Java uygulamasıyla çalışmak için her şey oldukça basit ve şeffaftı, daha doğrusu:

1) build.gradle'a ekleme

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

2) Prometheus'u konfigürasyonla çalıştırın

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

3) Grafana'ya ekran ekleme

Ad alanımızda yakınlarda bulunan üsleri izleme anı gelene kadar her şey oldukça basit ve sıradandı (evet, bu kötü, kimse bunu yapmıyor ama farklı şeyler oluyor).

O nasıl çalışır?

Postgres ve prometheus'un bulunduğu bölmeye ek olarak, bir ihracatçıya daha ihtiyacımız var.

Soyut bir kavramda ihracatçı, bir uygulamadan veya hatta bir sunucudan ölçümler toplayan bir aracıdır. Postgres ihracatçısı için Go'da yazılmıştır, veritabanı içinde SQL komut dosyalarını çalıştırma prensibiyle çalışır ve ardından prometheus elde edilen sonuçları alır. Bu aynı zamanda kendi ölçümlerinizi ekleyerek toplanan ölçümleri genişletmenize de olanak tanır.

Bunu şu şekilde konuşlandıralım (örnek dağıtım.yaml, bağlayıcı olmayan):


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

Aynı zamanda bir hizmet ve görüntü akışı da gerektiriyordu

Dağıtımdan sonra gerçekten herkesin birbirini görmesini istiyoruz.

Prometheus yapılandırmasına aşağıdaki parçayı ekleyin:

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

Ve sonra her şey işe yaradı, geriye kalan tek şey tüm bunları grafanaya eklemek ve sonucun tadını çıkarmak.

Kendi sorgularınızı ekleyebilme olanağının yanı sıra, daha hedefli ölçümler toplayarak prometheus'taki ayarları değiştirebilirsiniz.

Bu, aşağıdakiler için benzer şekilde yapıldı:

  • Kafka
  • Elasticsearch
  • Mongo

PS İsimler, portlar ve geri kalanıyla ilgili tüm veriler havadan alınmıştır ve herhangi bir bilgi içermemektedir.

Yararlı linkler:
Çeşitli ihracatçıların listesi

Kaynak: habr.com

Yorum ekle