0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Hướng dẫn Vẽ Biểu Đồ Lịch Sử Giá USDT/VND Trên Binance Bằng Prometheus Exporter Và Grafana

Đăng vào 1 tuần trước

• 4 phút đọc

Giới Thiệu

Trong thời đại tiền điện tử phát triển mạnh mẽ như hiện nay, việc theo dõi biến động giá của các đồng tiền kỹ thuật số là vô cùng cần thiết. Gần đây, mình rất quan tâm đến việc theo dõi giá của đồng USDT trên sàn giao dịch Binance và đặc biệt là tỷ giá của nó so với VNĐ. Tuy nhiên, sau khi tìm kiếm trên nhiều trang web, mình nhận thấy không có trang nào cung cấp thông tin đúng và đủ theo nhu cầu của mình:

  • Theo dõi tỷ giá bán với giao dịch tối thiểu từ 10.000.000 VNĐ
  • Loại bỏ những giá quảng cáo không chính xác thường xuất hiện ở đầu Google

Vì vậy, mình đã quyết định tự xây dựng hệ thống để lưu trữ và theo dõi lịch sử tỷ giá cặp USDT/VND này. Trong bài viết này, mình sẽ chia sẻ quá trình xây dựng hệ thống này, bao gồm các thành phần chính là:

  • Scraper (Python): Dùng để thu thập dữ liệu trực tiếp từ trang Binance.
  • Prometheus: Hệ thống lưu trữ dữ liệu lịch sử tỷ giá trong thời gian dài.
  • Grafana: Công cụ phổ biến để trực quan hóa dữ liệu qua biểu đồ.

Phần 1: Scraper (Python)

Để bắt đầu, mình sẽ phát triển một ứng dụng web nhỏ trong Python để cào dữ liệu tỷ giá từ trang P2P của Binance. Mỗi 10 phút một lần, ứng dụng này sẽ lấy ba mức giá gần nhất và tính trung bình, giúp giảm thiểu sự chênh lệch với giá thực tế. Dưới đây là mã nguồn cho ứng dụng:

python Copy
from flask import Flask, jsonify
import requests
import json
import threading

app = Flask(__name__)

# Khởi tạo biến global
usdtvnd = 0

def update_usdt_vnd():
    global usdtvnd
    headers = {
        'Accept': '*/*',
        'Content-Type': 'application/json',
        'User-Agent': 'Mozilla/5.0'
    }

    data = {
        "fiat": "VND",
        "page": 1,
        "rows": 3,
        "tradeType": "SELL",
        "asset": "USDT",
        "countries": ["VN"],
        "transAmount": 10000000
    }

    url = 'https://p2p.binance.com/bapi/c2c/v2/friendly/c2c/adv/search'

    try:
        response = requests.post(url, headers=headers, json=data)
        response.raise_for_status()

        # Phân tích dữ liệu JSON
        data = json.loads(response.text)
        prices = [float(item["adv"]["price"]) for item in data["data"]]
        usdtvnd = round(sum(prices) / len(prices), 0)

    except requests.exceptions.RequestException as e:
        print(f"Error fetching data: {e}")

    threading.Timer(600, update_usdt_vnd).start()

# Khởi động đầu tiên
update_usdt_vnd()

@app.route('/')
def get_average_price():
    return jsonify({'USDT/VND': int(usdtvnd)})

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True)

Truy cập vào địa chỉ http://localhost:5000 bạn sẽ nhận được giá trị hiện tại dạng {'USDT/VND': 25100}.

Tiếp theo, chúng ta sẽ tích hợp Prometheus để có thể lưu trữ dữ liệu này. Sử dụng thư viện prometheus_client, chúng ta sẽ sửa đổi mã nguồn như sau:

python Copy
from prometheus_client import start_http_server, Gauge, generate_latest

# Khởi tạo metrics cho Prometheus
usdt_vnd_gauge = Gauge('usdt_vnd', 'Tỷ giá USDT sang VND')

def update_usdt_vnd():
    global usdtvnd
    # (Giữ nguyên logic cào dữ liệu)
    usdt_vnd_gauge.set(usdtvnd)  # Cập nhật giá trị cho metric

Sau khi chạy lại mã nguồn, bạn có thể truy cập vào http://localhost:5000/metrics để thấy dữ liệu metric đã được hiển thị thành công.

Phần 2: Thiết lập Prometheus

Tiếp theo, chúng ta sẽ thiết lập Prometheus để thu thập các metric mà chúng ta vừa tạo. Mở Terminal và tạo một file prometheus.yml với nội dung như sau:

yaml Copy
global:
  scrape_interval: 300s  # Tần suất quét

scrape_configs:
  - job_name: 'usdt-metrics'
    static_configs:
      - targets: ['localhost:5000']

Khởi động Prometheus thông qua Docker với lệnh sau:

bash Copy
docker run -d --name prometheus -p 9090:9090 -v ./prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

Kiểm tra bằng cách truy cập http://localhost:9090/ và vào mục Status => Targets để thấy rằng service đang hoạt động tốt.

Phần 3: Thiết lập Grafana

Cuối cùng, chúng ta sẽ sử dụng Grafana để trực quan hóa dữ liệu mà Prometheus đã thu thập. Khởi động Grafana với lệnh:

bash Copy
docker run -d --name grafana -p 3000:3000 grafana/grafana

Truy cập vào Grafana và thêm một Data Source cho Prometheus. Sau khi cấu hình thành công, bạn có thể tạo một Dashboard mới để vẽ biểu đồ cho metric usdt_vnd.

Kết Luận

Bài viết trên đây đã hướng dẫn bạn cách xây dựng một hệ thống đơn giản để theo dõi tỷ giá USDT/VND bằng Prometheus và Grafana. Với hệ thống này, bạn có thể dễ dàng theo dõi biến động tỷ giá và có được thông tin cần thiết cho đầu tư của mình. Hy vọng bài viết đã mang lại cho bạn nhiều thông tin hữu ích. Nếu bạn thấy bài viết hay, đừng quên nhấn Upvote và theo dõi để nhận thêm nhiều bài viết khác nhé! Chúc bạn một ngày tốt lành!

Liên Hệ Hỗ Trợ

Nếu bạn cần hỗ trợ về chuyên môn hay hệ thống DevOps, hãy liên hệ với mình tại hoangviet.io.vn.

source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào