通过http请求minio获取 bucket 可用容量和已用容量(Java)

思路

通过请求MinIO的[/minio/v2/metrics/bucket]接口获取metrics进行分析,提取usage和quota。

步骤

1.生成一个token用于请求MinIO

使用hutooljwt工具类来生成

//jwt签名 要用hs512算法
final JWTSigner signer = JWTSignerUtil.hs512(OssConfiguration.secretKey.getBytes());
//jwt载体
        Map<String, Object> payload = new HashMap<String, Object>() {
            private static final long serialVersionUID = 1L;
            {
                put("sub", OssConfiguration.accessKey);
                put("exp", System.currentTimeMillis() + 1000 * 60);
                put("iss", "prometheus");
            }
        };
//生成请求minio的token
String token = JWTUtil.createToken(payload, signer); 
2.通过Get请求获取metrics

使用了hutoolHttpRequest工具类来请求

String url = OssConfiguration.endpoint + "/minio/v2/metrics/bucket";
//请求minio
String result = HttpRequest.get(url)
              	.header(Header.USER_AGENT, "ANY")
                .header("Authorization", "Bearer " + token)
                .header("Accept", "*/*")
                .header("Host", "oss.你的MinIO服务器.com")
                .header("Connection", "keep-alive")
                .execute().body();
3.解析metric
String usagePatternString = "minio_bucket_usage_total_bytes\\{bucket=\"你的bucket名称\",server=\"[^\"]+\"\\}\\s+(\\d+\\.\\d+e[+-]\\d+)";
        String quotaPatternString = "minio_bucket_quota_total_bytes\\{bucket=\"你的bucket名称\",server=\"[^\"]+\"\\}\\s+(\\d+\\.\\d+e[+-]\\d+)";
        Pattern usagePattern = Pattern.compile(usagePatternString);
        Pattern quotaPattern = Pattern.compile(quotaPatternString);
        Matcher usageMatcher = usagePattern.matcher(result);
        Matcher quotaMatcher = quotaPattern.matcher(result);
        double usageTotalBytes = 0.0;
        double quotaTotalBytes = 0.0;
        if (usageMatcher.find()) {
            usageTotalBytes = Double.parseDouble(usageMatcher.group(1));
        }
        if (quotaMatcher.find()) {
            quotaTotalBytes = Double.parseDouble(quotaMatcher.group(1));
        }
//        System.out.println("Bucket usage total bytes: " + usageTotalBytes);
//        System.out.println("Bucket quota total bytes: " + quotaTotalBytes);

这样就得到了可用容量和已用容量

实际请求参考
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.get("https://oss.xxx.com/minio/v2/metrics/bucket")
   .header("User-Agent", "xxx/1.0.0 (https://xxx.com)")
   .header("Authorization", "Bearer eyxxx")
   .header("Accept", "*/*")
   .header("Host", "oss.xxx.com")
   .header("Connection", "keep-alive")
   .asString();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值