💠

💠 2024-11-11 11:02:40


APM

Application performance Management 分布式链路追踪,技术或业务指标监控告警

核心为 可观测性(Observability) 监测(Monitoring)

Github: APM

Glowroot技术指标 Web SQL JVM JMX监控,agent方式支持单机和集群(存储使用cassandra)

Pinpoint JavaMelody Scouter Stagemonitor MoSKito

OpenTelemetry

Github: OpenTelemetry

CNCF组织的项目,脱离语言和技术架构,更有发展前景的可观测性项目。

SkyWalking

Official Site | Downloads]

server | ui

1
2
docker run --name oap -p 12340:1234 -p 11800:11800 -p 12800:12800  -d apache/skywalking-oap-server:8.3.0-es6
docker run --name oap-ui -p 8080:8080 -d -e SW_OAP_ADDRESS=http://192.168.7.54:12800 apache/skywalking-ui

应用启动 java -javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=xxxtest -Dskywalking.collector.backend_service=127.0.0.1:11800 -jar application.jar


Sentry

Github

Docker compose 部署

感知应用异常:

UncaughtExceptionHandlerIntegration + LogAppender


CAT

陆金所 CAT 优化实践

Github: cat-docker
深度剖析开源分布式监控CAT

感知应用异常:

  1. 实现日志框架的Appender基类,捕获Error到 Cat.logError,并手动声明该Appender到配置文件中
  2. 手动设置静态的默认全局异常处理Thread.setDefaultUncaughtExceptionHandler,防止异常漏捕获。
    • SpringBoot项目里发生机率较小,因为基本都有Controller层的全局异常处理,且大部分请和逻辑从web端进入。
    • 只有自定义线程池,Scheduler线程池,Junit等地方,未捕获运行时异常,才会走默认逻辑异常栈被输出到标准错误 System.err 中。

采集客户端


Monitoring

技术指标监控告警,离业务指标比较远,例如 主机,数据库,容器,网络

Prometheus

Github: Prometheus

通常和 Grafana 结合使用

Prometheus+Grafana监控SpringBoot项目JVM信息 JMX Exporter JVM 接入 Prometheus手动声明HTTP

Prometheus running on Kubernetes

默认是拉模式,如果想通过推模式采集应用端信息需要借助 PushGateway 组件