一.Skywalking介绍
1.简介
<1> 发展历程:2015年由个人吴晟(华为开发者)主导开源,作者是华为开发云监控产品 经理,主导监控产品的规划、技术路线及相关研发工作,也是OpenTracing分 布式追踪标准组织成员 ,该项目 2017年加入Apache孵化器,是一个分布式系 统的应用程序性能监控工具(APM),专为微服务、云原生架构和基于容器 (Docker、K8s、Mesos)架构而设计。
<2>介绍: Skywalking是一个可观测性分析平台和应用性能管理系统,它也是基于 OpenTracing规范、开源的AMP系统。Skywalking提供分布式跟踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。支持Java, .Net Core, PHP, NodeJS, Golang, LUA, c++代理。支持Istio +特使服务网格
2.官网
官方站点:http://skywalking.apache.org/
GitHub项目地址:https://github.com/apache/skywalking
演示地址:http://demo.skywalking.apache.org/ 账号:skywalking 密码:skywalking
3.skywalking核心功能
指标分析:服务(应用),实例(物理机),端点(接口)指标分析
问题分析:在运行时分析代码,找到问题的根本原因
服务拓扑:提供服务的拓扑图分析
依赖分析:服务实例和端点依赖性分析
服务检测:检测慢速的服务和端点
性能优化:根据服务监控的结果提供性能优化的思路
链路追踪:分布式跟踪和上下文传播
数据库监控:数据库访问指标监控统计,检测慢速数据库访问语句(包括SQL语句)
服务告警:服务告警功能
4.skywalking特点
(1)多语言自动探针,支持 Java、.NET Code 等多种语言。
(2)为多种开源项目提供了插件,为 Tomcat、 HttpClient、Spring、RabbitMQ、MySQL 等常见(3)基础设施和组件提供了自动探针。
(4)微内核 + 插件的架构,存储、集群管理、使用插件集合都可以进行自由选择。
支持告警。
(5)优秀的可视化效果。
5.skywalking架构
skyWalking整体可分为:客户端,服务端
(1)客户端
基于探针技术采集服务相关信息(包括跟踪数据和统计数据),然后将采集到的数据上报给skywalking的数据收集器
(2)服务端(分为OAP,Storage,WebUI)
<1> OAP:observability analysis platform可观测性分析平台,其实就是链路追踪系统的Collector收集器。负责接收客户端上报的数据,对数据进行分析,聚合,计算后将数据进行存储。
<2> Storage:skyWalking的存储介质,默认是采用H2,同时支持许多其他的存储介质,比如:ElastaticSearch,mysql等。
<3> WebUI:提供一些图形化界面展示对应的跟踪数据,指标数据等等。
二.Skywalking安装
1.安装前准备
Skywalking数据存储方式有2种,分别为H2(内存)和elasticsearch,如果数据量比较大,建议使用后者,工作中也建议使用后者。
需要准备如下组件:
1:elasticsearch,建议使用elasticsearch7.x
2:elasticsearch-hq,elasticsearch的管理工具,更方便管理elasticsearch
3:Skywalking
4:Skywalking-UI
2.docker-compose部署
(1)elasticsearch安装环境配置
<1>系统资源配置修改:
elasticsearch占用系统资源比较大,我们需要修改下系统资源配置,这样才能很好的运行elasticsearch,修改虚拟机配置, vi /etc/security/limits.conf ,追加内容。
* soft nofile 65536
* hard nofile 65536
<2>修改 vi /etc/sysctl.conf ,追加内容 :
vm.max_map_count=655360
<3>让配置立即生效
/sbin/sysctl -p
(2)使用docker-compose安装以上应用
<1>创建 docker-compose.yml 并配置如下
version: '3.3'
services:
elasticsearch:
image: elasticsearch:7.6.2
container_name: elasticsearch
restart: always
privileged: true
hostname: elasticsearch
ports:
- 9200:9200
- 9300:9300
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- TZ=Asia/Shanghai
networks:
- skywalking
ulimits:
memlock:
soft: -1
hard: -1
elasticsearch-hq:
image: elastichq/elasticsearch-hq
container_name: elasticsearch-hq
restart: always
privileged: true
hostname: elasticsearch-hq
ports:
- 5000:5000
environment:
- TZ=Asia/Shanghai
networks:
- skywalking
oap:
image: apache/skywalking-oap-server:8.3.0-es7
container_name: oap
hostname: oap
privileged: true
depends_on:
- elasticsearch
links:
- elasticsearch
restart: always
ports:
- 11800:11800
- 12800:12800
environment:
SW_STORAGE: elasticsearch7
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
TZ: Asia/Shanghai
volumes:
- ./config/alarm-settings.yml:/skywalking/config/alarm-settings.yml
networks:
- skywalking
ui:
image: apache/skywalking-ui:8.3.0
container_name: ui
privileged: true
depends_on:
- oap
links:
- oap
restart: always
ports:
- 8080:8080
environment:
SW_OAP_ADDRESS: oap:12800
TZ: Asia/Shanghai
networks:
- skywalking
networks:
skywalking:
driver: bridge
<2>一键启动
docker-compose up -d
<3>访问测试
启动成功后访问skywalking的webui页面:http://192.168.200.129:8080/