/* * Copyright 2014 NAVER Corp. * * Licensed 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. */ package com.navercorp.pinpoint.common.trace; import static com.navercorp.pinpoint.common.trace.ServiceTypeFactory.of; import static com.navercorp.pinpoint.common.trace.ServiceTypeProperty.*; /** * * * <h3>Pinpoint Internal (0 ~ 999)</h3> * * <table> * <tr><td>-1</td><td>UNDEFINED</td></tr> * <tr><td>1</td><td>UNKNOWN</td></tr> * <tr><td>2</td><td>USER</td></tr> * <tr><td>3</td><td>UNKNOWN_GROUP</td></tr> * <tr><td>5</td><td>TEST</td></tr> * <tr><td>7</td><td>COLLECTOR</td></tr> * <tr><td>100</td><td>ASYNC</td></tr> * </table> * * * <h3>Server (1000 ~ 1899)</h3> * * <table> * <tr><td>1000</td><td>STAND_ALONE</td></tr> * <tr><td>1005</td><td>TEST_STAND_ALONE</td></tr> * <tr><td>1010</td><td>TOMCAT</td></tr> * <tr><td>1011</td><td>TOMCAT_METHOD</td></tr> * <tr><td>1020</td><td><i>RESERVED</i></td></tr> * <tr><td>1021</td><td><i>RESERVED</i></td></tr> * <tr><td>1030</td><td>JETTY</td></tr> * <tr><td>1031</td><td>JETTY_METHOD</td></tr> * <tr><td>1040</td><td>JBOSS</td></tr> * <tr><td>1041</td><td>JBOSS_METHOD</td></tr> * <tr><td>1050</td><td>VERTX</td></tr> * <tr><td>1051</td><td>VERTX_INTERNAL</td></tr> * <tr><td>1052</td><td>VERTX_HTTP_SERVER</td></tr> * <tr><td>1053</td><td>VERTX_HTTP_SERVER_INTERNAL</td></tr> * <tr><td>1100</td><td>THRIFT_SERVER</td></tr> * <tr><td>1101</td><td>THRIFT_SERVER_INTERNAL</td></tr> * <tr><td>1110</td><td>DUBBO_PROVIDER</td></tr> * </table> * * <h3>Server Sandbox (1900 ~ 1999)</h3> * * * <h3>Database (2000 ~ 2899)</h3> * <table> * <tr><td>2050</td><td>UNKNOWN_DB</td></tr> * <tr><td>2051</td><td>UNKNOWN_DB_EXECUTE_QUERY</td></tr> * <tr><td>2100</td><td>MYSQL</td></tr> * <tr><td>2101</td><td>MYSQL_EXECUTE_QUERY</td></tr> * <tr><td>2150</td><td>MARIADB</td></tr> * <tr><td>2151</td><td>MARIADB_EXECUTE_QUERY</td></tr> * <tr><td>2200</td><td>MSSQL</td></tr> * <tr><td>2201</td><td>MSSQL_EXECUTE_QUERY</td></tr> * <tr><td>2300</td><td>ORACLE</td></tr> * <tr><td>2301</td><td>ORACLE_EXECUTE_QUERY</td></tr> * <tr><td>2400</td><td>CUBRID</td></tr> * <tr><td>2401</td><td>CUBRID_EXECUTE_QUERY</td></tr> * <tr><td>2410</td><td>NBASET</td></tr> * <tr><td>2411</td><td>NBASET_EXECUTE_QUERY</td></tr> * <tr><td>2412</td><td>NBASET_INTERNAL</td></tr> * <tr><td>2500</td><td>POSTGRESQL</td></tr> * <tr><td>2501</td><td>POSTGRESQL_EXECUTE_QUERY</td></tr> * <tr><td>2600</td><td>CASSANDRA</td></tr> * <tr><td>2601</td><td>CASSANDRA_EXECUTE_QUERY</td></tr> * </table> * * <h3>Database Sandbox (2900 ~ 2999)</h3> * * * <h3>RESERVED (3000 ~ 4999)</h3> * * * <h3>Library (5000 ~ 7499)</h3> * <table> * <tr><td>5000</td><td>INTERNAL_METHOD</td></tr> * <tr><td>5010</td><td>GSON</td></tr> * <tr><td>5011</td><td>JACKSON</td></tr> * <tr><td>5012</td><td>JSON-LIB</td></tr> * <tr><td>5050</td><td>SPRING</td></tr> * <tr><td>5051</td><td>SPRING_MVC</td></tr> * <tr><td>5061</td><td><i>RESERVED</i></td></tr> * <tr><td>5071</td><td>SPRING_BEAN</td></tr> * <tr><td>5500</td><td>IBATIS</td></tr> * <tr><td>5501</td><td>IBATIS-SPRING</td></tr> * <tr><td>5510</td><td>MYBATIS</td></tr> * <tr><td>6050</td><td>DBCP</td></tr> * <tr><td>6052</td><td>DBCP2</td></tr> * <tr><td>6060</td><td>HIKARICP</td></tr> * <tr><td>7010</td><td>USER_INCLUDE</td></tr> * </table> * * <h3>Library Sandbox (7500 ~ 7999)</h3> * * <h3>Cache Library (8000 ~ 8899) Fast Histogram</h3> * <table> * <tr><td>8050</td><td>MEMCACHED</td></tr> * <tr><td>8051</td><td>MEMCACHED_FUTURE_GET</td></tr> * <tr><td>8100</td><td>ARCUS</td></tr> * <tr><td>8101</td><td>ARCUS_FUTURE_GET</td></tr> * <tr><td>8102</td><td>ARCUS_EHCACHE_FUTURE_GET</td></tr> * <tr><td>8103</td><td>ARCUS_INTERNAL</td></tr> * <tr><td>8200</td><td>REDIS</td></tr> * <tr><td>8250</td><td><i>RESERVED</i></td></tr> * <tr><td>8251</td><td><i>RESERVED</i></td></tr> * </table> * <h3>Cache Library Sandbox (8900 ~ 8999) Histogram type: Fast </h3> * * * <h3>RPC (9000 ~ 9899)</h3> * <table> * <tr><td>9050</td><td>HTTP_CLIENT_3</td></tr> * <tr><td>9051</td><td>HTTP_CLIENT_3_INTERNAL</td></tr> * <tr><td>9052</td><td>HTTP_CLIENT_4</td></tr> * <tr><td>9053</td><td>HTTP_CLIENT_4_INTERNAL</td></tr> * <tr><td>9054</td><td>GOOGLE_HTTP_CLIENT_INTERNAL</td></tr> * <tr><td>9055</td><td>JDK_HTTPURLCONNECTOR</td></tr> * <tr><td>9056</td><td>ASYNC_HTTP_CLIENT</td></tr> * <tr><td>9057</td><td>ASYNC_HTTP_CLIENT_INTERNAL</td></tr> * <tr><td>9058</td><td>OK_HTTP_CLIENT</td></tr> * <tr><td>9059</td><td>OK_HTTP_CLIENT_INTERNAL</td></tr> * <tr><td>9060</td><td><i>RESERVED</i></td></tr> * <tr><td>9070</td><td><i>RESERVED</i></td></tr> * <tr><td>9080</td><td><i>APACHE_CXF_CLIENT</i></td></tr> * <tr><td>9100</td><td>THRIFT_CLIENT</td></tr> * <tr><td>9101</td><td>THRIFT_CLIENT_INTERNAL</td></tr> * <tr><td>9110</td><td>DUBBO_CONSUMER</td></tr> * <tr><td>9120</td><td>HYSTRIX_COMMAND</td></tr> * <tr><td>9130</td><td>VERTX_HTTP_CLIENT</td></tr> * <tr><td>9131</td><td>VERTX_HTTP_CLIENT_INTERNAL</td></tr> * </table> * * <h3>RPC Sandbox (9900 ~ 9999)</h3> * * * <tr><td></td><td></td></tr> * * @author emeroad * @author netspider * @author Jongho Moon */ public interface ServiceType { String getName(); short getCode(); String getDesc(); boolean isInternalMethod(); boolean isRpcClient(); // FIXME record statistics of only rpc call currently. so is it all right to chane into isRecordRpc() boolean isRecordStatistics(); boolean isUnknown(); // return true when the service type is USER or can not be identified boolean isUser(); boolean isTerminal(); boolean isQueue(); boolean isIncludeDestinationId(); ServiceTypeCategory getCategory(); HistogramSchema getHistogramSchema(); boolean isWas(); // Undefined Service Code ServiceType UNDEFINED = of(-1, "UNDEFINED", TERMINAL); // Callee node that agent hasn't been installed ServiceType UNKNOWN = of(1, "UNKNOWN", RECORD_STATISTICS); // UserUNDEFINED ServiceType USER = of(2, "USER", RECORD_STATISTICS); // Group of UNKNOWN, used only for UI ServiceType UNKNOWN_GROUP = of(3, "UNKNOWN_GROUP", RECORD_STATISTICS); // Group of TEST, used for running tests ServiceType TEST = of(5, "TEST"); ServiceType COLLECTOR = of(7, "COLLECTOR"); ServiceType ASYNC = of(100, "ASYNC"); // Java applications, WAS ServiceType STAND_ALONE = of(1000, "STAND_ALONE", RECORD_STATISTICS); ServiceType TEST_STAND_ALONE = of(1005, "TEST_STAND_ALONE", RECORD_STATISTICS); ServiceType UNAUTHORIZED = of(1007, "UNAUTHORIZED", RECORD_STATISTICS); /** * Database shown only as xxx_EXECUTE_QUERY at the statistics info section in the server map */ // DB 2000 ServiceType UNKNOWN_DB = of(2050, "UNKNOWN_DB", TERMINAL, INCLUDE_DESTINATION_ID); ServiceType UNKNOWN_DB_EXECUTE_QUERY = of(2051, "UNKNOWN_DB_EXECUTE_QUERY", "UNKNOWN_DB", TERMINAL, RECORD_STATISTICS, INCLUDE_DESTINATION_ID); // Internal method // FIXME it's not clear to put internal method here. but do that for now. ServiceType INTERNAL_METHOD = of(5000, "INTERNAL_METHOD"); // Spring framework ServiceType SPRING = of(5050, "SPRING"); // ServiceType SPRING_MVC = of(5051, "SPRING_MVC", "SPRING", NORMAL_SCHEMA); // FIXME replaced with IBATIS_SPRING (5501) under IBatis Plugin - kept for backwards compatibility ServiceType SPRING_ORM_IBATIS = of(5061, "SPRING_ORM_IBATIS", "SPRING"); // FIXME need to define how to handle spring related codes // ServiceType SPRING_BEAN = of(5071, "SPRING_BEAN", "SPRING_BEAN", NORMAL_SCHEMA); }