public final class EagleEye extends Object
| 限定符和类型 | 字段和说明 |
|---|---|
static String |
MAL_ROOT_RPC_ID
缺少 TraceId,重新开始的 RpcId
|
static String |
ROOT_RPC_ID
正常 TRACE 开始的 RpcId
|
static String |
RPC_RESULT_FAILED
状态码,标识业务处理错误
|
static String |
RPC_RESULT_LIMIT_ERROR
状态码,标识限流错误
|
static String |
RPC_RESULT_RPC_ERROR
状态码,标识 RPC 层出现错误
|
static String |
RPC_RESULT_SOFT_ERROR
状态码,标识软错误,一般用于资源找不到、未命中、加锁未成功、
版本不一致导致未更新等情况,需要根据中间件不同来判定
|
static String |
RPC_RESULT_SUCCESS
状态码,标识调用成功
|
static String |
RPC_RESULT_TIMEOUT
状态码,标识处理超时
|
| 限定符和类型 | 方法和说明 |
|---|---|
static void |
addRpcContextListener(EagleEyeContextListener listener)
注册监听上下文变化的回调
|
static void |
attribute(String key,
String value)
rpc 上追加的key value信息,会打印到当前 rpc 日志中。
|
static void |
bizErrorCode(String bizErrorCode)
设置业务的状态码(不要有可变参数在里面,因为要进行统计),
同时,将这次调用的状态码设置为业务错误
|
static void |
bizResultCode(String bizResultCode)
设置业务的状态码(不要有可变参数在里面,因为要进行统计),
不会影响调用的状态码(默认的调用状态码是“正常”)
|
static void |
callBack(String msg)
用于业务方希望追加相关数据到rpc调用链中,比如想把业务的方法中的某个参数值打印出来,放到rpc的日志中。
|
static void |
clearRpcContext()
清理全部调用上下文信息
|
static void |
commitRpcContext(RpcContext_inner ctx)
提交调用上下文,生成日志。
|
static RpcContext_inner |
createRootRpcContext(String traceId,
String rpcId)
创建 EagleEye 调用上下文,但是不放置到 ThreadLocal。
|
static RpcContext_inner |
createRpcContextFromMap(Map<String,String> map)
从 Map 中还原 EagleEye 调用上下文,但是不放置到 ThreadLocal。
|
static Object |
currentRpcContext()
返回当前线程关联的RPC调用上下文。
|
static void |
dump(String appId,
String operationKey,
Object obj,
Object... params)
将本次调用的参数、业务对象输出到日志中,默认路径为 ~/logs/eagleeye/trace-atp.log。
|
static void |
dumpImportant(String appId,
String operationKey,
Object obj,
Object... params)
将本次调用的参数、业务对象输出到日志中,默认路径为 ~/logs/eagleeye/trace-atp.log。
|
static void |
endLocal(String resultCode,
String appendMsg)
本地调用结束
|
static void |
endLocal(String resultCode,
String bizResultCode,
String appendMsg)
本地调用结束,设置调用状态、业务状态码,以及追加的信息
|
static void |
endTrace(String resultCode,
int type)
结束一次跟踪,Threadlocal 变量会被清空,调用了 startTrace 及 startTrace4Top 的必须在finally或者最后调用该接口。
|
static String |
exportUserData()
导出业务信息,供中间件传输 EagleEye 上下文时使用。
|
static void |
flush()
强制刷新缓存中的日志内容到文件中去,一般建议外部在程序结束阶段时调用, 使用中频繁调用会导致性能下降
|
static String |
generateMulticastRpcId(String rpcId,
String identifier)
当 RpcId 在多播情况下(例如一对多的 RPC 调用),调用这个方法产生新的 RPC Id
|
static String |
generateTraceId(String ip)
生成全局唯一的traceid
|
static String |
getLocalId()
获取当前localId
|
static RpcContext_inner |
getRpcContext()
直接取得当前的 RpcContext,用于备份 RPC 调用上下文(不做 Map 转换)
|
static String |
getRpcId()
获取当前rpc调用层次
|
static int |
getSamplingInterval() |
static String |
getTraceId()
获取全局唯一的Traceid
|
static String |
getUserData(String key)
获取随 EagleEye 通过 RPC 透传的业务信息
|
static Map<String,String> |
getUserDataMap()
获取随 EagleEye 通过 HSF、Notify 等中间件传递的业务信息。
|
static String |
index(String msg)
索引服务,该日志会记录在eagleeye日志中,目的是对大量重复的消息做编码。
|
static void |
init()
触发 EagleEye 组件的初始化
|
static boolean |
isBizOff() |
static boolean |
isLogDumpEnabled()
检查是否开启日志 DUMP 功能
|
static boolean |
isRpcOff() |
static boolean |
isUserDataEnabled()
检查是否透传
|
static RpcContext_inner |
popRpcContext()
从栈上弹出一层 RpcContext,用于客户端 Send/Recv 异步时主逻辑
需要把 send 的子 RpcContext 弹出的场景
|
static String |
putUserData(String key,
String value)
放置 key 对应的业务信息,这个信息会打印到当前 rpc 的日志之中。
|
static void |
remoteIp(String remoteIp)
追加远程服务地址
|
static boolean |
removeRpcContextListener(EagleEyeContextListener listener)
反注册上下文变化的回调
|
static String |
removeUserData(String key)
清除 key 对应的业务信息
|
static void |
requestSize(long size)
rpc请求大小
|
static void |
responseSize(long size)
rpc响应的大小
|
static void |
resultCode(String resultCode)
设置调用的状态码,注意:如果显式调用了这个 API,传入了非空值,那么
endTrace(String, int)、rpcClientRecv(String, int)、
rpcServerSend(String, int) 设置的 resultCode 都会被忽略 |
static void |
rpcClientRecv(String resultCode,
int type)
记录客户端收到RPC响应的事件
|
static void |
rpcClientRecv(String resultCode,
int type,
String appendMsg)
记录客户端收到RPC响应的事件
|
static void |
rpcClientSend()
记录客户端发出RPC调用的事件
|
static void |
rpcServerRecv(String service,
String method)
服务端收到RPC请求
|
static void |
rpcServerSend(String resultCode,
int type)
服务端返回RPC响应,指定 rpc 类型,Threadlocal变量会被清空
|
static void |
rpcServerSend(String resultCode,
int type,
String appendMsg)
服务端返回RPC响应,指定 rpc 类型,Threadlocal变量会被清空
|
static void |
selfLog(String log)
记录 EagleEye 自身信息时使用,EagleEye 内部调试用
|
static void |
selfLog(String log,
Throwable e)
记录 EagleEye 自身错误异常时使用,EagleEye 内部调试用
|
static void |
setLogDumpEnabled(boolean enable)
开启/关闭日志 DUMP 功能
|
static void |
setRpcContext(Object rpcCtx)
切换当前线程关联的RPC调用上下文。
|
static void |
setRpcContext(RpcContext_inner context) |
static void |
setSamplingInterval(int interval) |
static void |
setUserDataEnabled(boolean enable)
开启/关闭透传功能
|
static void |
shutdown()
停止 EagleEye 相关的活动线程,停止后 StatLogger 以及使用了异步处理的日志输出都会不可用
|
static void |
startLocal(String serviceName,
String methodName)
开始一次本地调用(通常用于标明一段本地调用的开始和结束,不建议大量使用)
|
static void |
startRpc(String serviceName,
String methodName)
创建一次的RPC调用
|
static void |
startTrace(String traceId,
String traceName)
开启新的trace。
|
static void |
startTrace(String traceId,
String rpcId,
String traceName)
开启新的trace,该接口仅提供给最源头的前中间件或自己启动的定时程序调用, 支持配置 rpcId 来开启一个嵌套的调用链。
|
static void |
traceName(String traceName,
String iToken)
支持业务重新设置 URL (traceName),同时重新指定 iToken
|
static void |
turnBizOff() |
static void |
turnBizOn() |
static void |
turnRpcOff() |
static void |
turnRpcOn() |
public static final String RPC_RESULT_SOFT_ERROR
public static void turnRpcOn()
public static void turnRpcOff()
public static final boolean isRpcOff()
public static void turnBizOn()
public static void turnBizOff()
public static final boolean isBizOff()
public static int getSamplingInterval()
public static void setSamplingInterval(int interval)
interval - 采样频率 1/x,有效范围在 [1, 9999] 之间,超出范围的数值都作为全采样处理。public static void setUserDataEnabled(boolean enable)
enable - public static final boolean isUserDataEnabled()
public static void setLogDumpEnabled(boolean enable)
enable - public static final boolean isLogDumpEnabled()
public static void startTrace(String traceId, String traceName)
traceId - 全局唯一的id,如果传入的值为空或者null,系统会自动生成traceName - 用户自定义的入口标识值,不能为 null, 建议传入能够唯一标识入口的数据,例如用户访问网络的 http urlpublic static void startTrace(String traceId, String rpcId, String traceName)
traceId - 全局唯一的id,如果传入的值为空或者null,系统会自动生成rpcId - 额外指定 rpcId,如果为 null,使用 ROOT_RPC_IDtraceName - 用户自定义的入口标识值,不能为 null, 建议传入能够唯一标识入口的数据,例如用户访问网络的 http urlpublic static void endTrace(String resultCode, int type)
resultCode - type - public static Object currentRpcContext()
重新还原 RpcContextpublic static RpcContext_inner getRpcContext()
还原 RpcContextpublic static RpcContext_inner createRootRpcContext(String traceId, String rpcId)
traceId - 输入 null 会自动生成rpcId - 输入 null 会使用 MAL_ROOT_RPC_ID 代替public static RpcContext_inner createRpcContextFromMap(Map<String,String> map)
map - nullRpcContext_inner.toMap()public static void setRpcContext(Object rpcCtx)
getRpcContext() 的返回值, 也可以是 currentRpcContext() 的返回值。rpcCtx - RPC调用上下文,可以为null,表示清空当前Threadlocal变量, 该接口不允许业务方调用,只允许 rpc 层调用。直接获取 RpcContext 对象,不做 Map 转换,
获取用于序列化、网络传输的 RpcContext 对象public static void setRpcContext(RpcContext_inner context)
context - 通过传入context,设置threadlocal变量直接获取 RpcContext 对象public static void clearRpcContext()
public static void commitRpcContext(RpcContext_inner ctx)
ctx - public static RpcContext_inner popRpcContext()
类似用法,但不记日志public static void dump(String appId, String operationKey, Object obj, Object... params)
appId - 应用标识operationKey - 业务操作字段,或调用的服务名、方法名obj - 业务返回值,或业务对象,可以输入 null,或者 Void.TYPEparams - 业务参数列表,可以为空public static void dumpImportant(String appId, String operationKey, Object obj, Object... params)
appId - 应用标识operationKey - 业务操作字段,或调用的服务名、方法名obj - 业务返回值,或业务对象,可以输入 null,或者 Void.TYPEparams - 业务参数列表,可以为空仅存在 dump 标记时才输出的 APIpublic static void startRpc(String serviceName, String methodName)
serviceName - 服务名称methodName - 方法名称public static void startLocal(String serviceName, String methodName)
serviceName - 服务名称methodName - 方法名称public static void endLocal(String resultCode, String appendMsg)
appendMsg - 客户端日志追加的信息, 不能有回车换行等符号public static void endLocal(String resultCode, String bizResultCode, String appendMsg)
resultCode - 设置调用状态码,一般用 RPC_RESULT_SUCCESS 表示正常,RPC_RESULT_FAILED 表示错误bizResultCode - 设置业务状态码appendMsg - 客户端日志追加的信息, 不能有回车换行等符号,可以为 nullpublic static void rpcClientSend()
public static void rpcClientRecv(String resultCode, int type)
resultCode参考 - RPC_RESULT_开头的结果码。有响应表示RPC成功,但业务上有可能还是失败,因此有不同的结果码。type - 类型为:TYPE_TRACE,TYPE_HSF_CLIENT,TYPE_TDDL,TYPE_NOTIFY,TYPE_TAIR,TYPE_SEARCHpublic static void rpcClientRecv(String resultCode, int type, String appendMsg)
resultCode参考 - RPC_RESULT_开头的结果码。有响应表示RPC成功,但业务上有可能还是失败,因此有不同的结果码。type - 类型为: TYPE_TRACE, TYPE_HSF_CLIENT,TYPE_TDDL,TYPE_NOTIFY,TYPE_TAIR,TYPE_SEARCHappendMsg - 客户端日志追加的信息, 不能有回车、换行、“|” 等符号public static void rpcServerSend(String resultCode, int type)
resultCode参考 - RPC_RESULT_开头的结果码。有响应表示RPC成功,但业务上有可能还是失败,因此有不同的结果码。type - 类型为: TYPE_HSF_SERVER,TYPE_NOTIFYpublic static void rpcServerSend(String resultCode, int type, String appendMsg)
resultCode参考 - RPC_RESULT_开头的结果码。有响应表示RPC成功,但业务上有可能还是失败,因此有不同的结果码。type类型为: - TYPE_TRACE, TYPE_HSF_CLIENT,TYPE_TDDL,TYPE_NOTIFY,TYPE_TAIR,TYPE_SEARCHappendMsg客户端日志追加的信息, - 不能有回车、换行、“|” 等符号public static String getTraceId()
public static String getRpcId()
public static String getLocalId()
public static void attribute(String key, String value)
putUserData(String,String) 不同, attribute 不会跟随 rpc
调用传递,只对本地当前的这一次 RPC 有效key - value - putUserData(String,String)public static String getUserData(String key)
key - 不能为空public static String putUserData(String key, String value)
attribute(String,String)key - 不能为空value - 值,不能有回车、换行、“|” 等符号public static Map<String,String> getUserDataMap()
getUserData(String)public static String exportUserData()
public static void callBack(String msg)
msg - 用户希望追加的内容,不能有回车、换行、“|” 等符号public static void requestSize(long size)
size - public static void remoteIp(String remoteIp)
remoteIp - 远程机器ip地址public static void responseSize(long size)
size - public static void traceName(String traceName, String iToken)
traceName - 新的 URL,如果为 null,则不设置 traceNameiToken - 新的 iToken 标记,如果为 null,则按当前 traceName 自动生成public static void resultCode(String resultCode)
endTrace(String, int)、rpcClientRecv(String, int)、
rpcServerSend(String, int) 设置的 resultCode 都会被忽略resultCode - 仅设置业务的状态码,
设置业务的状态码,且设置调用的状态码为错误public static void bizErrorCode(String bizErrorCode)
public static void bizResultCode(String bizResultCode)
bizResultCode - 仅设置调用的状态码,
设置业务的状态码,且设置调用的状态码为错误public static String generateTraceId(String ip)
ip - 用户出入的ip地址,如果非法或者为空,则使用当前机器的ip地址public static String generateMulticastRpcId(String rpcId, String identifier)
rpcId - 当前的 RPC Ididentifier - 保留用(如果有比 ip 更适合的标识符,可以允许外部指定public static String index(String msg)
msg - 需要编码的消息public static void addRpcContextListener(EagleEyeContextListener listener)
listener - public static boolean removeRpcContextListener(EagleEyeContextListener listener)
listener - public static void selfLog(String log)
public static void init()
public static void flush()
public static void shutdown()
Copyright © 2018. All rights reserved.