logo
tt's Note
  • 运维
    • 数据库
    • linux
    • vpn
    • 日志
    • 中间件
    • 服务
    • 监控
    • shell
    • windows
    • 语言
    • 云服务
    • 其他
  • 开发
    • 工具
  • 软件
    • 浏览器
    • 多端
    • win
    • mac
    • 网站
  • 项目
    • 效率工具
    • 兴趣
  • 脚本
    • jenkins
    监控概览
    grafana
    prometheus-exporter
    prometheus
    zabbix
    阿里云账户余额
    上一页zabbix

    #阿里云账户余额

    使用aliyun-cli获取账户余额和当前时间,发送到prometheus的pushgateway,prometheus定时从pushgateway拉取,grafana显示

    #pushgateway

    #获取余额脚本

    #/bin/bash
    # 指定账户区域
    Region="cn-shanghai"
    # 指定公司账户默认muen
    #cn-hangzhou
    account="
    test
    "
    balance=""
    balancetime=""
    function getbalance(){
    	# 检测账号是否异常 确保实时数据准确
    	docker run --rm --name aliyun-cli \
        -e Region=${Region} \
        -e AccessKeyId=$1 \
        -e AccessKeySecret=$2 \
        muen/aliyun-cli:3.0.198 \
        bssopenapi QueryAccountBalance
    
        if [ $? == 0 ];then
        # 将金额赋值给变量
        balance=$(docker run --rm --name aliyun-cli \
        -e Region=${Region} \
        -e AccessKeyId=$1 \
        -e AccessKeySecret=$2 \
        registry.cn-hangzhou.aliyuncs.com/buyfakett/aliyun-cli \
        bssopenapi QueryAccountBalance|grep AvailableAmount|awk -F\" '{print $4}'|awk -F',' '{print $1$2$3$4$5}')
        else
    	balance=-1
      	fi
    }
    
    for account in ${account};
    do
    	if [ "${account}"x == "test"x ];then
    	        AccessKeyId=""
    	        AccessKeySecret=""
    	        getbalance ${AccessKeyId} ${AccessKeySecret}
    	        # 需要推送的内容 拼接成 key:value
    	        # 数据效果 AccountBalance{account="test阿里云账户余额", exported_instance="machine", exported_job="top", instance="aliyun-server-info", job="aliyun-server-info"} 138.12
    	        balance=$(echo "AccountBalance{account=\"${account}阿里云账户余额\"} $balance")
    	        balancetime=$(echo "AccountBalanceUpdateTime{account=\"${account}阿里云账户拉取时间\"} $(date +%s)")
    	fi
    cat <<EOF | curl --data-binary @- http://192.168.1.1:9091/metrics/job/balanceinfo/instance/${account}
    ${balance}
    ${balancetime}
    EOF
    done
    # 推送单条
    # var=$var$(echo "AccountBalance{account=\"${account}阿里云账户余额\"} $balance")
    # 向pushgateway推参数 需要在prometheus的yml中配置对应的模块
    #curl -X POST -H "Content-Type: text/plain" --data "$var
    #" http://192.168.1.1:9091/metrics/job/top/instance/machine

    #grafana