庄河建网站苏州建设工程材料信息价
- 作者: 五速梦信息网
- 时间: 2026年04月20日 05:02
当前位置: 首页 > news >正文
庄河建网站,苏州建设工程材料信息价,网页开发公司,wordpress 碎语一#xff0c;背景 随着业务的扩张#xff0c;系统变得越来越复杂#xff0c;由前端、app、api、微服务、数据库、缓存、消息队列、关系数据库、列式数据库等构成了繁杂的分布式网络。 当出现一个调用失败的问题时#xff0c;要定位异常在哪个服务#xff0c;需要进入每一… 一背景 随着业务的扩张系统变得越来越复杂由前端、app、api、微服务、数据库、缓存、消息队列、关系数据库、列式数据库等构成了繁杂的分布式网络。 当出现一个调用失败的问题时要定位异常在哪个服务需要进入每一个服务里看日志这个过程的复杂度和工作量是不可想象的。 当讲到大型微服务系统时 下面这张图经常被引用到。 为了解决故障定位难链路梳理难容量预估难的问题一般引入APM体系统来解决而链路追踪则是APM中尤为重要的一环。有了链路追踪 我们可以做到 请求链路追踪故障快速定位可以通过调用链路并结合业务日志快速定位问题所在可视化展示各阶段耗时, 进行性能瓶颈分析应用拓扑梳理服务依赖关系并加以优化数据分析汇总分析用户的行为路径 二术语 APM: 应用系统的实时监控,用于实现性能管理和故障管理 Dapper: google一篇论文里提到, 主要详谈分布式跟踪服务的设计 prometheus 服务监控系统 grafana度量分析和可视化工具 zipkin分布式的跟踪系统 cat 大众点评开发的实时应用监控平台 skywalkingApache顶级项目的链路跟踪系统 ELKElasticsearch、Logstash和Kibana三大开源框架 EFKelasticsearch、filebeat和kibana Filebeatgolang实现的日志采集器 三APM主要解决的问题 Metrics集中式度量系统 (prometheusgrafana),用于可聚合的数据Tracing分布式全链接追踪系统 (zipkin,cat,skywalking等),用于请求范围内的信息Loging集中日志系统 (ELK, EFK, FilebeatELK),用于记录离散的事件 三者有相互重叠的部分 四技术选型 阿里的鹰眼, 点评的cat闭源或侵入式zipkin可视化方面做得太简单 这个三个框架从技术选型上排除掉。下面主要从pinpoint和skywalking这两个作对对比 对比项PinpointSkywalkingopentracing否是协议thriftgRPC存储hbasemysqles,mysql,h2,tidbui丰富度高一般代码侵入式无低性能损耗高低部署难度高低 通过对比可以看到Pinpoint和Skywalking不相上下各有优劣从界面、操作集成方式来说Pinpoint更好, 不过因为种种不得已的原因我们今天还是聚焦在Skywalking上它的优点是部署难度低监控范围广、维度多对代码侵入少系统性能损失低还支持接入 ELK 进行存储展示。 其他限制 1.只支持已知的代理如果使用的中间件还未被支持需要自己写插件。 2.跨线程的场景不支持自动代理比如任务分配任务池批处理的场景。 五skywalking原理 什么是span 下图描述的是树结构的Span集合表示一次完整的跟踪从请求到服务器开始服务器返回response结束跟踪每次rpc调用的耗时存在唯一标识trace_id。 什么是skywalking 客户端是通过Agent与Collector相连接然后Collector将数据存储在Es中。监控页面是连接的CollectorCollector从Es中将数据查询出来。直接和数据打交道的是Collector。 六部署 1, 部署elk docker run -dit –name elk \ -p 5601:5601 \ -p 9200:9200 \ -p 5044:5044 \ -v /data/elk-data:/var/lib/elasticsearch \ -v /etc/localtime:/etc/localtime \ sebp/elk:700 2安装Skywalking server docker run –name oap –restart always -d \ -e TZAsia/Shanghai \ -p 12800:12800 \ -p 11800:11800 \ –link elk:es7 \ -e SW_STORAGEelasticsearch7 \ -e SW_STORAGE_ES_CLUSTER_NODESes7:9200 \ apache/skywalking-oap-server:8.2.0-es7 docker run -d –restart always –name skywalking-ui \ -e TZAsia/Shanghai \ -p 18080:8080 \ –link oap:oap \ -e SW_OAP_ADDRESSoap:12800 \ apache/skywalking-ui:8.2.0 访问地址http://服务器IP/18080 七无侵入跟踪采集 注意Skywalking并不是无侵入的只是可以用无侵入这种来用实际上要用traceId查询的话还是要侵入代码这是它不安全的地方 1如果是准备用无侵入的方式接入采集的话agent-jar包所在的下载地址 1, 下载wget https://dlcdn.apache.org/skywalking/java-agent/9.0.0/apache-skywalking-java-agent-9.0.0.tgz 2, 解压缩 tar -zxvf apache-skywalking-java-agent-9.0.0.tgz 3, 在解压后的文件夹中有 skywalking-agent.jar 2运行jar时,加入jvm选项 -javaagent:\path\skywalking-agent.jar -Dskywalking.agent.service_name\({service_name} -Dskywalking.collector.backend_service\){ip}:{port}注意:上面一行要放在 -jar选项之前 例如 java -javaagent:/root/apm/skywalking-agent.jar -Dskywalking.agent.service_namemyName -Dskywalking.collector.backend_service127.0.0.1:11800 -jar xxxx.jar 八侵入式记录traceid到日志 1引入pom dependencygroupIdorg.apache.skywalking/groupIdartifactIdapm-toolkit-trace/artifactIdversion6.5.0/version /dependency 2, 修改log4j.xml的pattern 日志展现结果, 有了traceid,parrent spanid, spanid, 使得有ELK统一日志系统把具体业务 PatternLayout pattern[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-5level [%X{TRACE_ID},%X{SPAN_ID}] - %msg%xEx%n/ 3, filter的实现 Component public class TraceIdFilter extends OncePerRequestFilter {private static final String TRACE_ID TRACE_ID;private static final String SPAN_ID SPAN_ID;private static final String SPAN_PID SPAN_PID;Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)throws ServletException, IOException {String traceId TraceContext.traceId();if(null traceId){chain.doFilter(request, response);return;}String spanPid request.getHeader(SPAN_PID);// 生成spanIdString spanId;if(spanPid null){spanPid 0;spanId 1;}else {spanId String.valueOf(Integer.valueOf(spanPid) 1);}SpanContext.getContext().initContext(spanId);MDC.put(TRACE_ID, traceId);MDC.put(SPAN_ID, spanId);MDC.put(SPAN_PID, spanPid);chain.doFilter(request, response);}Overridepublic void destroy() {MDC.clear();} } 4, feign拦截器的实现 public class FeignClientInterceptor implements RequestInterceptor {private static final String SPAN_PID SPAN_PID;Overridepublic void apply(RequestTemplate requestTemplate) {try {SpanContext spanContext SpanContext.getContext();if (Objects.nonNull(spanContext)) {requestTemplate.header(SPAN_PID, spanContext.getSpanId());}} catch (Exception e) {e.printStackTrace();}} } SpanContext Data public class SpanContext {private String spanId;private static ThreadLocalSpanContext LOCAL new ThreadLocal();public static SpanContext getContext() {SpanContext context LOCAL.get();if (Objects.isNull(context)) {context new SpanContext();LOCAL.set(context);}return context;}/*** 初始化*/public void initContext(String spanId){this.spanId spanId;} } 九UI界面 简单记录一下实际上我是不喜欢这个工具没有PP好用 码字不易记得点赞关注哟
- 上一篇: 撰写网站建设技术解决方案黄页网推广服务
- 下一篇: 装饰工程施工工艺流程seo是什么服务器
相关文章
-
撰写网站建设技术解决方案黄页网推广服务
撰写网站建设技术解决方案黄页网推广服务
- 技术栈
- 2026年04月20日
-
赚钱的十大个人网站淘宝客的wordpress模板
赚钱的十大个人网站淘宝客的wordpress模板
- 技术栈
- 2026年04月20日
-
转塘有做网站的吗网站图标怎么做的
转塘有做网站的吗网站图标怎么做的
- 技术栈
- 2026年04月20日
-
装饰工程施工工艺流程seo是什么服务器
装饰工程施工工艺流程seo是什么服务器
- 技术栈
- 2026年04月20日
-
装饰公司手机网站建设全网关键词搜索排行
装饰公司手机网站建设全网关键词搜索排行
- 技术栈
- 2026年04月20日
-
装饰公司网站建站网站建设 力洋网络
装饰公司网站建站网站建设 力洋网络
- 技术栈
- 2026年04月20日






