一、链路追踪

1、涉及的插件elasticsearch7.0.0、skywalking-oap-server:8.9.1、skywalking-ui:8.9.1、skywalking-agent 8.7.0

2、原理

3、实现

3.1、docker-command yml文件配置

version: '3'
services:elasticsearch:image: elasticsearch:7.0.0container_name: elasticsearchrestart: alwaysports:- 9200:9200- 9300:9300environment:discovery.type: single-nodeTZ: Asia/Shanghaiskywalking-server:image: apache/skywalking-oap-server:8.9.1container_name: skywalking-serverdepends_on:- elasticsearchlinks:- elasticsearchrestart: alwaysports:- 11800:11800- 12800:12800environment:TZ: Asia/ShanghaiSW_STORAGE: elasticsearchSW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200volumes:- ./skywalking/alarm-settings.yml:/skywalking/config/alarm-settings.ymlskywalking-ui:image: apache/skywalking-ui:8.9.1container_name: skywalking-uidepends_on:- skywalking-serverlinks:- skywalking-serverrestart: alwaysports:- 8081:8080environment:SW_OAP_ADDRESS: http://skywalking-server:12800TZ: Asia/Shanghai
networks:monitor:driver: bridge

3.2、alarm-settings.yml 默认配置

rules:service_resp_time_rule:metrics-name: service_resp_timeop: ">"threshold: 1000period: 10count: 3silence-period: 5message: Response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes.service_sla_rule:metrics-name: service_slaop: "<"threshold: 8000period: 10count: 2silence-period: 3message: Successful rate of service {name} is lower than 80% in 2 minutes of last 10 minutesservice_resp_time_percentile_rule:metrics-name: service_percentileop: ">"threshold: 1000,1000,1000,1000,1000period: 10count: 3silence-period: 5message: Percentile response time of service {name} alarm in 3 minutes of last 10 minutes, due to more than one condition of p50 > 1000, p75 > 1000, p90 > 1000, p95 > 1000, p99 > 1000service_instance_resp_time_rule:metrics-name: service_instance_resp_timeop: ">"threshold: 1000period: 10count: 2silence-period: 5message: Response time of service instance {name} is more than 1000ms in 2 minutes of last 10 minutesdatabase_access_resp_time_rule:metrics-name: database_access_resp_timethreshold: 1000op: ">"period: 10count: 2message: Response time of database access {name} is more than 1000ms in 2 minutes of last 10 minutesendpoint_relation_resp_time_rule:metrics-name: endpoint_relation_resp_timethreshold: 1000op: ">"period: 10count: 2message: Response time of endpoint relation {name} is more than 1000ms in 2 minutes of last 10 minutes
webhooks:

3.3、idea添加vm参数配置启动

-javaagent:H:\space\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-DSW_AGENT_NAME=film-server
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.1.9:11800

3.4、效果:链路、vm等查看

二、elk标准日志收集

1、涉及的技术栈:elasticsearch、logstash、kibana、kafka、zookeeper

2、原理

3、服务器实现

3.1、docker-command的yml配置

version: '3'
services:elasticsearch:image: elasticsearch:7.0.0container_name: elasticsearchrestart: alwaysports:- 9200:9200- 9300:9300environment:discovery.type: single-nodeTZ: Asia/Shanghaikibana:image: kibana:7.0.0container_name: kibanaports:- 5601:5601depends_on:- elasticsearchlinks:- elasticsearch:esenvironment:- "elasticsearch.hosts=http://es:9200"restart: alwayslogstash:image: logstash:6.4.0container_name: logstashvolumes:- ./logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.confdepends_on:- elasticsearchlinks:- elasticsearch:esports:- 4560:4560kafka:image: wurstmeister/kafkaports:- "9092:9092"environment:KAFKA_ADVERTISED_HOST_NAME: 192.168.1.9KAFKA_CREATE_TOPICS: "test:1:1"KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181volumes:- /var/run/docker.sock:/var/run/docker.sockports:- 6379:6379zookeeper:image: zookeeper:3.5ports:- 2181:2181 volumes:- ./zookeeper/data:/zk/data- ./zookeeper/conf:/zk/conf
networks:monitor:driver: bridge

3.2、logstash.conf基本配置

input {  #logstash直接收集日志的tcp端口tcp {mode => "server"host => "0.0.0.0"port => 4560codec => json_lines}
}
output {  #logstash将收集到的日志发送到es里存储elasticsearch {hosts => "es:9200"index => "springboot-logstash-%{+YYYY.MM.dd}"}
}

3.3、logstash安装插件

[root@anonymous dev]# docker exec  -it logstash /bin/bash
bash-4.2$ cd /bin/
bash-4.2$ logstash-plugin install logstash-codec-json_lines
bash-4.2$ exit
[root@anonymous dev]# docker restart logstash

4、微服务配置

4.1、导入pom依赖

 <!--集成logstash--><dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>5.3</version></dependency>

4.2、在resources新增xml配置并重启微服务

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration><include resource="org/springframework/boot/logging/logback/defaults.xml"/><include resource="org/springframework/boot/logging/logback/console-appender.xml"/><!--应用名称--><property name="APP_NAME" value="common-ser"/><!--日志文件保存路径--><property name="LOG_FILE_PATH" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/logs}"/><contextName>${APP_NAME}</contextName><!--每天记录日志到文件appender--><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>30</maxHistory></rollingPolicy><encoder><pattern>${FILE_LOG_PATTERN}</pattern></encoder></appender><!--输出到logstash的appender--><appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--可以访问的logstash日志收集端口--><destination>192.168.1.9:4560</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/></appender><root level="INFO"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE"/><appender-ref ref="LOGSTASH"/></root>
</configuration>

4.3、打开kibaba( 我的本地地址是http://192.168.1.9:5601/)配置,选择@timestamp完成

4.4、利用sentinel限流异常制造点日志

三、高并发场景日志收集升级

1、将服务器logstash.conf中的input的tcp修改为

  kafka {id => "kafka_input_9527"  #随便写bootstrap_servers => "192.168.1.9:9092"topics => ["test"]auto_offset_reset => "latest"}

2、修改微服务配置

2.1、新增pom依赖

<dependency><groupId>com.github.danielwegener</groupId><artifactId>logback-kafka-appender</artifactId><version>0.2.0-RC2</version>
</dependency>

2.2、将resources-->xml 中 logstash的appender替换成kafka的appender

 <!--输出到kafka的appender--><appender name="KAFKA" class="com.github.danielwegener.logback.kafka.KafkaAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder><topic>test</topic><!-- 不关心key的分区策略 --><keyingStrategy class="com.github.danielwegener.logback.kafka.keying.NoKeyKeyingStrategy" /><!-- 异步发送消息,不会阻塞应用程序 --><deliveryStrategy class="com.github.danielwegener.logback.kafka.delivery.AsynchronousDeliveryStrategy" /><producerConfig>bootstrap.servers=192.168.1.9:9092</producerConfig><!-- 不需要等待kafka的ack确认,对于日志数据一般都选这种,可能会丢一点日志,但是关系不大  --><producerConfig>acks=0</producerConfig><!-- 如果kafka挂了,日志会发送到console上  --><appender-ref ref="CONSOLE"/>  </appender>

2.3、改后的效果参考

微服务架构-链路追踪、日志收集篇相关推荐

  1. 微服务架构--链路追踪(Nginx篇)

    阅读提示:本文不提供链路追踪的完整解决方案,只提供Nginx层对链路追踪的支持方案! 1 背景介绍 微服务的诞生,解决了传统单体应用的很多问题,如可维护性差.扩展性差和灵活性差等问题(粗粒比较).微服 ...

  2. cx_oracle写日志信息_浅谈微服务架构之构建日志收集系统

    任何复杂的应用程序偶尔都会出现错误.在微服务应用程序中,需要跟踪几十甚至几百个服务发生的情况.要获取系统的整体视图,日志记录和监控至关重要.在微服务架构中,一个业务请求会经历多个服务,收集端到端链路上 ...

  3. SpringCloud微服务-----skywalking链路追踪

    微服务架构已经是一个很通用的系统架构,常见的技术栈如下图所示,这张架构图基本涵括了当前微服务体系下的各种技术栈,可能不同的技术栈有不同的开源实现. 链路追踪介绍 对于一个大型的几十个,几百个微服务构成 ...

  4. Sleuth + Zipkin 微服务分布式链路追踪

    在开发环境中对业务问题的排查可以debugger计算时差等问题进行处理,如果架构复杂微服务嗲用众多,这样的方式就显得鸡肋. 如何快速发现问题? 如何判断故障影响范围? 如何梳理服务依赖以及依赖的合理性 ...

  5. 微服务架构开发实战日志与监控:微服务日志管理将面临的挑战

    微服务的日志与监控:微服务日志管理将面临的挑战 日志来自正在运行的进程的事件流.对于传统的JavaEE应用程序而言,有许多框架和库可用于日志记录.Java Logging (JUL)是Java自身所提 ...

  6. 《自学SpringCloud微服务架构》之第 1 篇 —— 微服务的自我修养

    序言: 我们先看看2019年中国首富排行榜.嗯,99%的财富掌握在1%的人手里.没错的,这个时代,是富豪们玩转手里的棋子的时代,而我们都是看客.本人已毕业四年,却还是一如既往的做着毕业生都能做的敲代码 ...

  7. 【微服务】链路追踪 jaeger

    最近做了一点traces相关的工作,看了关于jaeger的一些内容,来水一篇.(艰难地保持着一月一篇) 为什么需要链路追踪 随着应用的发展,分布式是不可避免的趋势,无论是随着业务的复杂庞大由单体应用拆 ...

  8. 微服务的链路追踪和流量可视化-钉钉告警

    skywalking简介 文章目录 skywalking简介 前言 一.安装 二进制安装 Skywalking:告警功能 前言 目前skywalking主要是做链路追踪和微服务流量可视化.skywal ...

  9. 基SkyWalking实现对k8s集群中微服务的链路追踪

    1.思路如下: 1.sykwalking的安装配置(k8s集群部署配置) 2.sykwalking-agent探针的集成到微服务项目(是打成基础镜像里,然后指定参数(configMap中配置java项 ...

最新文章

  1. [caffe解读] caffe从数学公式到代码实现3-shape相关类
  2. 插入排序、选择排序、快速排序以及归并排序(附Python代码)
  3. 为什么先交钱后用电_适合痘痘痘印的好的护肤品,为什么要先清洁后祛痘!_新闻中心...
  4. C#基础(201)--常量枚举
  5. 利用saopanel系统的UDP转发模式破解校园网
  6. Java学习笔录3(变量和常量)
  7. 苹果恢复出厂设置系统也会还原吗_刷机、恢复出厂设置和还原设置,你还不知道有什么区别?...
  8. Go语言学习查缺补漏ing Day1
  9. iOS-获取健康运动步数
  10. Asp.Net 上传图片并生成高清晰缩略图
  11. 云测试 入门 笔记
  12. 程序员《周易》入门一
  13. pdf怎么压缩文件到最小?如何将pdf文档怎么压缩最小?软件工具在线网站哪个好?
  14. 当面试官问你“我为什么要聘用你”
  15. 暨南大学计算机技术复试名单复试,关于2020年暨南大学硕士生复试资格线及复试名单的通知来...
  16. 杰奇linux伪静态,nginx 杰奇 nginx 伪静态规则
  17. 历年真题 九宫重排(BFS)
  18. Win7资源管理器有哪些打开方式?
  19. 二十八、用MOS管设计74HC148芯片
  20. 电子计算机 隐形眼镜,计算机科学 | 能随时监测眼压的智能隐形眼镜

热门文章

  1. 跟原力一起玩转EOS源码-Push Transaction机制
  2. rgbdslam流程简单实现
  3. 电信运营商需要鲲鹏生产力
  4. Nordic 发布新一代多协议系统级芯片 nRF5340,基于 Arm Cortex-M33 双处理器硬件架构
  5. 芯进电子已量产第二代霍尔电流传感器,量程5A~100A
  6. 论坛推广实战 | 精品帖持续不断引流赚钱?
  7. QQrobot -- 基于Python的智能推送助手
  8. WOJ 1006-Language of Animals解题心得
  9. Kinect C++简单切水果的一点总结
  10. a卡 n卡 html5性能,装机之家显卡天梯图2019年12月 独显A卡和N卡性能排行一目了然...