阿里云日志服务搜索关键字

场景

项目中接入了阿里云日志服务,比起以前自己搭建的ELK日志体系,云上的服务优点是接入简单,提供了易用的web ui界面方便查询日志。
省了自己搭建日志监控体系,但缺点是完全依赖云服务,没法自己定制,需要仔细阅读文档才能在日常工作更好地运用。

问题

昨天搜索某服务日志时遇到一个问题:
项目里的代码是这样打印日志的:

logger.error("开始重置XXX. 开始时间: {}", DateUtil.now());

复制开始重置XXX做为关键字,发现搜索不到。排除时间筛选问题,该日志每2小时会打印2次,在最近30天也搜不到。

解决

根据以往查日志的经验,关键字有可能被分词了。同时注意到代码里重置XXX后面有一个英文的点.
关键字加上该.后,开始重置XXX.,日志成功搜索到了。

通过后面加通配符的方式也能搜索到,即:开始重置*

备忘

日志查询常用:

  • 通过""转义特殊字符
    例:"productCode"":""xxx"
    // 冒号通过":"转义,如果直接"mcuCode":"gb510553599",能搜索出来但不是紧邻

  • 通过andormessage:
    例:请求限流 and message: "product/detail"

  • 通过| + 查询语法
    例:

请求限流 |
select date_format(__time__,'%Y-%m-%d') as day, count(*) as count
group by day
order by day
请求限流 |
SELECT regexp_extract(message,'(.*uri=)(.*)(,rule.*)',2) uri,
count(*) as count
group by uri
XXX and message: XXX,请耐心等待  |
select
  regexp_extract(message, '"userId":(?<userID>\d+)', 1) userID,
  count(*) as count
GROUP BY
  userID
ORDER BY
  count DESC limit 1000
traceId and 处理单个门店结束 |
select
  regexp_extract(message,'门店编码=(?<depotCode>[a-zA-Z]+?\d+)', 1) depotCode,regexp_extract(message,'商品\((?<productSize>\d+)', 1) productSize,cast(regexp_extract(message, ',耗时=(?<timeCost>\d+)', 1) as integer) timeCost
ORDER BY
  timeCost desc limit 1000
posted @ 2021-03-26 22:23  cdfive  阅读(1636)  评论(0编辑  收藏  举报