(一)skywalking简介、部署及实现收集java博客追踪

发布时间 2023-11-15 16:26:25作者: areke

一、skywalking架构

Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的开源项目, 2017年12月SkyWalking成为Apache国内首个个人孵化项目, 2019年4月17日SkyWalking从Apache基金会的孵化器毕业成为顶级项目,目前SkyWalking支持Java、.Net、Node.js、go、python等探针,数据存储支持MySQL、 ElasticSearch等, SkyWalking与Pinpoint相同,对业务代码无侵入,不过探针采集数据粒度相较于Pinpoint来说略粗, 但性能表现优秀, 目前SkyWalking增长势头强劲, 社区活跃, 中文文档齐全, 没有语言障碍,支持多语言探针,这些都是SkyWalking的优势所在,还有就是SkyWalking支持很多框架,包括很多国产框架,例如,Dubbo、gRPC、SOFARPC等,同时也有很多开发者正在不断向社区提供更多插件以支持更多组件无缝接入SkyWalking。

https://skywalking.apache.org/

1.1 特点

  1. 实现从请求跟踪、指标收集和日志记录的完整信息记录
  2. 多语言自动探针,支持Java、GO、Python、PHP、NodeJS、LUA、Rust等客户端
  3. 内置服务网格可观察性,支持从Istio+Envoy Service Mesh收集和分析数据
  4. 模块化架构,存储、集群管理、使用插件集合都可以进行自由选择
  5. 支持告警
  6. 优秀的可视化效果

1.2 组件

  • OAP平台(Observability Analysis Platform,可观测性分析平台)或OAP Server,它是一个高度组件化的轻量级分析程序,由兼容各种探针Receiver、流式分析内核和查询内核三部分构成。
  • 探针:基于无侵入式的收集,并通过HTTP或者gRPC方式发送数据到OAP Server。
  • 存储实现(Storage lmplementors),SkyWalking OAP Server支持多种存储实现并且提供了标准接口,可支持不同的存储后端。
  • UI模块(SkyWalking),通过标准的GraphQL(Facebook在2012年开源)协议进行统计数据查询和展示。

1.3 设计模式

1.3.1 面向协议设计

面向协议设计是skywalking从5.x开始严格遵守的首要设计原则,组件之间使用标准的协议进行数据交互

1.3.2 协议有探针协议和查询协议

  1. 探针协议
  • 探针上报协议:协议包括语言探针的注册、Metrics数据上报、Tracing数据上报等标准,Java、Go等探针都需要严格遵守此协议的标准。
  • 探针交互协议:因为分布式追踪环境,探针间需要借助HTTP Header、MQ Header在应用之间进行通信和交互,探针交互协议就定义了交互的数据格式。
  • Service Mesh协议:是SkyWalking对Service Mesh抽象的专有协议,任何Mesh类的服务都可以通过此协议直接上传指标数据,用于计算服务的指标数据和绘制拓扑图。
  • 第三方协议:对大型的第三方开源项目尤其是Service Mesh核心平台Istio和Envoy,提供核心协议适配,支持针对lstio+Envoy Service Mesh进行无缝对接。
  1. 数据查询协议
  • 元数据查询:查询在SkyWalking注册的服务、服务实例、Endpoint等元数据信息。
  • 拓扑关系查询:查询全局、或者单个服务、Endpoint的拓扑图及依赖关系。
  • Metrics指标查询:查询指标数据。
  • 聚合指标查询:区间范围均值查询及Top N排名数据查询等。
  • Trace查询:追踪数据的明细查询。
  • 告警查询:基于表达式,判断指标数据是否超出阈值

1.4 skywalking设计

  1. 模块化设计
  • 探针负责收集数据
  • 前端负责展示数据
  • 后端负责从后端存储读写数据
  • 后端储存负责持久化数据
  1. 轻量化设计

skywalking在设计之初就提出了轻量化的设计理念,skywalking使用最轻量级的jar包模式,实现强大的数据处理和分析能力、可扩展能力和模块化能力。

1.5 skywalking优势

  1. 兼容性好

    支持传统的部署架构dubbo和spring cloud,也支持云原生中的Istio和Envoy

  2. 易于部署和后期维护

    组件化,可以自定义部署,后期横向扩容简单

  3. 高性能

    每天数T的数据无压力

  4. 易于二次开发

    标志的http和grpc协议,开源项目,企业可以自主二次开发

1.6 skywalking与其他特性对比

二、skywalking部署

skywalking-ui:前端服务,端口号8080

skywalking-oap(Observability Analysis Platform) :可观测性分析平台,11800为gRPC数据端口,12800为http数据端口

es:9200为elasticsearch的数据读写端口,skywalking支持的存储有elasticsearch、h2、mysql、tidb、influxdb、postgresql等

agent:app服务器部署skywalking agent,用于收集app中的访问请求

2.1 docker-compose部署skywalking

2.1.1 安装docker

#! /bin/bash
# docker版本
docker_version=5:20.10.10~3-0

apt update
# 安装依赖包
apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release \
    software-properties-common

# 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] http://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable"

apt update
# apt-cache madison docker-ce docker-ce-cli
apt -y install docker-ce=${docker_version}~ubuntu-$(lsb_release -cs) \
docker-ce-cli=${docker_version}~ubuntu-$(lsb_release -cs)


# 关闭防火墙
systemctl disable firewalld && systemctl stop firewalld
# 在/etc/hosts中添加IP、主机名
cat >> /etc/hosts <<EOF
`hostname -I|awk '{print $1}'` `hostname`
EOF

# 内核参数优化
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sudo sysctl --system

# 设置docker的cgroup driver
# docker 默认的 cgroup driver 是 cgroupfs,可以通过 docker info 命令查看
# 如果用户没有在 KubeletConfiguration 下设置 cgroupDriver 字段,则 kubeadm 将默认为systemd,需要将docker cgroup driver更改为systemd
# 配置docker hub镜像加速
cat <<EOF >/etc/docker/daemon.json
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": ["https://ung2thfc.mirror.aliyuncs.com",
			 "https://registry.docker-cn.com",
			 "http://hub-mirror.c.163.com",
			 "https://docker.mirrors.ustc.edu.cn"]
}
EOF
# systemctl daemon-reload
# systemctl restart docker

# 关闭swap
# 在/etc/fstab注释swap那一行
sed -ri 's/(^[^#]*swap)/#\1/' /etc/fstab
echo 'swapoff -a' >> /etc/profile
swapoff -a

# 修改grub
sed -i '/GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"/c GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 cgroup_enable=memory swapaccount=1"' /etc/default/grub
update-grub
reboot

验证docker

[root@skywalking opt]#docker -v
Docker version 19.03.15, build 99e3ed8919

2.1.2 安装docker-compose

wget https://github.com/docker/compose/releases/download/v2.12.0/docker-compose-linux-x86_64
#wget https://shichu.fun/download/packages/docker/compose/releases/download/v2.12.0/docker-compose-linux-x86_64

chmod a+x docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 /usr/bin/docker-compose

验证docker-compose

[root@skywalking opt]#docker-compose -v
Docker Compose version v2.12.0

2.1.3 编写docker-compose.yaml文件

version: '3.3'
services:
  es7:
    image: elasticsearch:7.10.1
    container_name: es7
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      - discovery.type=single-node #单机模式
      - bootstrap.memory_lock=true #锁定物理内存地址
      - "ES_JAVA_OPTS=-Xms1048m -Xmx1048m" #堆内存大小
      - TZ=Asia/Shanghai
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /data/elasticsearch/data:/usr/share/elasticsearch/data

  skywalking-oap:
    image: apache/skywalking-oap-server:8.6.0-es7
    container_name: skywalking-oap
    restart: always
    depends_on:
      - es7
    links:
      - es7
    ports:
      - 11800:11800
      - 12800:12800
    environment:
      TZ: Asia/Shanghai
      SW_STORAGE: elasticsearch7
      SW_STORAGE_ES_CLUSTER_NODES: es7:9200

  skywalking-ui:
    image: apache/skywalking-ui:8.6.0
    container_name: skywalking-ui
    restart: always
    depends_on:
      - skywalking-oap
    links:
      - skywalking-oap
    ports:
      - 8080:8080
    environment:
      TZ: Asia/Shanghai
      SW_OAP_ADDRESS: skywalking-oap:12800

若网络不好,可先手动下载镜像

# 查看要下载镜像
[root@skywalking opt]#grep 'image:' docker-compose.yaml 
    image: elasticsearch:7.10.1
    image: apache/skywalking-oap-server:8.6.0-es7
    image: apache/skywalking-ui:8.6.0

# 下载镜像
docker pull elasticsearch:7.10.1
docker pull apache/skywalking-oap-server:8.6.0-es7
docker pull apache/skywalking-ui:8.6.0

执行创建

# 创建目录
[root@skywalking opt]#mkdir -p /data/elasticsearch/data
# 授权
[root@skywalking opt]#chmod -R 777 /data/elasticsearch/data

# 创建服务
[root@skywalking opt]#docker-compose up -d
[+] Running 4/4
 ⠿ Network opt_default       Created                                                                                                                                        0.0s
 ⠿ Container es7             Started                                                                                                                                        0.6s
 ⠿ Container skywalking-oap  Started                                                                                                                                        0.9s
 ⠿ Container skywalking-ui   Started 

2.1.4 验证端口

查看容器状态

[root@skywalking opt]#docker ps
CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS              PORTS                                                          NAMES
c380754d39e1        apache/skywalking-ui:8.6.0               "bash docker-entrypo…"   18 seconds ago      Up 16 seconds       0.0.0.0:8080->8080/tcp                                         skywalking-ui
6d175936e7c5        apache/skywalking-oap-server:8.6.0-es7   "bash docker-entrypo…"   19 seconds ago      Up 17 seconds       0.0.0.0:11800->11800/tcp, 1234/tcp, 0.0.0.0:12800->12800/tcp   skywalking-oap
37555dd061e1        elasticsearch:7.10.1                     "/tini -- /usr/local…"   19 seconds ago      Up 18 seconds       0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp                 es7

查看端口

[root@skywalking opt]#netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  
...   
tcp6       0      0 :::12800                :::*                    LISTEN      13452/docker-proxy  	# skywalking-oap
tcp6       0      0 :::2049                 :::*                    LISTEN      -               
tcp6       0      0 :::111                  :::*                    LISTEN      1/init          
tcp6       0      0 :::8080                 :::*                    LISTEN      13062/docker-proxy		# skywalking-ui  
tcp6       0      0 :::9200                 :::*                    LISTEN      12761/docker-proxy  	# elasticsearch
tcp6       0      0 :::43345                :::*                    LISTEN      794/rpc.mountd  
tcp6       0      0 :::54163                :::*                    LISTEN      794/rpc.mountd  
tcp6       0      0 :::9300                 :::*                    LISTEN      12749/docker-proxy  	# elasticsearch
tcp6       0      0 :::22                   :::*                    LISTEN      886/sshd: /usr/sbin 
tcp6       0      0 :::11800                :::*                    LISTEN      13467/docker-proxy  	# skywalking-oap
tcp6       0      0 :::41369                :::*                    LISTEN      - 

2.1.5 验证skywalking server

2.1.6 验证elasticsearch

​​

Elasticsearch Head插件查看

2.2 二进制部署skywalking

主机清单

类型 IP 主机名 VIP
Elasticsearch-node1/Kibana
10.0.0.71
es1
10.0.0.70
Elasticsearch-node2 10.0.0.72 es2
Elasticsearch-node3 10.0.0.73 es3
skywalking oap 10.0.0.91 skywalking-server

2.2.1 部署elasticsearch集群

部署方法参考:4.1.1 Elasticsearch[^1]

验证

2.2.2 部署skywalking server

  1. 安装jdk11
# apt安装
apt update
apt install openjdk-11-jdk -y

# 验证版本
[root@skywalking-server ~]#java --version
openjdk 11.0.20.1 2023-08-24
OpenJDK Runtime Environment (build 11.0.20.1+1-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.20.1+1-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
  1. 安装skywalking

下载地址:https://archive.apache.org/dist/skywalking/

# 下载
mkdir /apps
cd /apps
wget https://archive.apache.org/dist/skywalking/9.1.0/apache-skywalking-apm-9.1.0.tar.gz

# 解压
tar xvf apache-skywalking-apm-9.1.0.tar.gz 
  1. 修改配置
cd apache-skywalking-apm-bin/
# 修改配置文件
vim config/application.yml
...
# 修改存储配置
132 storage:
133   selector: ${SW_STORAGE:elasticsearch}		# 选择elasticsearch存储
134   elasticsearch:
135     namespace: ${SW_NAMESPACE:""}
136     clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:10.0.0.71:9200,10.0.0.73:9200,10.0.0.73:9200}	# es集群地址
  1. 启动服务
[root@skywalking-server apache-skywalking-apm-bin]#bin/startup.sh 
SkyWalking OAP started successfully!
SkyWalking Web Application started successfully!

# 查看端口
[root@skywalking apache-skywalking-apm-bin]#netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
...   
tcp6       0      0 :::12800                :::*                    LISTEN      5382/java             
tcp6       0      0 :::8080                 :::*                    LISTEN      5405/java   
tcp6       0      0 :::22                   :::*                    LISTEN      876/sshd: /usr/sbin 
tcp6       0      0 :::11800                :::*                    LISTEN      5382/java   
  1. 验证

skywalking数据已存入elasticsearch

三、skywalking实现收集java博客追踪

3.1 halo博客实现链路追踪案例

halo博客参考:https://docs.halo.run/getting-started/prepare/

3.1.1 下载安装包

agent下载地址:https://skywalking.apache.org/downloads/#Agents

# 安装java环境
apt update
apt install openjdk-11-jdk -y

# 创建目录
mkdir -p /data
mkdir /apps

# 下载skywalking java agent的
cd /data
wget https://archive.apache.org/dist/skywalking/java-agent/9.0.0/apache-skywalking-java-agent-9.0.0.tgz
tar xvf apache-skywalking-java-agent-9.0.0.tgz

# 下载halo
wget https://dl.halo.run/release/halo-1.4.17.jar -O /apps/halo-1.4.17.jar

3.1.2 修改配置

vim /data/skywalking-agent/config/agent.config
...
# The service name in UI	# 服务名称
# ${service name} = [${group name}::]${logic name}
# The group name is optional only.
agent.service_name=${SW_AGENT_NAME:halo-service}

# The agent namespace		# agent
agent.namespace=${SW_AGENT_NAMESPACE:halo}

# Backend service addresses.	# 后端服务即skywalking-oap平台地址,11800为grpc端口,12800为http端口
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:10.0.0.91:11800}

3.1.3 启动服务

java -javaagent:/data/skywalking-agent/skywalking-agent.jar -jar /apps/halo-1.4.17.jar

3.1.4 验证8090端口

[root@halo ~]#netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  
tcp        0      0 0.0.0.0:50349           0.0.0.0:*               LISTEN      831/rpc.mountd    
tcp        0      0 0.0.0.0:57773           0.0.0.0:*               LISTEN      831/rpc.mountd    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd         
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      17024/systemd-resol 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      4297/sshd: /usr/sbi 
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      1803/sshd: root@pts 
tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN      1803/sshd: root@pts 
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                 
tcp        0      0 0.0.0.0:38243           0.0.0.0:*               LISTEN      -                 
tcp        0      0 0.0.0.0:50915           0.0.0.0:*               LISTEN      831/rpc.mountd    
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd         
tcp6       0      0 :::51475                :::*                    LISTEN      831/rpc.mountd    
tcp6       0      0 :::22                   :::*                    LISTEN      4297/sshd: /usr/sbi 
tcp6       0      0 :::35575                :::*                    LISTEN      -                 
tcp6       0      0 :::8090                 :::*                    LISTEN      99844/java        
tcp6       0      0 ::1:6010                :::*                    LISTEN      1803/sshd: root@pts 
tcp6       0      0 ::1:6011                :::*                    LISTEN      1803/sshd: root@pts 
tcp6       0      0 :::2049                 :::*                    LISTEN      -                 
tcp6       0      0 :::38467                :::*                    LISTEN      831/rpc.mountd    
tcp6       0      0 :::51557                :::*                    LISTEN      831/rpc.mountd 

3.2 验证skywalking采集数据

  • 服务(Service)

表示对请求提供相同行为的一系列或一组负载(服务名称),在使用Agent或SDK的时候,可以自定义服务的名字,如果不定义的话,SkyWalking将使用在平台(如Istio)上定义的名字。

  • 拓扑

  • 链路追踪

四、skywalking性能指标

选择指定service name,查看性能指标数据。

Apdex全称是Application Performance Index即应用性能指数,是由Apdex联盟开放的用于评估应用性能的标准,Apdex联盟起源于2004,Apdex标准从用户的角度出发,提供一个统一的测量和报告用户体验的方法,将其量化为范围为0-1的满意度评价,把最终用户的体验和应用性能作为一个完整的指标进行统一度量。

在网络中运行的任何一个应用(Web服务),它的响应时间决定了用户的满意程度,用户等待所有交互完成时间的长短直接影响了用户对应用的满意程度,这才是对用户有真正意义的“响应时间”,Apdex把完成这样一个任务所用的时间长短称为应用的“响应性”。
Apdex定义了应用响应时间的最优门槛为T,另外根据应用响应时间结合T定义了三种不同的性能表现:

  • Satisfied(满意)

    应用响应时间小于或等于Apdex阈值,比如Apdex阈值为1s,则一个耗时0.6s或者1s的响应结果则可以认为是满意的。

  • Tolerating(可容忍)

    应用响应时间大于Apdex阈值,但同时小于或等于4倍的Apdex阈值,假设应用设定的Apdex阈值为1s,则4*1=4s为应用响应时间的容忍上限。

  • Frustrated(烦躁期)

    应用响应时间大于4倍的Apdex阈值。

Apdex =(正常请求数 + 可容忍请求数 / 2)/ 请求总数。示例如下:

服务A定义:T=200ms,在100个采样中,有20个请求小于200ms,有60个请求在200ms到800ms之间,有20个请求大于800ms。计算apdex = (20 + 60/2)/100 = 0.5。

4.1 Overview

显示服务的全局统计详情。

  • Service Apdex(数字)

    当前服务的评分,1为满分

  • Success Rate (数字)

    请求成功率

  • Servce Load (calls/min)(数字)

    每分钟请求数

  • Service Avg Response Times (ms)

    平均响应延时,单位ms

  • Service Apdex(折线图)

    不同时间的Apdex评分

  • Service Response Time Percentile(ms)

    百分比响应延时

  • Success Rate(折线图)

    不同时间的请求成功率

  • Servce Load (calls/min)(折线图)

    不同时间的每分钟请求数

  • Message Queue Consuming Count

    消息队列消耗计数

  • Message Queue Avg Consuming Latency (ms)

    消息队列平均消耗延迟(毫秒)

  • Service Instances Load (calls /min)

    每个服务实例的每分钟请求数

  • Slow Service lnstance(ms)

    每个服务实例的最大延时

  • Service Instance Successful Rate

    每个服务实例的请求成功率

  • Endpoint Load in Current Service (calls / min)

    每个端点(URL)的请求次数

  • Slow Endpoints in Current Service (ms)

    当前端点(URL)的最慢响应时间

  • Success Rate in Current Service (%)

    当前服务成功率(%)

4.2 instance

上述的一组工作负载中的每一个工作负载成为一个实例(一个服务运行的节点),一个服务实例可以是一个kubernetes中的pod或者是一个虚拟机甚至是物理机。

overview

  • Service Instance Load (calls/min)

    当前实例的每分钟请求数

  • Service Instance Successful Rate (%)

    当前实例的请求成功率

  • Service Instance Latency (ms)

    当前实例的响应延时

  • Database Connection Pool

    数据库连接池信息

  • Thread Pool

    线程池信息

JVM信息

  • JVM CPU (%)

    jvm占用CPU的百分比

  • JVM Memory (MB)

    JVM内存占用大小,羊位m,包括堆内存,与堆外内存(直接内存).

  • JVM GC Time (ms)

    JVM垃圾回收时间,包含YGC和OGC

  • JVM GC Count

    JVM垃圾回收次数,,包含YGC和OGC

  • JVM Thread Count

    JVM线程计数

    instance_jvm_thread_live_count:实例jvm线程活动计数
    instance_jvm_thread_daemon_count:实例jvm线程守护进程计数,
    instance_jvm_thread_peak_count :实例jvm线程峰值计数

  • JVM Thread State Count

    JVM线程状态计数

    instance jvm thread runnable state thread count:实例jvm线程可运行状态线程计数
    instance jvm thread blocked state thread count :实例jvm线程阻塞状态线程计数
    instance jvm thread waiting state thread count :实例jvm线程等待状态线程计数
    instance jvm thread timed waiting state thread count :实例jvm线程定时等待状态线程计数

  • JVM Class Count

    JVM类计数

    instance jvm class loaded class count:实例jvm类加载类计数
    instance jvm class total unloaded class count:实例jvm类总卸载类计数
    instance jvm class total loaded class count:实例jvm类总加载类计数

.net指标

4.3 endpoint

端点(Endpoint):对于特定服务所接收的请求路径,如HTTP的URL路径和gRPC服务的类+方法签名,如/api/v1/

  • Endpoints

    URL

  • Load (calls / min)

    平均请求次数(默认时间范围半小时),比如半小时内总请求次数6次,6%30=0.20

  • Success Rate (%)

    平均成功率(默认时间范围半小时)

  • Latency (ms)

    平均延迟时间(默认时间范围半小时)

overview

  • Endpoint Load (calls / min)

    当前端点每分钟的请求数据

  • Endpoint Avg Response Time (ms)

    当前端点每个时间段的请求行响应时间

  • Endpoint Response Time Percentile (ms)

    当前端点每个时间段的响应时间占比

  • Endpoint Success Rate (%)

    当前端点每个时间段的请求成功率

  • Message Queue Consuming Count

    消息队列消耗计数

  • Message Queue Avg Consuming Latency (ms)

    消息队列平均消耗延迟(毫秒)

拓扑

追踪

同一个URL的请求追踪信息

4.4 topology

拓扑


4.5 trace

不同URL的追踪请求信息

4.6 trace profiling

追踪分析

CPM-calls per minute:服务平均每分钟请求数

Slow Services ms:慢响应服务(ms)

Un-Health services(Apdex):Apdex性能指标,1为满分

Slow Endpoints(ms):全局维度的慢响应端点(API),例如一个接口,显示的是全局慢响应Top N的数据,通过这个可以观测平台性能情况

Global Response Latency(percentile in ms):全局响应延迟百分位数统计,单位ms。

Global Heatmap:服务响应时间热力分布图,根据当时时间段内不同响应时间(0ms,100ms)的数量用不同的颜色表示

Apdex全称是Application Performance Index即应用性能指数,是由Apdex联盟开放的用于评估应用性能的标准,Apdex联盟起源于2004,Apdex标准从用户的角度出发,提供一个统一的测量和报告用户体验的方法,将其量化为范围为0-1的满意度评价,把最终用户的体验和应用性能作为一个完整的指标进行统一度量。

在网络中运行的任何一个应用(Web服务),它的响应时间决定了用户的满意程度,用户等待所有交互完成时间的长短直接影响了用户对应用的满意程度,这才是对用户有真正意义的“响应时间”,Apdex把完成这样一个任务所用的时间长短称为应用的“响应性”。
Apdex定义了应用响应时间的最优门槛为T,另外根据应用响应时间结合T定义了三种不同的性能表现:

  • Satisfied(满意)

    应用响应时间小于或等于Apdex阈值,比如Apdex阈值为1s,则一个耗时0.6s或者1s的响应结果则可以认为是满意的。

  • Tolerating(可容忍)

    应用响应时间大于Apdex阈值,但同时小于或等于4倍的Apdex阈值,假设应用设定的Apdex阈值为1s,则4*1=4s为应用响应时间的容忍上限。

  • Frustrated(烦躁期)

    应用响应时间大于4倍的Apdex阈值。