1.什么是 Skywalking

Skywalking 是一个APM系统,即应用性能监控系统,为微服务架构和云原生架构系统设计。它通过探针自动收集所需的指标,并进行分布式追踪。通过这些调用链路以及指标,Skywalking APM会感知应用间关系和服务间关系,并进行相应的指标统计。目前支持链路追踪和监控应用组件如下,基本涵盖主流框架和容器,如国产PRC Dubbo和motan等,国际化的spring boot,spring cloud都支持了

skywalaking 分为三部分:

  • skywalking-collector:链路数据归集器,数据可以落地 Elasticsearch,单机也可以落地H2,不推荐,H2仅作为临时演示用
  • skywalking-web:web可视化平台,用来展示落地的数据
  • skywalking-agent:探针,用来收集和发送数据到归集器

3.Skywalking 的版本选择

Skywalking 目前的支持版本有 5.0.0-GA 、6.0.0-GA 和 6.1.0 版本,各个版本支持的 Elasticsearch 版本不同,对应的版本如下:

Skywalking 版本

JDK 版本

Elasticsearch 版本

下载地址

5.0.0-GA

jdk8+

5.x

zip tar

6.0.0-GA

jdk8+

6.x

zip tar

6.1.0

jdk8+

6.x

zip tar

如果下载地址无效,可以到 Skywalking 的官网地址下载,http://skywalking.apache.org/

4.Skywalking 的下载安装

由于我本地系统是 Centos 7 ,本地环境安装的 Elasticsearch 是 6.7.2 版本,因此我可以选择 6.0.0-GA 或 6.1.0 版本,我这里选择的是 6.1.0 版本,下载 Skywalking 很简单,只需要执行 wget 命令,如下:

$> wget http://mirror.bit.edu.cn/apache/skywalking/6.1.0/apache-skywalking-apm-6.1.0.tar.gz

下载完成后,我们进行解压到 /opt 目录下

$> tar -xvf apache-skywalking-apm-6.1.0.tar.gz -C /opt

解压完成后,接下来需要进行 Skywalking 的相关配置

4.1 Skywalking collector 配置

collector 链路数据归集器,主要用于数据落地,我这里需要配置落地数据为 Elasticsearch 6.7.2,collector 配置文件为 /opt/apache-skywalking-apm-6.1.0/config/application.yml,配置单点的 collector 配置如下:

cluster:

standalone:

core:

default:

# Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate

# Receiver: Receive agent data, Level 1 aggregate

# Aggregator: Level 2 aggregate

role: ${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator

# rest 服务地址和端口

restHost: ${SW_CORE_REST_HOST:localhost}

restPort: ${SW_CORE_REST_PORT:12800}

restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/}

# gRPC 服务地址和端口

gRPCHost: ${SW_CORE_GRPC_HOST:localhost}

gRPCPort: ${SW_CORE_GRPC_PORT:11800}

downsampling:

- Hour

- Day

- Month

# 设置度量数据的超时。超时过期后,度量数据将自动删除.

# 单位分钟

recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:90}

# 单位分钟

minuteMetricsDataTTL: ${SW_CORE_MINUTE_METRIC_DATA_TTL:90}

# 单位小时

hourMetricsDataTTL: ${SW_CORE_HOUR_METRIC_DATA_TTL:36}

# 单位天

dayMetricsDataTTL: ${SW_CORE_DAY_METRIC_DATA_TTL:45}

# 单位月

monthMetricsDataTTL: ${SW_CORE_MONTH_METRIC_DATA_TTL:18}

storage:

elasticsearch:

# elasticsearch 的集群名称

nameSpace: ${SW_NAMESPACE:"local-ES"}

# elasticsearch 集群节点的地址及端口

clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.2.10:9200}

# elasticsearch 的用户名和密码

user: ${SW_ES_USER:""}

password: ${SW_ES_PASSWORD:""}

# 设置 elasticsearch 索引分片数量

indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}

# 设置 elasticsearch 索引副本数

indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}

# 批量处理配置

个请求执行一次批量

bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:2000}

# 每 20mb 刷新一次内存块

bulkSize: ${SW_STORAGE_ES_BULK_SIZE:20}

秒刷新一次堆

flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10}

# 并发请求的数量

concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2}

# elasticsearch 查询的最大数量

metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}

# elasticsearch 查询段最大数量

segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}

4.2 Skywalking webApp 配置

Skywalking 的 WebApp 主要是用来展示落地的数据,因此只需要配置 Web 的端口及获取数据的 collector 的IP和端口,webApp 配置文件地址为 /opt/apache-skywalking-apm-6.1.0/webapp/webapp.yml 配置如下:

server:

collector:

path: /graphql

ribbon:

# 指向所有后端collector 的 restHost:restPort 配置,多个使用 , 分隔

listOfServers: localhost:12800

security:

user:

# username

admin:

# password

password: admin

4.3 Skywalking Agent 配置

Skywalking 的 Agent 主要用于收集和发送数据到 collector ,因此需要进行配置 Skywalking collector 的地址,Agent 的配置文件地址为 /opt/apache-skywalking-apm-6.1.0/agent/config/agent.config,配置如下:

# 设置Agent命名空间

agent.namespace=${SW_AGENT_NAMESPACE:default-namespace}

# 设置服务名称,会在 Skywalking UI 上显示的名称

agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}

# 每 3秒采集的样本跟踪比例,如果是负数则表示 100%采集

agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:-1}

# 启用 Debug ,如果为 true 则将把所有检测到的类文件保存在"/debug"文件夹中

# agent.is_open_debugging_class = ${SW_AGENT_OPEN_DEBUG:true}

# 后端的 collector 端口及地址

collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.2.215:11800}

# 日志级别

logging.level=${SW_LOGGING_LEVEL:DEBUG}

5 示例项目

创建一个 spring boot 项目,增加一个简单的 RestConstroller 控制器,提供一个 rest 服务,代码如下:

@RestController

public class HelloWorldController{

@RequestMapping(path={"/","/index"},produces=MediaType.APPLICATION_JSON_UTF8_VALUE)

public Map<String,Object> index(){

Map<String,Object> map=new LinkedHashMap<>();

map.put("A","a");

map.put("b",newBigDecimal("1.2"));

return map;

}

}

复制 /opt/apache-skywalking-apm-6.1.0/agent 目录到项目的 target 目录中,增加 VM options 参数 -javaagent 并指向到 agent\skywalking-agent.jar ,如下图:

启动项目进行测试,请通过浏览器访问 rest 服务,然后访问 skywalking web 可以查询到刚才的访问。

利用 Skywalking 搭建 APM(应用性能管理)— 安装与配置的更多相关文章

  1. (九)OpenStack---M版---双节点搭建---Swift(单节点)安装和配置

    ↓↓↓↓↓↓↓↓视频已上线B站↓↓↓↓↓↓↓↓ >>>>>>传送门 本次搭建仅采用Compute单节点做swift组件 1.Controller安装并配置控制节点 ...

  2. Linux搭建JDK、Tomcat安装及配置

    一.JDK安装及配置 1.JKD下载地址:http://pan.baidu.com/s/1i5NpImx 2.查看安装: rpm -qa | grep jdk 3.卸载:rpm -e --nodeps ...

  3. 利用SOLR搭建企业搜索平台 之——solr配置solrconfig.xml

    来源:http://blog.csdn.net/zx13525079024/article/details/25310781 solrconfig.xml配置文件主要定义了SOLR的一些处理规则,包括 ...

  4. 利用SOLR搭建企业搜索平台 之——模式配置Schema.xml

    来源:http://blog.csdn.net/awj3584/article/details/16963525 schema.xml这个配置文件可以在你下载solr包的安装解压目录的\solr\ex ...

  5. 1.环境搭建-mysql+tomcat+myeclipse安装并配置

    一.安装mysql数据库并配置 下载地址:https://pan.baidu.com/s/1OJ3ggda7Cthl4GCxWKbTng 密码:sd6b 1.打开安装程序

  6. 利用Hexo搭建个人博客-博客初始化篇

    上一篇博文 <利用Hexo搭建个人博客-环境搭建篇> 中,我们讲解了利用Hexo搭建个人博客应该要配置哪些环境.相信大家已经迫不及待的想要知道接下来应该要怎么把自己的博客搭起来了,下面,让 ...

  7. 在Ubuntu 15下搭建V/P/N服务器pptpd安装和配置

    在Ubuntu 15下搭建VPN服务器pptpd安装和配置 在ubuntu下配置vpn的方式有很多种,其中比较常见的是pptpd,它配置简单,但是安全性不高,不过对于一般使用来说足够了,我按照程搭建了 ...

  8. SkyWalking 搭建及简单使用(Linux)

    1.需求 公司项目采用微服务的架构,服务很多,人工监控是不可能的,项目的访问量很大,想通过日志查找某个方法中性能的问题也是非常困难的.但是系统的性能问题是不能忽视的.系统性能检测的问题如鲠在喉,经过长 ...

  9. Kafka1 利用虚拟机搭建自己的Kafka集群

    前言:       上周末自己学习了一下Kafka,参考网上的文章,学习过程中还是比较顺利的,遇到的一些问题最终也都解决了,现在将学习的过程记录与此,供以后自己查阅,如果能帮助到其他人,自然是更好的. ...

随机推荐

  1. java二周的学习总结

    一转眼二周就过去了,个人觉得虽然java和C语言有差异,但差别并不大,因为语法语句方面都是差不多的,因为我上个学期并没有很认真的学好C语言,所以我这个学期更希望学好java,java方面还是挺有趣的, ...

  2. Maven依赖项Scope属性设置含义

    Idea的File->Project Structure->左侧Modules: 选择自己的项目如图: 每个依赖项的Scope选项进行该jar包的相关操作设置,默认为compile,根据需 ...

  3. C89标准和C99标准C11标准的区别

    转载 C89标准和C99标准C11标准的区别 C99对C89的改变 1.增加restrict指针 C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借 ...

  4. CentOS7 安装Postgresql 11+ 源码编译安装Postgis-2.5.2

    ####安装Postgresql-11yum install zlib-devel gcc makegroupadd postgresuseradd -g postgres postgrespassw ...

  5. 简述vue中v-if和v-show的区别

    vue中的 v-if 和 v-show 二者都可以动态的控制元素的隐藏和显示,但是他们控制的原理是不同的 v-if v-if 控制元素显示或隐藏是把dom元素整个的渲染或者删除,如果删除,也就是页面中 ...

  6. 按字节读取txt文件缓存区大小设置多少比较好?

    读取 txt 文件常规写法有逐行读取和按照字节缓存读取,那么按照字节缓存读取时,设置缓存区多大比较好呢?百度了一下,没发现有说这个问题的,自测了一把,以事实说话. 常规读取方法如下: // 字节流读取 ...

  7. 安装FaaS

    [root@localhost ~]# [root@localhost ~]# new OS:centos-7 [root@localhost ~]# [root@localhost ~]# vim ...

  8. 构建LNMP+memcached服务

    通过PHP页面实现对memcached服务器的数据操作,实现以下目标: - 为PHP安装memcache扩展 - 创建PHP页面,并编写PHP代码,实现对memcached的数据操作 环境:部署LNM ...

  9. 你不知道的hostname命令

    一般hostname可以获取主机名,但是hostname实际上可以做更多的事情. 让我们先来看看它的帮助. Usage: hostname [-b] {hostname|-F file} set ho ...

  10. linux使用v 2ray

    一.安装配置服务端程序 是时候使用 了,因为相对安全,使用方法很简单,使用root权限执行以下命令即可 $ sudo -i 一顿安装后如图 输入 命令可以查看链接,然后在客户端使用这个链接就能配置好了 ...