syntax = "proto3";
package com.usthe.common.entity.message;

message MetricsData
{
    // 监控的ID
    uint64 id = 1;
    // 监控的类型 eg: linux | mysql | jvm
    string app = 2;
    // 监控采集的指标集合 eg: cpu | memory | health
    string metrics = 3;
    // 监控采集指标集合的采集优先级>=0
    uint32 priority = 4;
    // 采集时间
    uint64 time = 5;
    // 采集响应码
    Code code = 6;
    // 采集响应信息
    string msg = 7;
    // 采集指标名
    repeated Field fields = 8;
    // 采集指标值集合(fields作为字段名称与ValueRow映射)
    repeated ValueRow values = 9;
}

message Field
{
    // 指标采集字符名称
    string name = 1;
    // 字段类型：0-number数字 1-string字符串
    uint32 type = 2;
}

message ValueRow
{
    // 主键实例，唯一标识这行数据
    string instance = 1;
    // 采集指标值
    repeated string columns = 2;
}

enum Code
{
    // 采集成功
    SUCCESS = 0;
    // 采集器不可用
    UN_AVAILABLE = 1;
    // 对端不可达(网络层icmp)
    UN_REACHABLE = 2;
    // 对端连接失败(传输层tcp,udp)
    UN_CONNECTABLE = 3;
    // 数据采集失败(应用层http,ssh,snmp)
    FAIL = 4;
    // 采集超时
    TIMEOUT = 5;
}