Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Prometheus API & Hướng dẫn Call API nhanh bằng Postman

    Prometheus API & Hướng dẫn Debug nhanh bằng Postman

    Chào mọi người,

    Trong quá trình vận hành hệ thống Monitoring, chắc hẳn anh em đã quá quen thuộc với việc viết PromQL trên Grafana hay giao diện web của Prometheus. Tuy nhiên, để thực sự làm chủ dữ liệu, xây dựng các tool automation, hay đơn giản là debug khi Grafana gặp lỗi, việc hiểu rõ Prometheus API là cực kỳ quan trọng.

    Hôm nay mình xin tổng hợp lại kiến thức về các nhóm API chính của Prometheus và hướng dẫn anh em cách gọi API chuẩn chỉnh (có Auth) thông qua Postman.

    1. Prometheus API là gì?
    Về cơ bản, Prometheus cung cấp một tập hợp các HTTP API endpoint chạy mặc định trên cổng 9090. Đây là cổng giao tiếp chính giúp chúng ta truy vấn (read) và quản lý (manage) dữ liệu metrics.

    Hầu hết các tương tác dữ liệu đều nằm ở đường dẫn: /api/v1/... 2. Các nhóm HTTP API quan trọng

    Để khai thác hiệu quả, chúng ta chia API thành các nhóm dựa trên mục đích sử dụng: A. HTTP Query API (Dùng nhiều nhất)

    Đây là nhóm API giúp lấy dữ liệu metrics ra ngoài.
    • /api/v1/query: Dùng cho Instant Query. Trả về giá trị của metric tại một thời điểm cụ thể (thời điểm hiện tại hoặc một timestamp chỉ định).
      • Ví dụ: Lấy trạng thái up của các target hiện tại.
    • /api/v1/query_range: Dùng cho Range Query. Trả về danh sách giá trị trong một khoảng thời gian (time series).
      • Ví dụ: Dữ liệu để vẽ biểu đồ CPU usage trong 1 giờ qua.
    • /api/v1/series: Liệt kê các time series khớp với label selector.
    • /api/v1/labels: Trả về danh sách tất cả các tên label đang có trong hệ thống.
    • /api/v1/label/<label_name>/values: Trả về tất cả các giá trị (value) của một label cụ thể.
    B. Metadata & Discovery
    Nhóm này giúp bạn khám phá xem hệ thống đang có những gì mà không cần query dữ liệu thô.
    • /api/v1/metadata: Xem thông tin mô tả (help text), kiểu dữ liệu (gauge, counter...) của metric.
      • Lợi ích: Giúp bạn biết hệ thống có những dimension nào để filter hoặc group by cho chính xác.
    C. Management API vs. Data API
    Anh em cần phân biệt rõ hai loại này:
    • Data API (như trên): Dùng để "nói chuyện" với metrics (query, search).
    • Management API: Dùng để thao tác với chính server Prometheus.
      • Ví dụ: /-/reload để nạp lại cấu hình mà không cần restart service, hoặc api/v1/admin/tsdb/snapshot để backup dữ liệu.

    3. Thực hành: Gọi Prometheus API bằng Postman (có Basic Auth)
    Trong môi trường Production, Prometheus thường không bao giờ để "trần trụi" (public unauthenticated). Chúng ta thường đặt nó sau một Reverse Proxy (Nginx, Traefik...) để thêm lớp bảo mật như Basic Auth hoặc TLS.

    Dưới đây là các bước để test API bằng Postman khi có bảo mật:

    Bước 1: Chuẩn bị URL và Query
    • Endpoint: http://your-prometheus-server:9090/api/v1/query
    • Query String: Chúng ta sẽ đưa câu lệnh PromQL vào tham số query.
      • Ví dụ check server sống hay chết: ?query=up
      • Ví dụ tính tổng request: ?query=sum(rate(http_requests_total[5m])
    Bước 2: Cấu hình trong Postman
    1. Tạo một Request mới, chọn Method là GET.
    2. Nhập URL: http://your-prometheus-server:9090/a...query?query=up
    3. Chuyển sang tab Authorization.
    4. Tại mục Type, chọn Basic Auth.
    5. Điền UsernamePassword (Thông tin này do cấu hình Nginx/Reverse Proxy quy định).
    Click image for larger version

Name:	Screenshot 2025-12-12 at 19.15.44.png
Views:	22
Size:	29.1 KB
ID:	437905



    Bước 3: Gửi và kiểm tra kết quả Nhấn Send. Nếu xác thực thành công, Prometheus sẽ trả về JSON có dạng:​

    HTML Code:
    JSON
    {
    "status": "success",
    "data": {
    "resultType": "vector",
    "result": [
    {
    "metric": {
    "__name__": "up",
    "job": "prometheus",
    "instance": "localhost:9090"
    },
    "value": [1715000000.781, "1"]
    }
    ]
    }
    }

    4. Một số lưu ý quan trọng (Best Practices)
    1. Bảo mật là số 1: Không bao giờ expose cổng 9090 ra internet mà không có lớp bảo vệ. Hãy sử dụng Nginx, OAuth2 Proxy kết hợp với TLS/SSL.
    2. Bearer Token: Nếu hệ thống của bạn dùng Token thay vì Basic Auth (ví dụ tích hợp với Service Account của K8s), trong Postman hãy chọn Type = Bearer Token và paste token vào.
    3. Ứng dụng thực tế: Việc nắm vững API này giúp bạn:
      • Viết script Python/Go để tự động scale hệ thống dựa trên metric.
      • Tích hợp vào CI/CD pipeline để check hiệu năng sau khi deploy (Smoke test).
      • Xây dựng Custom Dashboard cho các nhu cầu đặc thù mà Grafana chưa đáp ứng được.


    Tags: prometheus devops api monitoring postman #Tutorial
Working...
X