如何通过API获取SeaweedFS Docker实例的存储空间信息?
SeaweedFS 获取存储统计的API方案
SeaweedFS提供了直接的API接口获取存储使用数据,无需遍历文件,完全满足你的需求:
1. Filer 全局统计接口
Filer节点的/stats端点会返回集群整体的存储统计(前提是Filer已配置跟踪所有Volume Server),请求无需额外认证(除非你给Filer加了权限控制)。
Python示例代码
import requests import math # 替换为你的Filer地址和端口 filer_host = "your-filer-ip" filer_port = 8888 # 请求统计数据 resp = requests.get(f"http://{filer_host}:{filer_port}/stats") stats = resp.json() # 解析字节数并转换为GB(向上取整) total_size = stats.get("TotalVolumeSize", 0) used_size = stats.get("UsedVolumeSize", 0) free_size = total_size - used_size total_gb = math.ceil(total_size / (1024**3)) used_gb = math.ceil(used_size / (1024**3)) free_gb = math.ceil(free_size / (1024**3)) print(f"总存储: {total_gb} GB") print(f"已用存储: {used_gb} GB") print(f"空闲存储: {free_gb} GB")
2. Volume Server 单节点统计接口
如果需要单独获取某个Volume Server的磁盘使用情况,可以访问该节点的/status端点,返回的JSON中包含磁盘的总容量、已用、空闲数据。
示例请求与解析
import requests import math # 替换为你的Volume Server地址和端口 volume_host = "your-volume-server-ip" volume_port = 8080 resp = requests.get(f"http://{volume_host}:{volume_port}/status") status = resp.json() disk_stats = status.get("Disk", {}) total_size = disk_stats.get("Total", 0) used_size = disk_stats.get("Used", 0) free_size = disk_stats.get("Free", 0) total_gb = math.ceil(total_size / (1024**3)) used_gb = math.ceil(used_size / (1024**3)) free_gb = math.ceil(free_size / (1024**3))
注意事项
- 集群环境下,若要获取整体存储,优先用Filer的
/stats;如果需要分节点统计,遍历所有Volume Server的/status接口后汇总即可。 - 默认端口:Filer为8888,Volume Server为8080,如果你修改过配置,需要替换为对应端口。
- 若Filer启用了认证,需要在请求头中携带对应的认证信息(比如JWT Token)。
内容的提问来源于stack exchange,提问作者Son Goku ssj4
相关产品推荐
相关产品推荐

