当前位置: 首页>后端>正文

skywalking--部署、使用、告警、日志集成

skywalking使用

初识

Skywalking是一个可观测性分析平台(Observability Analysis Platform简称OAP) 和应用性能管理系统(Application Performance Management简称APM)。

  • 提供分布式链路追踪、服务网格(Service Mesh)遥测分析、度量(Metric)聚合和可视化一体化解决方案

特点

多语言自动探针,Java,.NET Core和Node.JS。
多种监控手段,语言探针和service mesh。
轻量高效。不需要额外搭建大数据平台。
模块化架构。UI、存储、集群管理多种机制可选。
支持告警。
优秀的可视化效果。

架构

  • 探针(agent)负责进行数据的收集,包含了Tracing和Metrics的数据,agent会被安装到服务所在的 服务器上,以方便数据的获取。
  • 可观测性分析平台OAP(Observability Analysis Platform),接收探针发送的数据,并在内存中使用分析引擎(Analysis Core)进行数据的整合运算,然后将数据存储到对应的存储介质上,比如 Elasticsearch、MySQL数据库、H2数据库等。同时OAP还使用查询引擎(Query Core)提供HTTP查 询接口。
  • Skywalking提供单独的UI进行数据的查看,此时UI会调用OAP提供的接口,获取对应的数据然后进行展示

概念

  • 端点就是对外提供的接口,例如用户服务对外提供的HTTP接口/usr/queryAll就是一个端点

一、skywalking在kubesphere上的部署

1、oap-server部署

  • 使用镜像 core.harbor.domain:32388/library/skywalking-oap-server:8.6.0-es7

  • 在kubesphere上创建配置文件 application.yml

  • 修改config/application.yml

    • 将storage:中selector:设置为elasticsearch7
    • 在elasticsearch7:中,根据实际情况,修改clusterNodes等信息


      skywalking--部署、使用、告警、日志集成,第1张
  • 创建elasticsearch服务

    • 在kubesphere上创建配置文件 elasticsearch.yml
    • elasticsearch.yml修改clusterNodes等信息(对应上文)
  • 创建oap-server服务和工作负载,配置上application.yml

2、ui 界面部署

  • 使用镜像 core.harbor.domain:32388/library/skywalking-ui:8.6.0
  • 创建oap-server服务和工作负载,配置环境变量
    • collector.ribbon.listOfServers: skywalking-oap-server.nobody:12800 //指向前面部署的oap-server

3、项目集成agent Jar包

  • 将skywalking拷贝到kubesphere的宿主机上, skywalking/agent/skywalking-agent.jar

  • 在服务上挂载使用主机地址 hostPath: path: /var/local/skywalking(即skywalking文件夹地址)
    skywalking--部署、使用、告警、日志集成,第2张
  • 环境变量添加

    • name: JAVA_TOOL_OPTIONS
    • value: ' -javaagent:/maven/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=zuul //服务名称,在ui界面显示 -Dskywalking.collector.backend_service=skywalking-oap-server.nobody:11800' //server地址

二、skywalking界面功能介绍

  • 仪表盘:查看被监控服务的运行状态

    • 服务维度


      skywalking--部署、使用、告警、日志集成,第3张
      • Service Apdex(数字):当前服务的评分 Service Apdex(折线图):不同时间的Apdex评分 Successful Rate(数字):请求成功率 Successful Rate(折线图):不同时间的请求成功率 Servce Load(数字):每分钟请求数 Servce Load(折线图):不同时间的每分钟请求数 Service Avg Response Times:平均响应延时,单位ms Global Response Time Percentile:百分比响应延时 Servce Instances Load:每个服务实例的每分钟请求数 Show Service Instance:每个服务实例的最大延时 Service Instance Successful Rate:每个服务实例的请求成功率
    • 服务实例维度


      skywalking--部署、使用、告警、日志集成,第4张
      • Service Instance Load:当前实例的每分钟请求数
        Service Instance Successful Rate:当前实例的请求成功率
        Service Instance Latency:当前实例的响应延时
        JVM CPU:jvm占用CPU的百分比
        JVM Memory:JVM内存占用大小,单位m
        JVM GC Time:JVM垃圾回收时间,包含YGC和OGC JVM GC Count:JVM垃圾回收次数,包含YGC和OGC
    • 端点维度


      skywalking--部署、使用、告警、日志集成,第5张
      • Endpoint Load in Current Service:每个端点的每分钟请求数
        Slow Endpoints in Current Service:每个端点的最慢请求时间,单位ms
        Successful Rate in Current Service:每个端点的请求成功率
        Endpoint Load:当前端点每个时间段的请求数据 Endpoint Avg Response Time:当前端点每个时间段的请求行响应时间
        Endpoint Response Time Percentile:当前端点每个时间段的响应时间占比
        Endpoint Successful Rate:当前端点每个时间段的请求成功率
  • 拓扑图:以拓扑图的方式展现服务关系

  • 追踪:追踪接口内部调用过程

    • 左侧:api接口列表,红色-异常请求,蓝色-正常请求
    • 右侧:api追踪列表,api请求连接各端点的先后顺序和时间
  • 性能剖析:单独端点进行采样分析,并可查看堆栈信息

  • 告警:触发告警的告警列表,包括实例,请求超时等

界面介绍 参考链接

三、skywalking告警

  • 在kubesphere上创建配置文件 alarm-settings.yml
  • 编辑alarm-settings.yml
rules:
  # 规则唯一名称,必须以'_rule'结尾.
  service_resp_time_rule:
    # 度量名称,也是OAL脚本中的度量名,目前Service, Service Instance, Endpoint的度量可以用于告警
    metrics-name: service_resp_time
    # [可选]默认,匹配此指标中的所有服务
    include-names:
      - service_a
      - service_b
    exclude-names:
      - service_c
    # 阈值,对于多种指标值的如percentile可以配置P50、P75、P90、P95、P99的阈值
    threshold: 75
    # 操作符
    op: <
    # 评估度量标准的时间长度
    period: 10
    # 度量有多少次符合告警条件后,才会触发告警
    count: 3
    # 检查多少次,告警触发后保持沉默,默认周期相同
    silence-period: 10
    # 该规则触发时,发送的通知消息
    message: Response time of service {name} is more than 50ms in 1 minutes of last 1 minutes.

  • 配置webhook接口(将告警信息传出)
    webhooks: 
  - http://ip:port/skyWalking/alarm
  • oap-service配置上alarm-settings.yml,并重启

四、skywalking日志集成

  • 在kubesphere上创建配置文件 agent.config
  • 编辑agent.config(aop-server和agent在同一主机不需要改动配置)
plugin.toolkit.log.grpc.reporter.server_host=skywalking-oap-server.nobody
plugin.toolkit.log.grpc.reporter.server_port=11800

  • 项目代码修改
    • pom文件添加 jar依赖(注意和agent的版本一致)
<!-- 引入skywalking 日志依赖 -->
    <dependency>
      <groupId>org.apache.skywalking</groupId>
      <artifactId>apm-toolkit-logback-1.x</artifactId>
      <version>8.6.0</version>
    </dependency>

  • logback-spring.xml 修改
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
        <!--加上skywalking的追踪id-->
        <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%n</Pattern>
        </layout>
    </encoder>
</appender>
<!-- skywalking grpc 日志收集 8.4.0版本开始支持 -->
    <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} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>
            </layout>
        </encoder>
    </appender>

  • 项目部署
    • 项目上配置应用上 agent.config
    • ui页面显示
      skywalking--部署、使用、告警、日志集成,第6张

附录

  • [SkyWalking 8 官方文档 ]
  • [SkyWalking 8 参考博客 ]

https://www.xamrdz.com/backend/3g51931836.html

相关文章: