Monitoring and Observability Tools
📚 Giới Thiệu
Giám sát và quan sát là rất quan trọng để duy trì sức khỏe, hiệu suất và độ tin cậy của bất kỳ hệ thống cơ sở dữ liệu nào. Trong khi giám sát tập trung vào việc thu thập và phân tích các số liệu được xác định trước (ví dụ: sử dụng CPU, QPS), thì quan sát sâu hơn, cung cấp khả năng đặt các câu hỏi tùy ý về hành vi của hệ thống mà không cần xác định trước các số liệu đó.
prometheus Prometheus
Prometheus là một bộ công cụ giám sát và cảnh báo hệ thống mã nguồn mở ban đầu được xây dựng tại SoundCloud. Nó đã trở thành một tiêu chuẩn trên thực tế để giám sát các môi trường dựa trên đám mây và container.
Kiến trúc
- Máy chủ Prometheus: Thành phần cốt lõi thu thập các số liệu từ các mục tiêu được định cấu hình theo các khoảng thời gian đã đặt, đánh giá các quy tắc, hiển thị kết quả và có thể kích hoạt cảnh báo nếu một số điều kiện được quan sát thấy là đúng.
- Exporter: Các ứng dụng trợ giúp hiển thị các số liệu từ các hệ thống của bên thứ ba dưới dạng số liệu Prometheus. Đối với cơ sở dữ liệu, có các trình xuất khẩu cho hầu hết mọi công cụ phổ biến (ví dụ:
postgres_exporter,mysqld_exporter,mongodb_exporter). - Alertmanager: Xử lý các cảnh báo được gửi bởi máy chủ Prometheus. Nó đảm nhiệm việc khử trùng lặp, nhóm và định tuyến các cảnh báo đến đúng người nhận.
Tại sao sử dụng Prometheus để giám sát cơ sở dữ liệu?
- Mô hình dữ liệu đa chiều: Dữ liệu chuỗi thời gian được xác định bằng tên số liệu và các cặp khóa-giá trị (nhãn), cho phép truy vấn linh hoạt và mạnh mẽ.
- PromQL: Một ngôn ngữ truy vấn mạnh mẽ và linh hoạt cho phép bạn chọn và tổng hợp dữ liệu chuỗi thời gian trong thời gian thực.
- Mô hình kéo (Pull Model): Prometheus thu thập các số liệu từ các điểm cuối HTTP, giúp đơn giản hóa việc cấu hình và khám phá dịch vụ.
- Tích hợp rộng rãi: Một hệ sinh thái lớn gồm các trình xuất khẩu và tích hợp.
Ví dụ: Truy vấn PromQL
# Tính toán tỷ lệ truy vấn chậm trên mỗi phiên bản trong 5 phút qua
rate(mysql_global_status_slow_queries[5m])
# Dự đoán dung lượng đĩa sẽ đầy trong 24 giờ tới
predict_linear(node_filesystem_free_bytes{mountpoint="/var/lib/mysql"}[1h], 24 * 3600) < 0
# 5 truy vấn PostgreSQL hàng đầu theo tổng thời gian thực thi
topk(5, sum(rate(pg_stat_statements_total_time_seconds[5m])) by (queryid))
grafana Grafana
Grafana là một nền tảng phân tích và trực quan hóa tương tác, mã nguồn mở. Nó cho phép bạn truy vấn, trực quan hóa, cảnh báo và khám phá các số liệu của mình bất kể chúng được lưu trữ ở đâu. Grafana thường được sử dụng cùng với Prometheus.
Tại sao sử dụng Grafana?
- Trực quan hóa mạnh mẽ: Cung cấp một loạt các tùy chọn trực quan hóa, từ biểu đồ đồ thị đến bản đồ nhiệt, bảng và đồ thị tổ ong.
- Nguồn dữ liệu linh hoạt: Hỗ trợ hàng chục nguồn dữ liệu, bao gồm Prometheus, InfluxDB, Elasticsearch, MySQL, PostgreSQL, và nhiều dịch vụ đám mây.
- Bảng điều khiển động: Tạo các bảng điều khiển động và có thể tái sử dụng với các biến mẫu.
- Cảnh báo: Cho phép bạn xác định các cảnh báo trực quan trong bảng điều khiển của mình và nhận thông báo qua Slack, PagerDuty, email, v.v.
- Cộng đồng lớn: Một cộng đồng lớn tạo và chia sẻ các bảng điều khiển được xây dựng sẵn cho các công nghệ phổ biến.
Ví dụ: Bảng điều khiển giám sát cơ sở dữ liệu
Một bảng điều khiển Grafana điển hình để giám sát cơ sở dữ liệu có thể bao gồm các bảng sau:
- Tổng quan về sức khỏe: Trạng thái hoạt động/ngừng hoạt động, phiên bản, thời gian hoạt động.
- Hiệu suất truy vấn: Tỷ lệ truy vấn mỗi giây (QPS), độ trễ, truy vấn chậm.
- Sử dụng tài nguyên: Sử dụng CPU, sử dụng bộ nhớ, sử dụng đĩa.
- Số liệu cụ thể của công cụ:
- PostgreSQL: Tỷ lệ truy cập bộ đệm, xung đột khóa, độ trễ sao chép.
- MySQL: Hiệu quả của bộ đệm InnoDB, các luồng được kết nối, các khóa hàng đang chờ.
- MongoDB: Hoạt động của bộ đệm, hàng đợi, kết nối đang mở.

Thiết lập một ngăn xếp giám sát điển hình
- Triển khai Exporter: Cài đặt trình xuất khẩu thích hợp (ví dụ:
postgres_exporter) trên một máy chủ có thể kết nối với cơ sở dữ liệu của bạn. - Định cấu hình Prometheus: Thêm một công việc thu thập vào tệp
prometheus.ymlcủa bạn để Prometheus bắt đầu thu thập các số liệu từ trình xuất khẩu. - Định cấu hình Grafana: Thêm Prometheus làm nguồn dữ liệu trong Grafana.
- Tạo hoặc nhập bảng điều khiển: Xây dựng bảng điều khiển của riêng bạn hoặc nhập một bảng điều khiển được xây dựng sẵn từ thư viện cộng đồng Grafana để bắt đầu trực quan hóa các số liệu cơ sở dữ liệu của bạn.