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:
Nguồn: www.habr.com