如何用PowerShell解析Prometheus prom格式并转为PowerShell对象?
PowerShell解析Prometheus prom格式响应的简便方法
我一直在寻找如何使用PowerShell解析Prometheus的prom格式响应,将已发布的Windows系统性能指标转换为PowerShell对象。
示例prom格式内容
# HELP CPU_Total Total CPU load in percent of all processors combined. # TYPE CPU_Total gauge CPU_Total{Instance="_total"} 1.29915 # HELP Disk_Avg_Bytes_Read Average number of bytes transfered from the disk during read operations. # TYPE Disk_Avg_Bytes_Read gauge Disk_Avg_Bytes_Read{Instance="harddiskvolume2"} 0 # HELP Disk_Avg_Bytes_Read Average number of bytes transfered from the disk during read operations. # TYPE Disk_Avg_Bytes_Read gauge Disk_Avg_Bytes_Read{Instance="c"} 0 # HELP Disk_Avg_Bytes_Read Average number of bytes transfered from the disk during read operations. # TYPE Disk_Avg_Bytes_Read gauge Disk_Avg_Bytes_Read{Instance="_total"} 0 # HELP Disk_Avg_Bytes_Write Average number of bytes transfered to the disk during write operations. # TYPE Disk_Avg_Bytes_Write gauge Disk_Avg_Bytes_Write{Instance="harddiskvolume2"} 0 # HELP Disk_Avg_Bytes_Write Average number of bytes transfered to the disk during write operations. # TYPE Disk_Avg_Bytes_Write gauge Disk_Avg_Bytes_Write{Instance="c"} 8192 # HELP Disk_Avg_Bytes_Write Average number of bytes transfered to the disk during write operations. # TYPE Disk_Avg_Bytes_Write gauge Disk_Avg_Bytes_Write{Instance="_total"} 8192 # HELP Disk_sec_per_Read Average time, in seconds, of a read of data from the disk. # TYPE Disk_sec_per_Read gauge Disk_sec_per_Read{Instance="harddiskvolume2"} 0
尝试情况说明
- 已有Go、C#等语言的解析示例,多基于Google ProtoBuf库,但我不熟悉C#编写,PowerShell调用.NET版ProtoBuf公开方法难度大,还需借助DLL浏览器查找可用调用名称。
- 尝试用
Install-Package安装.NET版ProtoBuf及依赖时,出现如下错误:
但使用Install-Package: Dependency loop detected for package 'protobuf-net'choco install protoc可成功安装。 - Prometheus已不再支持JSON格式,对应的proto文件也不再维护(未来可能恢复维护)。
- 后续尝试:
- 转而使用Chocolatey安装相关库
- 发现ProtoBuf库实际是带有命令行参数的
protoc.exe文件 - 找到Prometheus的ebnf规范
- 补充了上述prom格式示例内容
请问是否有基于prom文件在PowerShell中构建解析器的简便方法?
内容的提问来源于stack exchange,提问作者Dennis
相关产品推荐
相关产品推荐

