部署你的分布式调用链跟踪框架skywalking
使用docker-compose 一键部署你的分布式调用链跟踪框架skywalking
https://www.cnblogs.com/huangxincheng/p/9666930.html
一旦你的程序docker化之后,你会遇到各种问题,比如原来采用的本地记日志的方式就不再方便了,虽然你可以挂载到宿主机,但你使用 --scale 的话,会导致
记录日志异常,所以最好的方式还是要做日志中心化,另一个问题,原来一个请求在一个进程中的痉挛失败,你可以在日志中巡查出调用堆栈,但是docker化之后,
原来一个进程的东西会拆成几个微服务,这时候最好就要有一个分布式的调用链跟踪,类似于wcf中的svctraceview工具。
一:搭建skywalking
gihub地址是:https://github.com/apache/incubator-skywalking 从文档中大概看的出来,大体分三个部分:存储,收集器,探针,存储这里就选用推荐的
elasticsearch。收集器准备和es部署在一起,探针就有各自语言的实现了,总之这里就有三个docker container: es,kibana,skywalking, 如果不用容器编排工具
的话就比较麻烦。
  下面是本次搭建的一个目录结构:
- elasticsearch.yml - es的配置文件,不过这里有一个坑,就是一定要将 network.publish_host: 0.0.0.0 ,否则skywalking会连不上 9300端口。 
network.publish_host: 0.0.0.0
transport.tcp.port: 9300
network.host: 0.0.0.0
- elasticsearch.dockerfile - 在up的时候,将这个es文件copy到 容器的config文件夹下。 
FROM elasticsearch:5.6.4
EXPOSE 9200 9300
COPY elasticsearch.yml /usr/share/elasticsearch/config/
- application.yml - skywalking的配置文件,这里也有一个坑:连接es的地址中,配置的 clustername一定要修改成和es的clustername保持一致,否则会连不上,这里容器之间用link 
进行互联,所以es的ip改成elasticsearch就可以了,其他的ip改成0.0.0.0 。
- skywalking.dockerfile - 接下来就是 skywalking的 下载安装,使用dockerfile流程化。 
复制代码
FROM centos:7
LABEL username="hxc@qq.com"
WORKDIR /app
RUN yum install -y wget && 
yum install -y java-1.8.0-openjdk
RUN tar -xf apache-skywalking-apm-incubating-5.0.0-RC2.tar.gz && 
mv apache-skywalking-apm-incubating skywalking
RUN ls /app
copy文件
COPY application.yml /app/skywalking/config/application.yml
WORKDIR /app/skywalking/bin
USER root
RUN echo "tail -f /dev/null" >> /app/skywalking/bin/startup.sh
CMD ["/bin/sh","-c","/app/skywalking/bin/startup.sh" ]
复制代码
- docker-compose.yml - 最后就是将这三个容器进行编排,要注意的是,因为收集器会将数据放入到es中,所有一定要将es的data挂载到宿主机的大硬盘下,否则你的空间会不足的。 
复制代码
version: '3.1'
services:
elastic 镜像
elasticsearch:
build:
context: .
dockerfile: elasticsearch.dockerfile
# ports:
#   - "9200:9200"
#   - "9300:9300"
volumes:
- "/data/es2:/usr/share/elasticsearch/data"
kibana 可视化查询,暴露 5601
kibana:
image: kibana
links:
- elasticsearch
ports:
- 5601:5601
depends_on:
- "elasticsearch"
skywalking
skywalking:
build:
context: .
dockerfile: skywalking.dockerfile
ports:
- "10800:10800"
- "11800:11800"
- "12800:12800"
- "8080:8080"
links:
- elasticsearch
depends_on:
- "elasticsearch"
复制代码
二:一键部署
  要部署在docker中,你还得需要安装docker-ce 和 docker-compose,大家可以参照官方安装一下。
- Docker-ce 的安装
复制代码
sudo yum remove docker 
docker-client 
docker-client-latest 
docker-common 
docker-latest 
docker-latest-logrotate 
docker-logrotate 
docker-selinux 
docker-engine-selinux 
docker-engine
sudo yum install -y yum-utils 
device-mapper-persistent-data 
lvm2
sudo yum-config-manager 
--add-repo 
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce
复制代码
然后启动一下docker 服务,可以看到版本是18.06.1
[root@localhost ~]# service docker start
Redirecting to /bin/systemctl start  docker.service
[root@localhost ~]# docker -v
Docker version 18.06.1-ce, build e68fc7a
- docker-compose的安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- 最后在centos上执行 docker-compopse up --build 就可以了,如果不想terminal上运行,可以加 -d 使用后台执行。
从上图中可以看到 es,kibana,skywalking都启动成功了,你也可以通过docker-compose ps 看一下是否都起来了,netstat 看一下宿主机开放了哪些端口。
复制代码
[root@localhost docker]# docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                                                                                                  NAMES
9aa90401ca16        kibana                 "/docker-entrypoint.…"   2 minutes ago       Up 2 minutes        0.0.0.0:5601->5601/tcp                                                                                 docker_kibana_1
c551248e32af        docker_skywalking      "/bin/sh -c /app/sky…"   2 minutes ago       Up 2 minutes        0.0.0.0:8080->8080/tcp, 0.0.0.0:10800->10800/tcp, 0.0.0.0:11800->11800/tcp, 0.0.0.0:12800->12800/tcp   docker_skywalking_1
765d38469ff1        docker_elasticsearch   "/docker-entrypoint.…"   2 minutes ago       Up 2 minutes        9200/tcp, 9300/tcp                                                                                     docker_elasticsearch_1
[root@localhost docker]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      2013/dnsmasq
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1141/sshd
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1139/cupsd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1622/master
tcp6       0      0 :::8080                 ::												
部署你的分布式调用链跟踪框架skywalking的更多相关文章
- 使用docker-compose 一键部署你的分布式调用链跟踪框架skywalking
		一旦你的程序docker化之后,你会遇到各种问题,比如原来采用的本地记日志的方式就不再方便了,虽然你可以挂载到宿主机,但你使用 --scale 的话,会导致 记录日志异常,所以最好的方式还是要做日志中 ... 
- 分布式调用链跟踪工具Jaeger?两分钟极速体验
		欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ... 
- istio分布式调用链Jaeger
		1.安装 kubectl apply -n istio-system -f https://raw.githubusercontent.com/jaegertracing/jaeger-kuberne ... 
- idou老师教你学Istio 22 : 如何用istio实现调用链跟踪
		大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等一些功能. 每一个功能都帮助我们在不同场景中实现不同的业务.那么其中比如流量监控这种复杂的功能Istio是如何让我们在不同的应用中实现 ... 
- 调用链系列一、Zipkin架构介绍、Springboot集承(springmvc,HttpClient)调用链跟踪、Zipkin UI详解
		1.Zipkin是什么 Zipkin分布式跟踪系统:它可以帮助收集时间数据,解决在microservice架构下的延迟问题:它管理这些数据的收集和查找:Zipkin的设计是基于谷歌的Google Da ... 
- Spring Cloud 微服务六:调用链跟踪Spring cloud sleuth +zipkin
		前言:随着微服务系统的增加,服务之间的调用关系变得会非常复杂,这给运维以及排查问题带来了很大的麻烦,这时服务调用监控就显得非常重要了.spring cloud sleuth实现了对分布式服务的监控解决 ... 
- spring cloud 学习(8) - sleuth & zipkin 调用链跟踪
		业务复杂的微服务架构中,往往服务之间的调用关系比较难梳理,一次http请求中,可能涉及到多个服务的调用(eg: service A -> service B -> service C... ... 
- APM调用链产品对比
		APM调用链产品对比 随着企业经营规模的扩大,以及对内快速诊断效率和对外SLA(服务品质协议,service-level agreement)的追求,对于业务系统的掌控度的要求越来越高,主要体现在: ... 
- 基于Cat的分布式调用追踪
		Cat是美团点评出的一款APM工具,同类的产品也有不少,知名的开源产品如zipkin和pinpoint:国内收费的产品如oneapm.考虑到Cat在互联网公司的应用比较广,因此被纳入选型队列,我也有幸 ... 
随机推荐
- Loadrunder脚本篇——Run-time Settings之Browser Enmulation
			浏览器模拟 所有Internet Vuser Header包含一个标识将被模拟的浏览器类型(或无线工具包)的User Agent header.例如User-Agent: Mozilla/3.01Go ... 
- oracle 定时删除3天前的备份数据
			不需要保留那么多,按公司要求只需要保留一个星期的即可. 1.那么有什么方法自动删除7天以前备份的*.log文件呢? 2.服务器过多,不可能一一手动创建,有没有自动完成这个创建计划任务的批处理呢? 首先 ... 
- linux alsa pcm(此pcm非硬件pcm接口)
			转:https://blog.csdn.net/crycheng/article/details/7095899 CODEC :音频芯片的控制,比如静音.打开(关闭)ADC(DAC).设置ADC(DA ... 
- springboot中Controller没有被扫描
			今天给客户开发登陆的密码加密需求,研究一下想,需要在本地搭一套环境,前台用js实现RAS加密,后台使用java解密.本是一套非常简单的环境,看最近springboot比较常用,所以想要搭一下sprin ... 
- 快乐学习 Ionic Framework+PhoneGap 手册1-2{介绍Header,Content,Footer的使用}
			*先运行第一个简单的APP,介绍Header,Content,Footer的使用 {2.1}运行一个简单的APP,效果如下 {2.2}Header代码 <ion-header-bar class ... 
- dll和lib
			lib:里面包含了很多源代码,工程会将这些源代码加入自己的项目中编译: dll:动态编译库,允许可执行文件在运行中加载里面的资源. 使用lib需注意两个文件:(1).h头文件,包含lib中说明输出的类 ... 
- Docker 搭建一个Docker应用栈
			Docker应用栈结构图 Build Django容器 编写docker-file FROM django RUN pip install redis build django-with-redis ... 
- utf-8,Unicode和ASCII区别
			一.ASCII 码 我们知道,计算机内部,所有信息最终都是一个二进制值.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte).也就是说,一个 ... 
- js多个<ul>相应不同的点击事件
			$('ul').on("click","li#left",function(){ currentProvince = $(this).text().replac ... 
- 简学Python第五章__模块介绍,常用内置模块
			Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ... 
