100 lines
3 KiB
Protocol Buffer
100 lines
3 KiB
Protocol Buffer
|
//
|
||
|
// Copyrights (c) 2015, 2016, Juniper Networks, Inc.
|
||
|
// All rights reserved.
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// Licensed to the Apache Software Foundation (ASF) under one
|
||
|
// or more contributor license agreements. See the NOTICE file
|
||
|
// distributed with this work for additional information
|
||
|
// regarding copyright ownership. The ASF licenses this file
|
||
|
// to you under the Apache License, Version 2.0 (the
|
||
|
// "License"); you may not use this file except in compliance
|
||
|
// with the License. You may obtain a copy of the License at
|
||
|
//
|
||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||
|
//
|
||
|
// Unless required by applicable law or agreed to in writing,
|
||
|
// software distributed under the License is distributed on an
|
||
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||
|
// KIND, either express or implied. See the License for the
|
||
|
// specific language governing permissions and limitations
|
||
|
// under the License.
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// This file defines the top level message used for all Juniper
|
||
|
// Telemetry packets encoded to the protocol buffer format.
|
||
|
// The top level message is TelemetryStream.
|
||
|
//
|
||
|
|
||
|
syntax = "proto2";
|
||
|
|
||
|
import "google/protobuf/descriptor.proto";
|
||
|
|
||
|
extend google.protobuf.FieldOptions {
|
||
|
optional TelemetryFieldOptions telemetry_options = 1024;
|
||
|
}
|
||
|
|
||
|
message TelemetryFieldOptions {
|
||
|
optional bool is_key = 1;
|
||
|
optional bool is_timestamp = 2;
|
||
|
optional bool is_counter = 3;
|
||
|
optional bool is_gauge = 4;
|
||
|
}
|
||
|
|
||
|
message TelemetryStream {
|
||
|
// router hostname
|
||
|
// (or, just in the case of legacy (microkernel) PFEs, the IP address)
|
||
|
required string system_id = 1 [(telemetry_options).is_key = true];
|
||
|
|
||
|
// line card / RE (slot number). For RE, it will be 65535
|
||
|
optional uint32 component_id = 2 [(telemetry_options).is_key = true];
|
||
|
|
||
|
// PFE (if applicable)
|
||
|
optional uint32 sub_component_id = 3 [(telemetry_options).is_key = true];
|
||
|
|
||
|
// Overload sensor name with "senor name, internal path, external path
|
||
|
// and component" seperated by ":". For RE sensors, component will be
|
||
|
// daemon-name and for PFE sensors it will be "PFE".
|
||
|
optional string sensor_name = 4 [(telemetry_options).is_key = true];
|
||
|
|
||
|
// sequence number, monotonically increasing for each
|
||
|
// system_id, component_id, sub_component_id + sensor_name.
|
||
|
optional uint32 sequence_number = 5;
|
||
|
|
||
|
// timestamp (milliseconds since 00:00:00 UTC 1/1/1970)
|
||
|
optional uint64 timestamp = 6 [(telemetry_options).is_timestamp = true];
|
||
|
|
||
|
// major version
|
||
|
optional uint32 version_major = 7;
|
||
|
|
||
|
// minor version
|
||
|
optional uint32 version_minor = 8;
|
||
|
|
||
|
// end-of-message marker, set to true when the end of wrap is reached
|
||
|
optional bool eom = 9;
|
||
|
|
||
|
optional IETFSensors ietf = 100;
|
||
|
|
||
|
optional EnterpriseSensors enterprise = 101;
|
||
|
}
|
||
|
|
||
|
message IETFSensors {
|
||
|
extensions 1 to max;
|
||
|
}
|
||
|
|
||
|
message EnterpriseSensors {
|
||
|
extensions 1 to max;
|
||
|
}
|
||
|
|
||
|
extend EnterpriseSensors {
|
||
|
// re-use IANA assigned numbers
|
||
|
optional JuniperNetworksSensors juniperNetworks = 2636;
|
||
|
}
|
||
|
|
||
|
message JuniperNetworksSensors {
|
||
|
extensions 1 to max;
|
||
|
}
|
||
|
|