使用 VictoriaMetrics
在配置服务中注册连接
在使用 VictoriaMetrics 前,请先在配置服务中注册连接参数,可参考下图:
上图注册了一个连接,名称是 vm-conn
创建客户端实例
根据“连接名称”创建客户端实例 (示例代码使用了上图中的连接名称)
VictoriaMetricsClient client = VictoriaMetricsClient.Create("vm-conn");
对于SaaS场景,可以采用下面的方式创建VictoriaMetricsClient实例
VictoriaMetricsClient client = VictoriaMetricsClient.CreateTenant("tenantId");
写入数据到 VictoriaMetrics
public static async Task Test_Write()
{
// 生成要写入的测试数据
List<RequestCount> list = CreateTestData();
// 创建VictoriaMetrics的客户端实例,Create方法的参数是一个“连接名称”,它已在配置服务中注册为数据库连接
VictoriaMetricsClient client = VictoriaMetricsClient.Create("vm-conn");
// 将测试数据写入VictoriaMetrics
await client.GetInsertRequest(list).SendAsync();
}
示例代码中数据结构的定义
public sealed class RequestCount
{
[TagField]
public string AppName { get; set; }
[TagField]
public string HostName { get; set; }
[ValueField]
public int Count { get; set; }
[ValueField]
public int Error { get; set; }
[ValueField]
public int Slow { get; set; }
[ValueField]
public int AvgTime { get; set; }
[TimeField]
public DateTime CreateTime { get; set; }
}
从 VictoriaMetrics 中查询数据
public static async Task Test_Query()
{
// VictoriaMetrics 使用的 PromQL 查询
string query = "RequestCount:Count";
// 3个查询过滤参数
DateTime start = DateTime.Now.AddHours(-3);
DateTime end = DateTime.Now;
int step = 0;
// 创建VictoriaMetrics的客户端实例,Create方法的参数是一个“连接名称”,它已在配置服务中注册为数据库连接
VictoriaMetricsClient client = VictoriaMetricsClient.Create("vm-conn");
// 执行查询,此时返回的结果是JSON格式
string json = await client.GetQueryRequest(query, start, end, step).GetResultAsync();
// 将JSON数据转成 DataTable
DataTable table = client.JsonToDataTable(json);
Console.WriteLine(table.ToJson(JsonStyle.Indented));
}
说明:
- VictoriaMetrics的返回结果只有一个数值列
- JSON转DataTable时,会固定生成 XTime, XValue 这二个列,表示时间和数值
在查询服务中使用 VictoriaMetrics
在查询服务中创建服务接口可参考下图:
说明:
- 数据源:一定要选择 VictoriaMetrics,连接也要匹配
- 查询脚本:就是 PromQL 查询
- StartTime,EndTime,Step 这3个参数是必须的,用于过滤数据
- 由于PromQL并不支持参数化查询,所以 @db 只是一个占位标记,在执行时会被替换
数据查询服务支持以下返回格式:
- json (默认值)
- xml
- xml2
- csv
- excel
- raw
查询演示