如题,java 后端一枚,请教诸位大佬,公司的项目,数据库都部署在阿里云服务上,偶尔会发现某个数据库请求超时,但是找不到在这个时间段是哪些请求过多导致的。想问问有什么方案或者工具或者其他能够统计指定时间范围内的接口访问频次,时间么?还是说这种情况要查询数据库的 SQL 耗时?请教。
1
beneo 347 天前 2
购买 阿里云 ARMS 服务
|
2
salmon5 347 天前 1
正常公司
购买 ARMS √ 2B 公司 自己开 ECS 搭建 SkyWalking × |
3
irisShaw 347 天前 1
如果配置了 access.log 的话,配合 awk 和 sed 可以统计。不过最简便的还是买阿里云的服务。
|
5
fengpan567 347 天前 1
去统计 nginx 的日志
|
6
sunsun 347 天前 1
目前负责的小项目数据库用的是 aws RDS ,一般排查都是直接去 performance insight 里面看哪些 sql 调用的多,具体的耗时也都有,这个功能也是后来同事小伙伴发现的(需要手动开启),不知道阿里云有没有这样的功能可以开启
|
7
chocotan 347 天前 1
自己玩儿可以用 micrometer 然后输出到 promethues 用 grafana 展示
|
9
seanxx 347 天前 1
micrometer 自己埋点
|
10
stonerAAA OP 感谢楼上的诸位大佬,关于上 ARMS ,花钱的事我司是不会同意的,刚刚在生产环境 kibana 翻了翻,发现有个 APM 有类似的的功能,我再看看。
|
12
ikas 347 天前 4
1.指标采集:
spring boot actuator 采集数据> promethues > grafana. 1.监控系统使用:promethues 2.可视化使用:grafana,可以导入市场上的监控仪表配置 3.系统,如果是 spring,直接上 spring boot actuator 模块 2.调用链采集: opentelemetry > zipkin > grafana 1.使用 opentelemetry 的 javaagent 采集链路数据 2.zipkin 存储链路数据 ,存盘可以用 elasticsearch 3.日志采集 promtail > loki > grafana 1.配置日志格式,使用 promtail 采集 2.使用 loki 作为日志检索与存储 以上三个目前在用,通过 traceId,统一使用 grafana 作为展示,链路展示关联日志,基本每个方法调用耗时,详细都很清楚了 ---- 当然,使用 opentelemetry 即可很方便的采集指标,链路,日志,如果是 springboot3.2,spring boot actuator +opentelemetry 很方便 |
13
arloor 347 天前 via Android
为什么推荐 arms 不推荐 sls
|
14
SilenceLL 346 天前
apm ,skywalking
|
15
Aresxue 346 天前 2
典型的 apm 场景,这块做的最好是 arms ,支持接口统计、聚合和下钻,不想花钱就自己整 pinpoint 或 skywalking ,parms 就是基于 pinpoint 改的,你甚至还能在 arms 的 agent 看见 pinpoint 的包名。。pinpoint 的问题就是吃资源,性能开销大但是相对好用,可以临时上上去跑一段时间查查问题,查完了再下掉。skywalking 可以作为长久方案,性能开销确实小一些,但自带的 ui 太难用,对于你这个问题各种聚合信息你可能还需要自己去 es 里面查,而且由于其实极其复杂维护是个老大难的问题。
易用性:arms > pinpoint > skywalking 性能开销:arms = pinpoint > skywalking 可维护性: arms > pinpoint > skywalking 只针对问题本身也可以通过别的方式解决,首先保证数据库请求超时会输出异常日志,核心信息是时间,然后就是统计 http 接口的信息,nginx 、tomcat 、spring-boot-starter-actuator 、jmx 都可以做这件事情,最好用的是 spring-boot-starter-actuator 结合 promethues ,可以清楚的看到每个接口在指定时间段的频次、rt ,从 grafana 上直接就能看出流量的峰谷。 |
16
wanniwa 346 天前
skywalking
|