Giám sát postgres bên trong Openshift

Chúc một ngày tốt lành, cư dân của Habr!

Hôm nay tôi muốn cho bạn biết chúng tôi thực sự muốn giám sát postgres và một số thực thể khác bên trong cụm OpenShift như thế nào cũng như cách chúng tôi đã thực hiện điều đó.

Ở lối vào họ có:

  • Mở cửa
  • Quản lý
  • Prometheus


Để làm việc với một ứng dụng java, mọi thứ khá đơn giản và minh bạch, hay nói chính xác hơn là:

1) Thêm vào build.gradle

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

2) Chạy prometheus với cấu hình

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

3) Thêm màn hình vào Grafana

Mọi thứ khá đơn giản và tầm thường cho đến thời điểm giám sát các căn cứ nằm gần đó trong không gian tên của chúng tôi (vâng, điều này thật tệ, không ai làm điều này, nhưng những điều khác nhau lại xảy ra).

Làm thế nào nó hoạt động?

Ngoài nhóm có postgres và prometheus, chúng ta cần thêm một thực thể nữa - nhà xuất khẩu.

Nhà xuất khẩu theo khái niệm trừu tượng là một tác nhân thu thập số liệu từ một ứng dụng hoặc thậm chí là máy chủ. Đối với nhà xuất khẩu postgres, nó được viết bằng Go, nó hoạt động trên nguyên tắc chạy các tập lệnh SQL bên trong cơ sở dữ liệu và sau đó prometheus lấy kết quả thu được. Điều này cũng cho phép bạn mở rộng các số liệu đã thu thập bằng cách thêm số liệu của riêng bạn.

Hãy triển khai nó như thế này (ví dụ triển khai.yaml, không ràng buộc):


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

Nó cũng yêu cầu một dịch vụ và luồng hình ảnh

Sau khi triển khai, chúng tôi thực sự muốn mọi người gặp nhau.

Thêm phần sau vào cấu hình Prometheus:

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

Và sau đó mọi thứ đã thành công, tất cả những gì còn lại là thêm tất cả những thứ này vào grafana và tận hưởng thành quả.

Ngoài khả năng thêm truy vấn của riêng bạn, bạn có thể thay đổi cài đặt trong prometheus, thu thập nhiều số liệu được nhắm mục tiêu hơn.

Điều này đã được thực hiện theo cách tương tự cho:

  • Kafka
  • Elasticsearch
  • Mongo

PS Tất cả dữ liệu về tên, cổng và phần còn lại được lấy từ mạng và không chứa bất kỳ thông tin nào.

Liên kết hữu ích:
Danh sách các nhà xuất khẩu khác nhau

Nguồn: www.habr.com

Thêm một lời nhận xét