🚀 优质资源分享 🚀
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
💛Python量化交易实战💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
其他功能
性能剖析
在系统性能监控方法上,Skywalking 提出了代码级性能剖析这种在线诊断方法。这种方法基于一个高级语言编程模型共性,即使再复杂的系统,再复杂的业务逻辑,都是基于线程去进行执行的,而且多数逻辑是在单个线程状态下执行的;代码级性能剖析就是利用方法栈快照,并对方法执行情况进行分析和汇总;并结合有限的分布式追踪 span 上下文,对代码执行速度进行估算。有如下优势:
- 精确的问题定位,直接到代码方法和代码行
- 无需反复的增删埋点,大大减少了人力开发成本
- 不用承担过多埋点对目标系统和监控系统的压力和性能风险
- 按需使用,平时对系统无消耗,使用时的消耗稳定可能
SkyWalking的跟踪或者说性能剖析,选择某个服务
根据选择端点的名称及相应的规则建立任务,后续再调用任务列表的端口会自动记录剖析剖析当前端口数据并生成剖析结果
为了更好演示在库存微服务的创建订单方法中增加一个睡眠3秒,然后重新启动订单微服务
再次多次访问创建订单接口 http://localhost:4070/order/create/1000/1001/2 ,需要连续执行多次请求,因为存在采样设置。如果执行次数少,可能不会出现采样数据,每个服务,相同时间只能添加一个任务,添加的任务不能更改,也不能删除,只能等待过期后自动删除。
日志
在库存和订单微服务中引入依赖
org.apache.skywalking
apm-toolkit-logback-1.x
8.11.0
在库存和订单微服务中,增加分布式链路追踪ID在logback.xml加入如下配置,[%tid]
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%nPattern>
layout>
encoder>
appender>
gRPC reporter上报日志在logback.xml加入如下配置:
<appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%nPattern>
layout>
encoder>
appender>
访问订单接口 http://localhost:4070/order/create/1000/1001/2,查看订单和库存微服务的日志中已带有 TID
也通过GRPC上传到SkyWalking后端,通过Log页面可以查看日志信息
可以通过TID查询对应日志详细信息
告警
在config/alarm-settings.yml ,已经默认若干项告警,我们简单修改告警信息内容,增加一串标识"Itxs Alarm"例如,配置webhooks
rules:
# Rule unique name, must be ended with `\_rule`.
service\_instance\_resp\_time\_rule:
metrics-name: service\_instance\_resp\_time
op: ">"
threshold: 1000
period: 10
count: 2
silence-period: 5
message: Itxs Alarm esponse time of service instance {name} is more than 1000ms in 2 minutes of last 10 minutes
endpoint\_relation\_resp\_time\_rule:
metrics-name: endpoint\_relation\_resp\_time
threshold: 1000
op: ">"
period: 10
count: 2
message: Itxs Alarm esponse time of endpoint relation {name} is more than 1000ms in 2 minutes of last 10 minutes
webhooks:
- http://192.168.4.210:8080/alarm/
新建一个webhooks接口服务端,创建AlarmMessage实体类
package com.aotain.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AlarmMessage implements Serializable {
private String scopeId;
private String scope;
private String name;
private String id0;
private String id1;
private String ruleName;
//告警的消息
private String alarmMessage;
//告警的产生时间
private Long startTime;
}
创建一个控制器AlarmController,提供/