Apache SkyWalking 使用指南

简介

SkyWalking 是针对分布式系统的APM(应用性能监控)系统,特别针对微服务、cloud native 和容器化(Docker, Kubernetes, Mesos)架构, 其核心是个分布式追踪系统。主要提供以下功能:

  • 分布式追踪和上下文传输
  • 应用、实例、服务性能指标分析
  • 根源分析
  • 应用拓扑分析
  • 应用和服务依赖分析
  • 慢服务检测
  • 性能优化

下载、配置

本文环境:

  • Mac OS X: 10.12.6
  • SkyWalking: 6.0.0-alpha
  • ElasticSearch: 6.5.0

SkyWalking 目录结构:

image

agent 配置

  1. 将 agent 文件夹拷贝至待监控应用所在服务器

  2. 配置 config/agent.conf 文件(主要修改被监控应用名和 collector 端所在服务器地址)

collector 配置

主要将储存方式由 h2 修改为 elasticsearch:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
storage:
# h2:
# driver: org.h2.jdbcx.JdbcDataSource
# url: jdbc:h2:mem:skywalking-oap-db
# user: sa
elasticsearch:
clusterName: app
clusterNodes: localhost:9200
indexShardsNumber: 2
indexReplicasNumber: 0
# Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
bulkActions: 2000 # Execute the bulk every 2000 requests
bulkSize: 20 # flush the bulk every 20mb
flushInterval: 10 # flush the bulk every 10 seconds whatever the number of requests
concurrentRequests: 2 # the number of concurrent requests
# Set a timeout on metric data. After the timeout has expired, the metric data will automatically be deleted.
traceDataTTL: 90 # Unit is minute
minuteMetricDataTTL: 90 # Unit is minute
hourMetricDataTTL: 36 # Unit is hour
dayMetricDataTTL: 45 # Unit is day
monthMetricDataTTL: 18 # Unit is month

其中主要修改 clusterName 和 clusterNodes 和 已启动的 elasticsearch 配置一致。

elasticsearch 配置

主要修改配置文件 elasticsearch.yml 如下几处:

1
2
3
4
cluster.name: app
node.max_local_storage_nodes: 3
network.host: 0.0.0.0
http.port: 9200

启动、测试

  1. 确保 8080、11800、12800 端口未占用的情况下,启动 bin 目录下 startup.sh 脚本

  2. 用如下命令启动待监控应用:

    1
    java -javaagent:/path/skywalking-agent.jar -jar aaa.jar

    注意 -javaagent 要在 -jar 前面。

  3. ,浏览器打开:localhost:8080 以 admin/admin 登陆。页面如下则表示成功

image

原理概述

  • agent 端通过 java agent 机制动态修改被监控的应用,获取数据传递给 collector 端
  • collector 端接收 agent 端发送的数据,根据不同具体实现(例如h2或es)将数据保存起来
  • webui 获取数据进行展示