基于docker部署skywalking实现全链路监控
一、概述
简介
skywalking是一个开放源码的,用于收集、分析,聚合,可视化来自于不同服务和本地基础服务的数据的可观察的平台,
skywalking提供了一个简单的方法来让你对你的分布式系统甚至是跨云的服务有清晰的了解。
它更像是一个现代的系统性能管理,特别为分布式系统而设计。
功能
skywalking提供了在很多不同的场景下用于观察和监控分布式系统的方式。
首先,像传统的方法,skywalking为java,c#,Node.js等提供了自动探针代理.
同时,它为Go,C++提供了手工探针。
随着本地服务越来越多,需要越来越多的语言,掌控代码的风险也在增加,
Skywalking可以使用网状服务探针收集数据,以了解整个分布式系统。
通常,skywalking提供了观察service,service instance,endpoint的能力。
- service: 一个服务
- Service Instance: 服务的实例(1个服务会启动多个节点)
- Endpoint: 一个服务中的其中一个接口
架构图
二、快速部署
环境说明
操作系统:centos 7.6
docker版本:19.03.12
ip地址:192.168.31.146
配置:4核8g
下载镜像
docker pull elasticsearch:7.5.1
docker pull apache/skywalking-oap-server:6.6.0-es7
docker pull apache/skywalking-ui:6.6.0
说明:使用最新版本的elasticsearch和skywalking-oap-server镜像,启动会有问题。
因此,必须使用上述版本才可以。
下载源码包,下面会用到agent
https://archive.apache.org/dist/skywalking/6.6.0/apache-skywalking-apm-6.6.0.tar.gz
安装elasticsearch
修改系统参数
vi /etc/sysctl.conf
调整参数
vm.max_map_count=262144
刷新参数
sysctl -p
启动elasticsearch
docker run -d --name=es7 \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" elasticsearch:7.5.1
等待30秒左右,查看docker日志,如果有出现
"publish_address {172.17.0.2:9300}, bound_addresses {0.0.0.0:9300}"
说明启动成功了。
创建持久化目录,并重启启动elasticsearch
mkdir -p /data/elasticsearch
docker cp es7:/usr/share/elasticsearch/data /data/elasticsearch/
docker cp es7:/usr/share/elasticsearch/logs /data/elasticsearch/
docker rm -f es7
docker run -d --name=es7 \
--restart=always \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
elasticsearch:7.5.1
安装oap
注意:等待elasticsearch完全启动之后,再启动oap
docker run --name oap --restart always -d \
--restart=always \
-e TZ=Asia/Shanghai \
-p 12800:12800 \
-p 11800:11800 \
--link es7:es7 \
-e SW_STORAGE=elasticsearch \
-e SW_STORAGE_ES_CLUSTER_NODES=es7:9200 \
apache/skywalking-oap-server:6.6.0-es7
说明:这里指定elasticsearch 来存储数据
安装ui
docker run -d --name skywalking-ui \
--restart=always \
-e TZ=Asia/Shanghai \
-p 8088:8080 \
--link oap:oap \
-e SW_OAP_ADDRESS=oap:12800 \
apache/skywalking-ui:6.6.0
注意:这里映射的端口为8088,防止端口冲突。
三、spring-boot实例部署
项目地址
这里一个SpringBootDemo为例,github地址:
https://github.com/solochen84/SpringBootDemo
制作jar包
找一台安装了jdk1.8和maven的服务器,使用maven构建命令进行打包
mvn clean package
打包好之后,会在target目录,生成jar包,文件名为:spring-boot-demo-0.0.1-SNAPSHOT.jar
启动jar包
原来的启动方式为:
java -jar spring-boot-demo-0.0.1-SNAPSHOT.jar
那么使用skywalking agent,启动命令为:
java -javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=xxxtest -Dskywalking.collector.backend_service=127.0.0.1:11800 -jar /opt/spring-boot-demo-0.0.1-SNAPSHOT.jar
说明:
-javaagent 指定agent包位置。这里我将apache-skywalking-apm-6.6.0.tar.gz解压到/opt目录了,因此路径为:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar
-Dskywalking.agent.service_name 指定服务名
-Dskywalking.collector.backend_service 指定skywalking oap地址,由于在本机,地址为:127.0.0.1:11800
-jar 指定jar包的路径,这里我直接放到/opt/目录了。
访问ui
http://192.168.31.146:8088/
效果如下:
因为机制为懒加载,所以当只有你调用该java接口时,页面上才有显示。所以第一次访问时,数据是没有的。
访问demo接口
SpringBootDemo启动端口为:8080,api接口有3个
GET /
GET /?name=cheney
GET /random
页面多刷新几次接口
http://192.168.31.146:8080/
http://192.168.31.146:8080/?name=cheney
http://192.168.31.146:8080/randomAbout
仪表盘
刷新ui页面,选择最近15分钟的。
拓扑图
点击拓扑图,选择最近15分钟的
可以看到xxxtest,就是我们定义的服务名称
追踪
同样,可是查看最近15分钟的。
告警
查看最近15分钟的。
指标
这里可以选定3个指标,进行对比。
本文参考链接:
https://blog.csdn.net/OptimusPP/article/details/106425807
基于docker部署skywalking实现全链路监控的更多相关文章
- 基于Docker 部署Jmeter + Grafana + InfluxDB 性能测试监控配置(亲测可用)
工具介绍: InfluxDB:是一款用Go语言编写的开源分布式时序.事件和指标数据库,无需外部依赖.该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, lo ...
- 全链路监控系统开源Pinpoint入门视频教程(最新版本1.8)
pinpoint支持的模块 源码:https://github.com/naver/pinpoint技术概述:https://skyao.gitbooks.io/learning-pinpoint/c ...
- 使用docker部署skywalking
使用docker部署skywalking Intro 之前在本地搭建过一次 skywalking + elasticsearch ,但是想要迁移到别的机器上使用就很麻烦了,于是 docker 就成了很 ...
- 基于Docker部署nodejs应用
基于Docker部署nodejs应用 背景 公司基于Vue.js的项目最近需要部署到云端,因此需要先行在公司内部Docker环境下验证相关技术,因而有本文之前提. 本文展示在Docker容器中,应用部 ...
- 基于Docker部署ETCD集群
基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...
- Ubuntu系统下基于docker部署Jenkins环境
本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中, 至于docker如何安装,请参考https://www.cnblogs.com/xingyunqiu/p/115 ...
- 每天学点SpringCloud(十二):Zipkin全链路监控
Zipkin是SpringCloud官方推荐的一款分布式链路监控的组件,使用它我们可以得知每一个请求所经过的节点以及耗时等信息,并且它对代码无任何侵入,我们先来看一下Zipkin给我们提供的UI界面都 ...
- 基于docker部署jenkins
1. 拉镜像 和其他的部署的镜像的方式一样,通常是直接使用docker search jenkins 然后直接docker pull jenkins 此时,在安装插件的时候发现插件都安装失败,提示je ...
- CentOS中实现基于Docker部署BI数据分析
作为一个专业小白,咱啥都不懂. linux不懂,docker不懂. 但是我还想要完成领导下达的任务:在linux中安装docker后部署数据可视化工具.作为一名敬业 的打工人摆烂不可以,躺平不可以,弱 ...
随机推荐
- SOLID:面向对象设计的五个基本原则
在程序设计领域,SOLID 是由罗伯特·C·马丁在 21 世纪早期引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则.当这些原则被一起应用时,它们使得一个程序员开发一个容易进行软 ...
- AtCoder Beginner Contest 184 F - Programming Contest (双向搜索)
题意:有一个长度为\(n\)的数组,你可以从中选一些数出来使得它们的和不大于\(t\),问能选出来的最大的和是多少. 题解:\(n\)的数据范围是\(40\),直接二进制枚举贴TLE,之前写过这样的一 ...
- fzu2200 cleaning
Problem Description N个人围成一圈在讨论大扫除的事情,需要选出K个人.但是每个人与他距离为2的人存在矛盾,所以这K个人中任意两个人的距离不能为2,他们想知道共有多少种方法. In ...
- Selenium和ChromeDriver下载地址
Selenium 官方所有版本: https://selenium-release.storage.googleapis.com/index.html 镜像所有版本:https://npm.taoba ...
- codeforces 1C (非原创)
C. Ancient Berland Circus time limit per test 2 seconds memory limit per test 64 megabytes input sta ...
- python阿里云api查询域名是否可以注册(CheckDomain)
import requests from fun import * from urllib import parse url ='http://domain.aliyuncs.com/?' acces ...
- linux下新建用户
新建用户的两种方式: 一步步创建 useradd -m user1 #-m 是建立家目录 passwd user1 #设置密码 usermod -a -G root user1 #加入管理员 chsh ...
- Linux下开发STM32单片机
一开始学习51单片机就是用的MDK这个IDE软件,IDE软件虽然看起来直观好像更加容易入门(因为有界面看起来很形象),但是实际上IDE却是向我们这些入门人员隐藏了背后真实存在的过程,让我们以为编译就是 ...
- hihoCoder Challenge 3
#1065 : 全图传送 时间限制:30000ms 单点时限:3000ms 内存限制:256MB 描述 先知法里奥是 Dota 系列中的一个英雄.机动性强,推塔能力一流,打钱速度快,传送技能使先知可以 ...
- CSS event pass through
CSS event pass through CSS 黑科技 / CSS 技巧: css 禁用点击事件, 实现事件冒泡的效果 https://caniuse.com/?search=CSS point ...