javassist 增强es日志

  1. 背景
    为了保障线上每条日志耗时情况可以定位,需要针对每个查询新增qid来标识,并且记录每条查询的每个shard在每台机器上的耗时情况。
  2. ClassFileTransformer
    主要分成三步:
    2.1 SearchRequestTransformer
    该类实现自ClassFileTransformer, 主要是在elasticsearch的SearchRequest类加上一个qid属性,并生成getQid和setQid方法
    2.2 RestSearchActionTransformer
    该类实现自ClassFileTransformer, 获取到parseSearchRequest方法,把request中的qid参数赋值给searchRequest对象中的Qid
    2.3 AbstractSearchAsyncActionTransformer
    该类实现自ClassFileTransformer, 获取AbstractSearchAsyncAction类,在onShardResult中insetBefore方法获取到每个shard执行的耗时情况。并且生成一个Logger对象(LogManager.getLogger(name) ,name为log4j2.properties中logger的名称,这样可以保证日志写入到指定文件中)

你可能感兴趣的:(javassist 增强es日志)