1 /* 2 * Copyright 2017, OpenCensus Authors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package io.opencensus.contrib.grpc.metrics; 18 19 import io.opencensus.stats.Measure; 20 import io.opencensus.stats.Measure.MeasureDouble; 21 import io.opencensus.stats.Measure.MeasureLong; 22 import io.opencensus.tags.TagKey; 23 24 /** 25 * Constants for collecting rpc stats. 26 * 27 * @since 0.8 28 */ 29 public final class RpcMeasureConstants { 30 31 /** 32 * Tag key that represents a gRPC canonical status. Refer to 33 * https://github.com/grpc/grpc/blob/master/doc/statuscodes.md. 34 * 35 * @since 0.8 36 * @deprecated in favor of {@link #GRPC_CLIENT_STATUS} and {@link #GRPC_SERVER_STATUS}. 37 */ 38 @Deprecated public static final TagKey RPC_STATUS = TagKey.create("canonical_status"); 39 40 /** 41 * Tag key that represents a gRPC method. 42 * 43 * @since 0.8 44 * @deprecated in favor of {@link #GRPC_CLIENT_METHOD} and {@link #GRPC_SERVER_METHOD}. 45 */ 46 @Deprecated public static final TagKey RPC_METHOD = TagKey.create("method"); 47 48 /** 49 * Tag key that represents a client gRPC canonical status. Refer to 50 * https://github.com/grpc/grpc/blob/master/doc/statuscodes.md. 51 * 52 * <p>{@link #GRPC_CLIENT_STATUS} is set when an outgoing request finishes and is only available 53 * around metrics recorded at the end of the outgoing request. 54 * 55 * @since 0.13 56 */ 57 public static final TagKey GRPC_CLIENT_STATUS = TagKey.create("grpc_client_status"); 58 59 /** 60 * Tag key that represents a server gRPC canonical status. Refer to 61 * https://github.com/grpc/grpc/blob/master/doc/statuscodes.md. 62 * 63 * <p>{@link #GRPC_SERVER_STATUS} is set when an incoming request finishes and is only available 64 * around metrics recorded at the end of the incoming request. 65 * 66 * @since 0.13 67 */ 68 public static final TagKey GRPC_SERVER_STATUS = TagKey.create("grpc_server_status"); 69 70 /** 71 * Tag key that represents a client gRPC method. 72 * 73 * <p>{@link #GRPC_CLIENT_METHOD} is set when an outgoing request starts and is available in all 74 * the recorded metrics. 75 * 76 * @since 0.13 77 */ 78 public static final TagKey GRPC_CLIENT_METHOD = TagKey.create("grpc_client_method"); 79 80 /** 81 * Tag key that represents a server gRPC method. 82 * 83 * <p>{@link #GRPC_SERVER_METHOD} is set when an incoming request starts and is available in the 84 * context for the entire RPC call handling. 85 * 86 * @since 0.13 87 */ 88 public static final TagKey GRPC_SERVER_METHOD = TagKey.create("grpc_server_method"); 89 90 // Constants used to define the following Measures. 91 92 /** 93 * Unit string for byte. 94 * 95 * @since 0.8 96 */ 97 private static final String BYTE = "By"; 98 99 /** 100 * Unit string for count. 101 * 102 * @since 0.8 103 */ 104 private static final String COUNT = "1"; 105 106 /** 107 * Unit string for millisecond. 108 * 109 * @since 0.8 110 */ 111 private static final String MILLISECOND = "ms"; 112 113 // RPC client Measures. 114 115 /** 116 * {@link Measure} for gRPC client error counts. 117 * 118 * @since 0.8 119 * @deprecated because error counts can be computed on your metrics backend by totalling the 120 * different per-status values. 121 */ 122 @Deprecated 123 public static final MeasureLong RPC_CLIENT_ERROR_COUNT = 124 Measure.MeasureLong.create("grpc.io/client/error_count", "RPC Errors", COUNT); 125 126 /** 127 * {@link Measure} for gRPC client request bytes. 128 * 129 * @since 0.8 130 * @deprecated in favor of {@link #GRPC_CLIENT_SENT_BYTES_PER_RPC}. 131 */ 132 @Deprecated 133 public static final MeasureDouble RPC_CLIENT_REQUEST_BYTES = 134 Measure.MeasureDouble.create("grpc.io/client/request_bytes", "Request bytes", BYTE); 135 136 /** 137 * {@link Measure} for gRPC client response bytes. 138 * 139 * @since 0.8 140 * @deprecated in favor of {@link #GRPC_CLIENT_RECEIVED_BYTES_PER_RPC}. 141 */ 142 @Deprecated 143 public static final MeasureDouble RPC_CLIENT_RESPONSE_BYTES = 144 Measure.MeasureDouble.create("grpc.io/client/response_bytes", "Response bytes", BYTE); 145 146 /** 147 * {@link Measure} for gRPC client roundtrip latency in milliseconds. 148 * 149 * @since 0.8 150 * @deprecated in favor of {@link #GRPC_CLIENT_ROUNDTRIP_LATENCY}. 151 */ 152 @Deprecated 153 public static final MeasureDouble RPC_CLIENT_ROUNDTRIP_LATENCY = 154 Measure.MeasureDouble.create( 155 "grpc.io/client/roundtrip_latency", "RPC roundtrip latency msec", MILLISECOND); 156 157 /** 158 * {@link Measure} for gRPC client server elapsed time in milliseconds. 159 * 160 * @since 0.8 161 * @deprecated in favor of {@link #GRPC_CLIENT_SERVER_LATENCY}. 162 */ 163 @Deprecated 164 public static final MeasureDouble RPC_CLIENT_SERVER_ELAPSED_TIME = 165 Measure.MeasureDouble.create( 166 "grpc.io/client/server_elapsed_time", "Server elapsed time in msecs", MILLISECOND); 167 168 /** 169 * {@link Measure} for gRPC client uncompressed request bytes. 170 * 171 * @since 0.8 172 * @deprecated in favor of {@link #GRPC_CLIENT_SENT_BYTES_PER_RPC}. 173 */ 174 @Deprecated 175 public static final MeasureDouble RPC_CLIENT_UNCOMPRESSED_REQUEST_BYTES = 176 Measure.MeasureDouble.create( 177 "grpc.io/client/uncompressed_request_bytes", "Uncompressed Request bytes", BYTE); 178 179 /** 180 * {@link Measure} for gRPC client uncompressed response bytes. 181 * 182 * @since 0.8 183 * @deprecated in favor of {@link #GRPC_CLIENT_RECEIVED_BYTES_PER_RPC}. 184 */ 185 @Deprecated 186 public static final MeasureDouble RPC_CLIENT_UNCOMPRESSED_RESPONSE_BYTES = 187 Measure.MeasureDouble.create( 188 "grpc.io/client/uncompressed_response_bytes", "Uncompressed Response bytes", BYTE); 189 190 /** 191 * {@link Measure} for number of started client RPCs. 192 * 193 * @since 0.8 194 * @deprecated in favor of {@link #GRPC_CLIENT_STARTED_RPCS}. 195 */ 196 @Deprecated 197 public static final MeasureLong RPC_CLIENT_STARTED_COUNT = 198 Measure.MeasureLong.create( 199 "grpc.io/client/started_count", "Number of client RPCs (streams) started", COUNT); 200 201 /** 202 * {@link Measure} for number of finished client RPCs. 203 * 204 * @since 0.8 205 * @deprecated since finished count can be inferred with a {@code Count} aggregation on {@link 206 * #GRPC_CLIENT_SERVER_LATENCY}. 207 */ 208 @Deprecated 209 public static final MeasureLong RPC_CLIENT_FINISHED_COUNT = 210 Measure.MeasureLong.create( 211 "grpc.io/client/finished_count", "Number of client RPCs (streams) finished", COUNT); 212 213 /** 214 * {@link Measure} for client RPC request message counts. 215 * 216 * @since 0.8 217 * @deprecated in favor of {@link #GRPC_CLIENT_SENT_MESSAGES_PER_RPC}. 218 */ 219 @Deprecated 220 public static final MeasureLong RPC_CLIENT_REQUEST_COUNT = 221 Measure.MeasureLong.create( 222 "grpc.io/client/request_count", "Number of client RPC request messages", COUNT); 223 224 /** 225 * {@link Measure} for client RPC response message counts. 226 * 227 * @deprecated in favor of {@link #GRPC_CLIENT_RECEIVED_MESSAGES_PER_RPC}. 228 * @since 0.8 229 */ 230 @Deprecated 231 public static final MeasureLong RPC_CLIENT_RESPONSE_COUNT = 232 Measure.MeasureLong.create( 233 "grpc.io/client/response_count", "Number of client RPC response messages", COUNT); 234 235 /** 236 * {@link Measure} for total bytes sent across all request messages per RPC. 237 * 238 * @since 0.13 239 */ 240 public static final MeasureDouble GRPC_CLIENT_SENT_BYTES_PER_RPC = 241 Measure.MeasureDouble.create( 242 "grpc.io/client/sent_bytes_per_rpc", 243 "Total bytes sent across all request messages per RPC", 244 BYTE); 245 246 /** 247 * {@link Measure} for total bytes received across all response messages per RPC. 248 * 249 * @since 0.13 250 */ 251 public static final MeasureDouble GRPC_CLIENT_RECEIVED_BYTES_PER_RPC = 252 Measure.MeasureDouble.create( 253 "grpc.io/client/received_bytes_per_rpc", 254 "Total bytes received across all response messages per RPC", 255 BYTE); 256 257 /** 258 * {@link Measure} for gRPC client roundtrip latency in milliseconds. 259 * 260 * @since 0.13 261 */ 262 public static final MeasureDouble GRPC_CLIENT_ROUNDTRIP_LATENCY = 263 Measure.MeasureDouble.create( 264 "grpc.io/client/roundtrip_latency", 265 "Time between first byte of request sent to last byte of response received, " 266 + "or terminal error.", 267 MILLISECOND); 268 269 /** 270 * {@link Measure} for number of messages sent in the RPC. 271 * 272 * @since 0.13 273 */ 274 public static final MeasureLong GRPC_CLIENT_SENT_MESSAGES_PER_RPC = 275 Measure.MeasureLong.create( 276 "grpc.io/client/sent_messages_per_rpc", "Number of messages sent in the RPC", COUNT); 277 278 /** 279 * {@link Measure} for number of response messages received per RPC. 280 * 281 * @since 0.13 282 */ 283 public static final MeasureLong GRPC_CLIENT_RECEIVED_MESSAGES_PER_RPC = 284 Measure.MeasureLong.create( 285 "grpc.io/client/received_messages_per_rpc", 286 "Number of response messages received per RPC", 287 COUNT); 288 289 /** 290 * {@link Measure} for gRPC server latency in milliseconds. 291 * 292 * @since 0.13 293 */ 294 public static final MeasureDouble GRPC_CLIENT_SERVER_LATENCY = 295 Measure.MeasureDouble.create( 296 "grpc.io/client/server_latency", "Server latency in msecs", MILLISECOND); 297 298 /** 299 * {@link Measure} for total number of client RPCs ever opened, including those that have not 300 * completed. 301 * 302 * @since 0.14 303 */ 304 public static final MeasureLong GRPC_CLIENT_STARTED_RPCS = 305 Measure.MeasureLong.create( 306 "grpc.io/client/started_rpcs", "Number of started client RPCs.", COUNT); 307 308 // RPC server Measures. 309 310 /** 311 * {@link Measure} for gRPC server error counts. 312 * 313 * @since 0.8 314 * @deprecated because error counts can be computed on your metrics backend by totalling the 315 * different per-status values. 316 */ 317 @Deprecated 318 public static final MeasureLong RPC_SERVER_ERROR_COUNT = 319 Measure.MeasureLong.create("grpc.io/server/error_count", "RPC Errors", COUNT); 320 321 /** 322 * {@link Measure} for gRPC server request bytes. 323 * 324 * @since 0.8 325 * @deprecated in favor of {@link #GRPC_SERVER_RECEIVED_BYTES_PER_RPC}. 326 */ 327 @Deprecated 328 public static final MeasureDouble RPC_SERVER_REQUEST_BYTES = 329 Measure.MeasureDouble.create("grpc.io/server/request_bytes", "Request bytes", BYTE); 330 331 /** 332 * {@link Measure} for gRPC server response bytes. 333 * 334 * @since 0.8 335 * @deprecated in favor of {@link #GRPC_SERVER_SENT_BYTES_PER_RPC}. 336 */ 337 @Deprecated 338 public static final MeasureDouble RPC_SERVER_RESPONSE_BYTES = 339 Measure.MeasureDouble.create("grpc.io/server/response_bytes", "Response bytes", BYTE); 340 341 /** 342 * {@link Measure} for gRPC server elapsed time in milliseconds. 343 * 344 * @since 0.8 345 * @deprecated in favor of {@link #GRPC_SERVER_SERVER_LATENCY}. 346 */ 347 @Deprecated 348 public static final MeasureDouble RPC_SERVER_SERVER_ELAPSED_TIME = 349 Measure.MeasureDouble.create( 350 "grpc.io/server/server_elapsed_time", "Server elapsed time in msecs", MILLISECOND); 351 352 /** 353 * {@link Measure} for gRPC server latency in milliseconds. 354 * 355 * @since 0.8 356 * @deprecated in favor of {@link #GRPC_SERVER_SERVER_LATENCY}. 357 */ 358 @Deprecated 359 public static final MeasureDouble RPC_SERVER_SERVER_LATENCY = 360 Measure.MeasureDouble.create( 361 "grpc.io/server/server_latency", "Latency in msecs", MILLISECOND); 362 363 /** 364 * {@link Measure} for gRPC server uncompressed request bytes. 365 * 366 * @since 0.8 367 * @deprecated in favor of {@link #GRPC_SERVER_RECEIVED_BYTES_PER_RPC}. 368 */ 369 @Deprecated 370 public static final MeasureDouble RPC_SERVER_UNCOMPRESSED_REQUEST_BYTES = 371 Measure.MeasureDouble.create( 372 "grpc.io/server/uncompressed_request_bytes", "Uncompressed Request bytes", BYTE); 373 374 /** 375 * {@link Measure} for gRPC server uncompressed response bytes. 376 * 377 * @since 0.8 378 * @deprecated in favor of {@link #GRPC_SERVER_SENT_BYTES_PER_RPC}. 379 */ 380 @Deprecated 381 public static final MeasureDouble RPC_SERVER_UNCOMPRESSED_RESPONSE_BYTES = 382 Measure.MeasureDouble.create( 383 "grpc.io/server/uncompressed_response_bytes", "Uncompressed Response bytes", BYTE); 384 385 /** 386 * {@link Measure} for number of started server RPCs. 387 * 388 * @since 0.8 389 * @deprecated in favor of {@link #GRPC_SERVER_STARTED_RPCS}. 390 */ 391 @Deprecated 392 public static final MeasureLong RPC_SERVER_STARTED_COUNT = 393 Measure.MeasureLong.create( 394 "grpc.io/server/started_count", "Number of server RPCs (streams) started", COUNT); 395 396 /** 397 * {@link Measure} for number of finished server RPCs. 398 * 399 * @since 0.8 400 * @deprecated since finished count can be inferred with a {@code Count} aggregation on {@link 401 * #GRPC_SERVER_SERVER_LATENCY}. 402 */ 403 @Deprecated 404 public static final MeasureLong RPC_SERVER_FINISHED_COUNT = 405 Measure.MeasureLong.create( 406 "grpc.io/server/finished_count", "Number of server RPCs (streams) finished", COUNT); 407 408 /** 409 * {@link Measure} for server RPC request message counts. 410 * 411 * @since 0.8 412 * @deprecated in favor of {@link #GRPC_SERVER_RECEIVED_MESSAGES_PER_RPC}. 413 */ 414 @Deprecated 415 public static final MeasureLong RPC_SERVER_REQUEST_COUNT = 416 Measure.MeasureLong.create( 417 "grpc.io/server/request_count", "Number of server RPC request messages", COUNT); 418 419 /** 420 * {@link Measure} for server RPC response message counts. 421 * 422 * @since 0.8 423 * @deprecated in favor of {@link #GRPC_SERVER_SENT_MESSAGES_PER_RPC}. 424 */ 425 @Deprecated 426 public static final MeasureLong RPC_SERVER_RESPONSE_COUNT = 427 Measure.MeasureLong.create( 428 "grpc.io/server/response_count", "Number of server RPC response messages", COUNT); 429 430 /** 431 * {@link Measure} for total bytes sent across all response messages per RPC. 432 * 433 * @since 0.13 434 */ 435 public static final MeasureDouble GRPC_SERVER_SENT_BYTES_PER_RPC = 436 Measure.MeasureDouble.create( 437 "grpc.io/server/sent_bytes_per_rpc", 438 "Total bytes sent across all response messages per RPC", 439 BYTE); 440 441 /** 442 * {@link Measure} for total bytes received across all messages per RPC. 443 * 444 * @since 0.13 445 */ 446 public static final MeasureDouble GRPC_SERVER_RECEIVED_BYTES_PER_RPC = 447 Measure.MeasureDouble.create( 448 "grpc.io/server/received_bytes_per_rpc", 449 "Total bytes received across all messages per RPC", 450 BYTE); 451 452 /** 453 * {@link Measure} for number of messages sent in each RPC. 454 * 455 * @since 0.13 456 */ 457 public static final MeasureLong GRPC_SERVER_SENT_MESSAGES_PER_RPC = 458 Measure.MeasureLong.create( 459 "grpc.io/server/sent_messages_per_rpc", "Number of messages sent in each RPC", COUNT); 460 461 /** 462 * {@link Measure} for number of messages received in each RPC. 463 * 464 * @since 0.13 465 */ 466 public static final MeasureLong GRPC_SERVER_RECEIVED_MESSAGES_PER_RPC = 467 Measure.MeasureLong.create( 468 "grpc.io/server/received_messages_per_rpc", 469 "Number of messages received in each RPC", 470 COUNT); 471 472 /** 473 * {@link Measure} for gRPC server latency in milliseconds. 474 * 475 * @since 0.13 476 */ 477 public static final MeasureDouble GRPC_SERVER_SERVER_LATENCY = 478 Measure.MeasureDouble.create( 479 "grpc.io/server/server_latency", 480 "Time between first byte of request received to last byte of response sent, " 481 + "or terminal error.", 482 MILLISECOND); 483 484 /** 485 * {@link Measure} for total number of server RPCs ever opened, including those that have not 486 * completed. 487 * 488 * @since 0.14 489 */ 490 public static final MeasureLong GRPC_SERVER_STARTED_RPCS = 491 Measure.MeasureLong.create( 492 "grpc.io/server/started_rpcs", "Number of started server RPCs.", COUNT); 493 RpcMeasureConstants()494 private RpcMeasureConstants() {} 495 } 496