skywalking 是一个全链路监控系统,用于分析和串起微服务间的各种指标。主要有三部分构成:探针、后端、前端UI. 1、探针 探针就是一个agent,随着spring容器的启动而一起启动。类似AspectJ通过操作字节码达到效果。 agent.config:
agent.service_name=${SW_AGENT_NAME} #显示的服务名
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES} #后端的Ip地址
logging.level=${SW_LOGGING_LEVEL:DEBUG}
启动参数:
-javaagent:/ifsps/agent/skywalking-agent.jar -Dskywalking.agent.service_name=aaa
2、后端 application.yml 主要配置
cluster:
  standalone:
core:
  default:
    role: ${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator
    restHost: ${SW_CORE_REST_HOST:0.0.0.0}
    restPort: ${SW_CORE_REST_PORT:12800}
    restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/}
    gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0}
    gRPCPort: ${SW_CORE_GRPC_PORT:11800}
    downsampling:
    - Hour
    - Day
    - Month
    # TTL为各种数据过期时间
    recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:2880} # Unit is minute
    minuteMetricsDataTTL: ${SW_CORE_MINUTE_METRIC_DATA_TTL:90} # Unit is minute
    hourMetricsDataTTL: ${SW_CORE_HOUR_METRIC_DATA_TTL:36} # Unit is hour
    dayMetricsDataTTL: ${SW_CORE_DAY_METRIC_DATA_TTL:45} # Unit is day
    monthMetricsDataTTL: ${SW_CORE_MONTH_METRIC_DATA_TTL:18} # Unit is month
#使用ES作为数据存储
storage:
  elasticsearch:
    nameSpace: ${SW_NAMESPACE:"skywalking"} #名字要和ES的cluster.name一致
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:}
3、前端 可以使用默认配置,直接打开前端页面即可。
关键点在于traceId skywalking中使用traceID来串联整个链路的交易,可以通过将这个ID打印进日志达到关联的目的。
<dependency>
  <groupId>org.apache.skywalking</groupId>
  <artifactId>apm-toolkit-trace</artifactId>
  <version>6.0.0-GA</version>
</dependency>
@Trace
@Around("logPrint()")
public Object AroundFoo(ProceedingJoinPoint jp) throws Throwable {
   String traceId=TraceContext.traceId();
}