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();
}