介绍

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. application.properties配置文件

    SpringBoot可以识别两种格式的配置文件,分别是yml文件与properties文件,可以将application.properties文件换成application.yml applicati ...

  2. iOS - 国内注册境外 Apple id 账号

    注册前准备工作 需要手头MAC一台 AppStore下载VPN Plus FQ到美国(ipip.net 查看当前ip 是否是在境外 当前ip 在境外才可以哦) 动手搞起来 https://applei ...

  3. [转] C#中的delegate 和 event

    转至:here 终于会用c#中的delegate(委托) 作者:qq826364410 引言 Delegate是Dotnet1.0的时候已经存在的特性了,但由于在实际工作中一直没有机会使用Delega ...

  4. 使用PsExec获取shell执行命令

    PsExec PsExec是pstools工具组套件的一部分,确成为了渗透利器,下载地址:点击这里下载 连接shell 我的Windows Server 2012默认打开域网络防火墙的时候,是不能连接 ...

  5. Vue2.0 脚手架代码详解

    参考作者:https://www.jianshu.com/p/2b661d01eaf8 只是为了方便个人学习. 来看一下脚手架创建后的项目目录  说明:在*.vue文件,template标签里写htm ...

  6. GitLab使用公钥SSH key登录

    SSH key提供了一种与GitLab通信的方式,能够不输密码就进行版本控制 第一步,检查SSH key是否存在 如果存在则把SSH Key放到GitLab上,如果不存在则生成新的SSH Key,再放 ...

  7. C和C指针小记(十七)-使用结构和指针-链表

    1.链表 链表(linked list)即使是一些包含数据的独立数据结构的(Node)集合. 链表中的每个节点通过链或指针链接在一起. 程序通过指针访问链表中的节点. 节点通常是动态分配的,但也有由节 ...

  8. 转 docker创建私有仓库和k8s中使用私有镜像

    docker私有仓库建立 环境说明我们选取192.168.5.2做私有仓库地址yum install docker -y1.启动docker仓库端口服务 docker run -d -p 5000:5 ...

  9. AngularJS实现可伸缩的页面切换

    AngularJS实现可伸缩的页面切换 AngularJS 1.2 通过引入基于纯CSS class的切换和动画,在一个单页面应用创建页面到页面的切换变得更加的容易.只需要使用一个ng-view,让我 ...

  10. webpack介绍 安装 常用命令

    Webpack是一款用户打包前端模块的工具,它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑 ...