language-agent/Meter.proto (84 lines of code) (raw):

/* * 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. * */ syntax = "proto3"; package skywalking.v3; option java_multiple_files = true; option java_package = "org.apache.skywalking.apm.network.language.agent.v3"; option go_package = "skywalking.apache.org/repo/goapi/collect/language/agent/v3"; import "common/Command.proto"; service MeterReportService { // Meter data is reported in a certain period. The agent/SDK should report all collected metrics in this period through one stream. // The whole stream is an input data set, client should onComplete the stream per report period. rpc collect (stream MeterData) returns (Commands) { } // Reporting meter data in bulk mode as MeterDataCollection. // By using this, each one in the stream would be treated as a complete input for MAL engine, // comparing to `collect (stream MeterData)`, which is using one stream as an input data set. rpc collectBatch (stream MeterDataCollection) returns (Commands) { } } // Label of the meter message Label { string name = 1; string value = 2; } // The histogram element definition. It includes the bucket lower boundary and the count in the bucket. message MeterBucketValue { // The value represents the min value of the bucket, // the upper boundary is determined by next MeterBucketValue$bucket, // if it doesn't exist, the upper boundary is positive infinity. double bucket = 1; int64 count = 2; // If is negative infinity, the value of the bucket is invalid bool isNegativeInfinity = 3; } // Meter single value message MeterSingleValue { // Meter name string name = 1; // Labels repeated Label labels = 2; // Single value double value = 3; } // Histogram message MeterHistogram { // Meter name string name = 1; // Labels repeated Label labels = 2; // Customize the buckets repeated MeterBucketValue values = 3; } // Single meter data, if the same metrics have a different label, they will separate. message MeterData { // Meter data could be a single value or histogram. oneof metric { MeterSingleValue singleValue = 1; MeterHistogram histogram = 2; } // Service name, be set value in the first element in the stream-call. string service = 3; // Service instance name, be set value in the first element in the stream-call. string serviceInstance = 4; // Meter data report time, be set value in the first element in the stream-call. int64 timestamp = 5; } message MeterDataCollection { repeated MeterData meterData = 1; }