介绍

SkyWalking项目是由华为大牛吴晟开源的个人项目,目前已经加入Apache孵化器。SkyWalking项目的核心目标是针对微服务、Cloud Native、容器化架构提供应用性能监控和分布式调用链追踪功能,目前链路追踪和监控应用支持的组件包括主流框架和容器,如dubbo、motan、spring boot、spring cloud等。

整体架构如下图示:

整体主要分为三个部分:

1.skywalking-collector:链路数据归集器,数据可以保存在H2或ElasticSearch

2.skywalking-web:web的可视化管理后台,可以查看归集的数据

3.skywalking-agent:探针,用来收集和推送数据到归集器

环境搭建

接下来就从零开始搭建一套skywalking环境

第一步:安装Elasticsearch

1.下载Elasticsearch

curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.10.tar.gz

2.解压压缩包

tar -vxf elasticsearch-5.6.10.tar.gz

3.配置elasticsearch参数

cd /elasticsearch-5.6.10/config

vim elasticsearch.yml

设置参数:

cluster.name: CollectorDBCluster

node.name: CollectorDBCluster

network.host: 127.0.0.1

4.启动ElasticSearch

./bin/elasticsearch

发现启动失败,提示报错

OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2060255232 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/elasticsearch-5.6.10/hs_err_pid1738.log

查询资料发现是jvm内存设置问题,继续修改参数配置。

cd config

vim jvm.options

设置参数 -Xms4g 和 -Xmx4g  将-Xms2g和-Xmx2g注释 如下图示

再重新启动elasticsearch,发现再次启动失败,错误信息为:

Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93)
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:285)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)
Refer to the log for complete error details.

原因是Elasticsearch是不允许使用root账户启动,所以需要切换到其他用户再启动,最终elasticsearch启动成功。

[2019-03-26T23:40:37,583][INFO ][o.e.n.Node               ] [] initializing ...
[2019-03-26T23:40:37,677][INFO ][o.e.e.NodeEnvironment ] [5DFSDCK] using [1] data paths, mounts [[/ (/dev/disk1s1)]], net usable_space [187.5gb], net total_space [233.4gb], spins? [unknown], types [apfs]
[2019-03-26T23:40:37,678][INFO ][o.e.e.NodeEnvironment ] [5DFSDCK] heap size [1.9gb], compressed ordinary object pointers [true]
[2019-03-26T23:40:37,679][INFO ][o.e.n.Node ] node name [5DFSDCK] derived from node ID [5DFSDCK_QhibMsJg734Ysg]; set [node.name] to override
[2019-03-26T23:40:37,679][INFO ][o.e.n.Node ] version[5.6.10], pid[22167], build[b727a60/2018-06-06T15:48:34.860Z], OS[Mac OS X/10.13.6/x86_64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_191/25.191-b12]
[2019-03-26T23:40:37,679][INFO ][o.e.n.Node ] JVM arguments [-Xms2g, -Xmx2g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -Djdk.io.permissionsUseCanonicalPath=true, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j.skipJansi=true, -XX:+HeapDumpOnOutOfMemoryError, -Des.path.home=/Users/xingwuxu/tools/elasticsearch-5.6.10]
[2019-03-26T23:40:38,317][INFO ][o.e.p.PluginsService ] [5DFSDCK] loaded module [aggs-matrix-stats]
[2019-03-26T23:40:38,317][INFO ][o.e.p.PluginsService ] [5DFSDCK] loaded module [ingest-common]
[2019-03-26T23:40:38,317][INFO ][o.e.p.PluginsService ] [5DFSDCK] loaded module [lang-expression]
[2019-03-26T23:40:38,317][INFO ][o.e.p.PluginsService ] [5DFSDCK] loaded module [lang-groovy]
[2019-03-26T23:40:38,317][INFO ][o.e.p.PluginsService ] [5DFSDCK] loaded module [lang-mustache]
[2019-03-26T23:40:38,317][INFO ][o.e.p.PluginsService ] [5DFSDCK] loaded module [lang-painless]
[2019-03-26T23:40:38,317][INFO ][o.e.p.PluginsService ] [5DFSDCK] loaded module [parent-join]
[2019-03-26T23:40:38,317][INFO ][o.e.p.PluginsService ] [5DFSDCK] loaded module [percolator]
[2019-03-26T23:40:38,317][INFO ][o.e.p.PluginsService ] [5DFSDCK] loaded module [reindex]
[2019-03-26T23:40:38,317][INFO ][o.e.p.PluginsService ] [5DFSDCK] loaded module [transport-netty3]
[2019-03-26T23:40:38,318][INFO ][o.e.p.PluginsService ] [5DFSDCK] loaded module [transport-netty4]
[2019-03-26T23:40:38,318][INFO ][o.e.p.PluginsService ] [5DFSDCK] no plugins loaded
[2019-03-26T23:40:39,595][INFO ][o.e.d.DiscoveryModule ] [5DFSDCK] using discovery type [zen]
[2019-03-26T23:40:39,976][INFO ][o.e.n.Node ] initialized
[2019-03-26T23:40:39,976][INFO ][o.e.n.Node ] [5DFSDCK] starting ...
[2019-03-26T23:40:40,167][INFO ][o.e.t.TransportService ] [5DFSDCK] publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}
[2019-03-26T23:40:43,226][INFO ][o.e.c.s.ClusterService ] [5DFSDCK] new_master {5DFSDCK}{5DFSDCK_QhibMsJg734Ysg}{PFrWZNI9RHWNAneytiifdA}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)[, ]
[2019-03-26T23:40:43,242][INFO ][o.e.h.n.Netty4HttpServerTransport] [5DFSDCK] publish_address {127.0.0.1:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}
[2019-03-26T23:40:43,243][INFO ][o.e.n.Node ] [5DFSDCK] started
[2019-03-26T23:40:43,248][INFO ][o.e.g.GatewayService ] [5DFSDCK] recovered [0] indices into cluster_state

ElasticSearch启动成功,监听9200端口,此时在浏览器打开127.0.0.1:9200即可看到ElasticSearch的基本信息

第二步:安装skywalking

第一步:下载skywalking

curl -L -O https://mirrors.tuna.tsinghua.edu.cn/apache/incubator/skywalking/6.0.0-GA/apache-skywalking-apm-incubating-6.0.0-GA.tar.gz

第二步:解压压缩包

tar -vxf -vxf

第三步:修改配置文件,将数据存储h2配置注射,并取消es的注释

storage:
# h2:
# driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
# url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
# user: ${SW_STORAGE_H2_USER:sa}
elasticsearch:
# nameSpace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}

第四步:启动skywalking,执行bin目录下的start.sh命令

./start.sh

日志打印:

SkyWalking OAP started successfully!
SkyWalking Web Application started successfully!

skywalking启动成功,打开浏览器,在浏览器中输入地址localhost:8080会显示如下界面

skywalking后台默认登陆用户密码为:admin/admin,登陆之后界面为:

至此skywalking的基本环境搭建已完成,接下来就在实践中看看skywalking具体都有哪些功能及具体该怎么用?

skywalking学习之路---skywalking环境从零搭建部署的更多相关文章

  1. springboot 学习之路 5(打成war包部署tomcat)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  2. 企业运维 | MySQL关系型数据库在Docker与Kubernetes容器环境中快速搭建部署主从实践

    [点击 关注「 WeiyiGeek」公众号 ] 设为「️ 星标」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 ...

  3. JAVA学习之路(环境配置,)

    最近过去的寒假我就开始看一些JAVA的学习视频了,视频是毕向东老师的,讲得还不错,东北口音,欧了没? 首先是一些基础概念. 1.JAVA的三种技术架构 企业版 J2EE 标准版 J2SE 小型版 J2 ...

  4. 【Android菜鸟学习之路】环境搭建问题-修改AVD Path

    更改avd默认路径

  5. springcloud学习之路: (一) 最简单的搭建springcloud的方法

    参考资料: [JavaEE] 五分钟搭建SpringCloud环境, 进入微服务时代 感谢上篇博文大佬带领走进springcloud世界, 本博文主要目的为记录自己学习springcloud的点点滴滴 ...

  6. springmvc学习总结(一) -- 从零搭建,基础入门

    1.新建maven项目 参考mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)第一部分,修改配置 2.修改pom.xml 文件 <proj ...

  7. Kubernetes学习之路(八)之Kubeadm部署集群

    一.环境说明 节点名称 ip地址 部署说明 Pod 网段 Service网段 系统说明 k8s-master 192.168.56.11 docker.kubeadm.kubectl.kubelet ...

  8. osgi实战学习之路:2. maven+maven-bundle-plugin+karaf搭建osgi之HelloWorld

    环境准备: jdk版本号 jdk:1.7 karaf: 版本号:apache-karaf-3.0.1 下载地址: http://pan.baidu.com/s/1qWM4Y1u http://kara ...

  9. osgi实战学习之路:1. ant+bnd+felix搭建osgi之HelloWorld

    开发环境分为三个部份 osgi_provider: bundle开发环境,对外提供服务 osgi_consumer: 引用其他bundle osgi_main: 执行測试 项目主要内容 : commo ...

随机推荐

  1. 关于JVM内存的N个问题

    JVM的内存区域是怎么划分的? JVM的内存划分中,有部分区域是线程私有的,有部分是属于整个JVM进程:有些区域会抛出OOM异常,有些则不会,了解JVM的内存区域划分以及特征,是定位线上内存问题的基础 ...

  2. MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report e

    早上来到公司,线上的项目报错: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionExcepti ...

  3. Oracle数据库自带表空间

    需求:需要整理现场用户创建的表空间以及其存储数据,进行规范化管理.在整理用户现场建立的表空间时,需要排除掉非用户创建的表空间,所有首先需要那些表空间是用户创建的,那些是Oracle自带的. 本机测试建 ...

  4. iOS - 记住用户登录状态保存用户名密码

    我们在使用APP时常用的一个功能:用户第一次进入APP时自动进入登录注册页,提示用户注册登录,用户登录成功后才进入主页,再次进入APP时,不用再次登录就直接进到主页了,就算杀掉该APP进程再次进入,依 ...

  5. python sys.modules模块

    sys.modules是一个全局字典,该字典是python启动后就加载在内存中.每当程序员导入新的模块,sys.modules都将记录这些模块.字典sys.modules对于加载模块起到了缓冲的作用. ...

  6. 微信小程序之点赞和取消点赞

    wxml代码 <image wx:if="{{collection}}" src="/images/boy.png" bindtap="toCo ...

  7. php(数组方法

    什么是数组? 数组就是一组数据的集合 其表现形式就是内存中的一段连续的内存地址 数组名称其实就是连续内存地址的首地址 关于js中的数组特点 数组定义时无需指定数据类型 数组定义时可以无需指定数组长度 ...

  8. java应用,直接请求没问题,通过nginx跳转状态吗400

    今天配置金融的测试环境,直接调用java应用返回状态200,通通过nginx跳转,会返回400,真是一头雾水..... 参考文档: https://www.cnblogs.com/yanghj010/ ...

  9. ArcPy中mapping常见函数及用法1

    arcpy的mapping模块常见属性方法总结1.如何获取当前地图文档: 方式:mxd = mapping.MapDocument("CURRTENT")引用本地或者网络文档(ar ...

  10. x86汇编

    ● 实模式下32bit处理器,与8086兼容,例如loop 指令结束标志,只判断cx,而不是ecx ● IO端口 实际上是一些寄存器,在IO接口当中.向外设读写数据,要通过读写IO端口来实现. 有些计 ...