syntax = "proto3"; package bmcmetrics.metricproto; message BmcMemoryMetric { int32 mem_available = 1; int32 slab = 2; int32 kernel_stack = 3; } message BmcUptimeMetric { float uptime = 1; // Uptime (wall clock time) float idle_process_time = 2; // Idle process time across all cores } message BmcDiskSpaceMetric { int32 rwfs_kib_available = 1; // Free space in RWFS in KiB } // The following messages use string tables to save space message BmcProcStatMetric { message BmcProcStat { int32 sidx_cmdline = 1; // complete command line float utime = 2; // Time (seconds) in user mode float stime = 3; // Time (seconds) in kernel mode } repeated BmcProcStat stats = 10; } message BmcFdStatMetric { message BmcFdStat { int32 sidx_cmdline = 1; // complete command line int32 fd_count = 2; // count of open FD's } repeated BmcFdStat stats = 10; } message BmcStringTable { message StringEntry { string value = 1; } repeated StringEntry entries = 10; } message BmcMetricSnapshot { BmcStringTable string_table = 1; BmcMemoryMetric memory_metric = 2; BmcUptimeMetric uptime_metric = 3; BmcDiskSpaceMetric storage_space_metric = 4; BmcProcStatMetric procstat_metric = 5; BmcFdStatMetric fdstat_metric = 6; }