随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 。
最近在搞东西的时候突然老大要求做个平台监控,要什么
好在我有skywalking分布式追踪系统,于是我就开始研究这个东西,确实很牛*做到了无代码侵入的监控平台集成,关键是还是国人开源的!
废话不多说先挂个开源的github:github
下面先学会用,在学会原理是什么
下载地址
这里我们选择带有Mysql存储引擎的SkyWalking版本,大家各自选取对应的版本即可
ok下载完后在我们桌面解压后为如下
skywalking主要通过代理探针来进行监控,agent很重要
由于默认是用h2来进行持久化信息的,我们这边可以改成Mysql来持久化监控信息
找到config目录下的application.yml
修改存储方式为mysql
修改数据库jdbc连接信息
下一步懂得都懂,那肯定就需要mysql-connector-java-8.0.16写入mysql的
下载地址:mysql-connector-java-8.0.16
提取码:xsom
将下载后的包放入oap-libs外部包内
去你的数据库创建一个swtest的库,然后回来bin目录执行以下脚本
我们来看看数据库,已经创建了这么多表,牛逼,这我自己还分析个鬼啊,全交给人家吧
上一步完成各项配置后,我们就要开始监控本地项目了,还记得上面提到的agent吗在本地环境就是一个探针,由于我的项目和监控都是放在本地的,本地可以不用复制一份到项目去,如果是远程监控,那就得重新复制一份到项目中去,而且还得改些配置,这个我们之后来做,先整个本地的玩玩
记住当前当前agent的绝对路径,就是最长的那一串,这个我们之后有用
打开本地idea编辑VM options,加入如下一行,具体看图
-javaagent:D:\sorf\ideaReo\IOT\src\main\java\com\fehead\Iot\agent\skywalking-agent.jar
一切搞定切回,skyWalking目录下,启动startup.bat,要保证8080端口没被占哦
打开localhost:8080端口看到如下界面
实例状态信息 CPU JVM
全局界面监控
调用链路追踪
调用拓扑图
还有一系列更牛逼的信息这里就不一一展示了,真的做到了代码零侵入,通过代理的方式监控
由于监控与项目可能不在一台机子上,那我们开启远程监控就得先开启防火墙,这里就不演示开墙了,目前是一台服务器跑项目,一台跑监控
首先因为,具体步骤跟以上差不多,修改完mysql持久化后,需要用代理跑一个jar包,那我们直接复制agent目录到另一台服务器的随便一个目录下,这里agent它默认是向本地发送监控请求,那我们就得修改一下,同时你可以指定自己的项目名
打开agent目录下的agent.config文件
可以修改如下your_Application为你自己的项目名
再修改如下IP
在linux下可以直接输入以下
java -javaagent:/tmp/agent/agent/skywalking-agent.jar -Dskywalking.agent.service_name=你自己项目名
记住skywalking-agent.jar的路径一定为绝对路径
多个项目可以指定不同项目名来进行监控,但是agent可以复用同一个
至此,监控平台已经搭建完成,在之后的章节会陆续介绍skywalking如何运作及原理,二次开发,大家先玩玩~~