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等信息


      image.png
  • 创建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文件夹地址)
    image.png
  • 环境变量添加

    • 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界面功能介绍

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

    • 服务维度


      image.png
      • 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:每个服务实例的请求成功率
    • 服务实例维度


      image.png
      • 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
    • 端点维度


      image.png
      • 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页面显示
      image.png

附录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容