Python通过API获取火山引擎中余额并用grafana展示

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from flask import Flask, jsonify
from volcenginesdkcore import Configuration
from volcenginesdkcore.rest import ApiException
from volcenginesdkbilling import BILLINGApi, QueryBalanceAcctRequest

app = Flask(__name__)

# ===== 请替换为你的真实 AK/SK(建议用环境变量或配置文件管理) =====
ACCESS_KEY = "xxxxx"
SECRET_KEY = "xxxxx"
REGION = "cn-beijing"
# ==================================================================

# 初始化 SDK 配置
config = Configuration()
config.ak = ACCESS_KEY
config.sk = SECRET_KEY
config.region = REGION
Configuration.set_default(config)

@app.route("/balance", methods=["GET"])
def get_available_balance():
    api_instance = BILLINGApi()
    request = QueryBalanceAcctRequest()

    try:
        response = api_instance.query_balance_acct(request)
        data = response.to_dict()
        # 强制转换为 float,便于 Grafana 识别为数值
        available_balance = float(data.get("available_balance", "0"))
        return jsonify({
            "available_balance": available_balance
        })
    except ApiException as e:
        return jsonify({
            "error": "API Error",
            "message": str(e)
        }), 500

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5001)

用supervisor启动管理python脚本:

cat   /etc/supervisord.d/coze_yue_5001.ini 
[program:coze_yue_5001]
command= /usr/local/bin/python3.9 /opt/python/coze/coze_yue_5001.py
directory=/opt/python/coze
autostart=true
autorestart=true
stderr_logfile=/var/log/supervisor/coze_yue_5001.err.log
stdout_logfile=/var/log/supervisor/coze_yue_5001.out.log
user=root

重新加载supervisor:

sudo supervisorctl reload

CentOS、RedHat下Supervisor安装与使用

启动后验证服务接口能否获取数据:

curl    127.0.0.1:5001/balance
{"available_balance":2927.12}

在grafana中实现数据可视化:

Red Hat、CentOS下Grafana安装最新版本详细教程