目录
分布式链路追踪
Skywalking的特点
整体架构
安装node-js
安装 es-head
安装es
skywalking
部署应用服务
配置警告信息
过滤路径
启动的服务
源码地址
APM (Application Performance Management) 即应用性能管理系统,是对企业系统即时监控以实现对应用程序性能管理和故障管理的系统化的解决方案。应用性能管理,主要指对企业的关键业务应用进行监测、优化,提高企业应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本。
pinpoint官网:https://github.com/naver/pinpoint
Pinpoint是由一个韩国团队实现并开源,针对Java编写的大规模分布式系统设计,通过JavaAgent的机制做字节代码植入,实现加入traceid和获取性能数据的目的,对应用代码零侵入。(监控太全面,影响系统性能)
skywalking: http://skywalking.apache.org
SkyWalking是apache基金会下面的一个开源APM项目,为微服务架构和云原生架构系统设计。它通过 探针自动收集所需的指标,并进行分布式追踪。通过这些调用链路以及指标,Skywalking APM会感知 应用间关系和服务间关系,并进行相应的指标统计。Skywalking支持链路追踪和监控应用组件基本涵盖 主流框架和容器,如国产RPC Dubbo和motan等,国际化的spring boot,spring cloud
Zipkin 是由 Twitter 开源,是分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监 控跟踪。Zipkin 基于 Google 的 Dapper 论文实现,主要完成数据的收集、存储、搜索与界面展示。
CAT 是由大众点评开源的项目,基于 Java 开发的实时应用监控平台,包括实时应用监控,业务监控,可以提供十几张报表展示。(侵入式)
es 集群安装参考(该测试使用的单节点部署): https://blog.csdn.net/yang_zzu/article/details/109623967
es 的版本和 jdk 的版本是有匹配关系的,在官网上找了一圈也没找到,只能在安装的时候试一下了,如果不匹配,则会给出提示信息
7.4.0, jdk8 能够正常使用
es下载指定版本: https://www.elastic.co/cn/downloads/elasticsearch
下载地址: https://nodejs.org/en/download/
解压缩,参数为 -xvJf
tar -xvJf node-v14.15.4-linux-x64.tar.xz
添加环境变量
vim /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_271-amd64
JRE_HOME=/usr/java/jdk1.8.0_271-amd64/jre
HADOOP_HOME=/app/hadoop-3.2.1
GIT_HOME=/usr/local/git
MAVEN_HOME=/app/apache-maven-3.6.3
NODE_HOME=/app/node-v14.15.4-linux-x64
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$GIT_HOME/bin:$MAVEN_HOME/bin:$NODE_HOME/bin
export JAVA_HOME JRE_HOME HADOOP_HOME GIT_HOME MAVEN_HOME CLASS_PATH NODE_HOME PATH
查看node版本
node -v
关闭防火墙
systemctl stop firewalld.service
下载源码
git clone git://github.com/mobz/elasticsearch-head.git
进入到文件夹
cd elasticsearch-head
切换分支
git switch master
安装npm
yum -y install npm
切换数据源
npm config set registry https://registry.npm.taobao.org
清空缓存
npm cache clean --force
安装es-head服务
npm install
后台启动es-head服务
npm run start &
验证
访问 : http://192.168.44.10:9100/ 会出现head的控制台页面
新建用户
useradd elastic
修改密码
passwd elastic
创建文件夹
mkdir /elasticsearch
修改文件夹权限
chmod 775 /elasticsearch/
修改文件夹属组
chgrp elastic elasticsearch/
移动压缩包
mv elasticsearch-7.4.0-linux-x86_64.tar.gz /elasticsearch/
切换文件夹
cd /elasticsearch
修改文件所属权限
chown elastic:elastic elasticsearch-7.4.0-linux-x86_64.tar.gz
切换用户
su elastic
解压缩
tar -xvzf elasticsearch-7.4.0-linux-x86_64.tar.gz
切换文件夹
cd /elasticsearch/elasticsearch-7.4.0/config/
修改配置文件
vim elasticsearch.yml
添加配置内容
node.name: yang10
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"
http.port: 9200
#[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
cluster.initial_master_nodes: ["yang10"]
切换为root用户
修改配置文件
vim /etc/security/limits.conf
elastic hard nofile 65536
elastic soft nofile 65536
修改配置文件
vim /etc/sysctl.conf
vm.max_map_count=262144
切换为elastic用户,如果是在另外一个会话窗口,则退出登录后再次进行登录,这样上面修改的配置文件才会生效
切换文件夹
cd /elasticsearch/elasticsearch-6.4.0/bin
启动服务
./elasticsearch
配置成功
下载地址: http://skywalking.apache.org/downloads/
解压缩
tar -xvzf apache-skywalking-apm-es7-8.4.0.tar.gz
切换文件夹
cd /app/apache-skywalking-apm-bin-es7/config
修改配置文件
vim application.yml
skywalking 8.4.0 可以选择使用哪种存储方式
切换文件夹
/app/apache-skywalking-apm-bin-es7/webapp
修改配置文件
切换文件夹
/app/apache-skywalking-apm-bin-es7/bin
启动oap服务
./oapService.sh
启动webui服务
./webappService.sh
验证
访问: http://192.168.44.10:9010/
服务源码: https://github.com/YANG-sty/study
将这几个服务进行打包,发到服务器上面
服务启动命令
-- eureka
java -javaagent:/app/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_eureka -jar eureka-server-8761.jar
-- 生产者1,需要mysql数据库
java -javaagent:/app/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_provide_7071 -jar service-provider-1-1.0-SNAPSHOT-exec.jar
-- 生产者2
java -javaagent:/app/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_provide_7072 -jar service-provider-2-1.0-SNAPSHOT-exec.jar
-- 消费者
java -javaagent:/app/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_consumer_9091 -jar service-consumer-1.0-SNAPSHOT-exec.jar
调用接口服务
-- get调用服务,存在调用失败的情况,因为生产者2,没有提供接口
192.168.44.10:9091/order/remote/12345
-- get调用服务,一直正常
http://192.168.44.10:9091/order/00000
-- get从mysql查询数据返回,存在调用失败的情况,因为生产者2,没有提供接口
http://192.168.44.10:9091/user/selectUserList
访问地址: http://192.168.44.10:9010/
产生超时信息: http://192.168.44.10:9091/order/timeout
查看产生的警告信息: http://192.168.44.10:9091/show
编写接口,用于接收警告的信息,与产生警告后的后续操作,发邮件短信等
修改配置文件
切换文件夹
/app/apache-skywalking-apm-bin-es7/config
编辑文件
vim alarm-settings.yml
webhooks:
- http://192.168.44.10:9091/webhook #出现警告信息后,调用consumer服务的/webhook接口
获取保存在内存中的警告信息: http://192.168.44.10:9091/show
拷贝jar包到 agent 目录下
cp /app/apache-skywalking-apm-bin-es7/agent/optional-plugins/apm-trace-ignore-plugin-8.4.0.jar /app/apache-skywalking-apm-bin-es7/agent/plugins/
切换文件夹
/app/apache-skywalking-apm-bin-es7/agent/config
添加配置文件
vim apm-trace-ignore-plugin.config
文件内容
版本一:失败
trace.ignore_path=${SW_AGENT_TRACE_IGNORE_PATH:/actuator/health/**,/eureka/**,Lettuce/**,Gson/**,Mysql/**}
版本二:失败
trace.ignore_path=/actuator/health/**,/eureka/**,Lettuce/**,Gson/**,Mysql/**
版本三:失败
将 apm-trace-ignore-plugin.config文件放到
/app/apache-skywalking-apm-bin-es7/config
针对每个服务配置自己的过滤条件(启动服务配置的过滤条件成功)
-Dskywalking.trace.ignore_path=/show
关闭之前启动的所有springboot服务
查询skywalking的oap服务
ps -ef | grep oap
杀死oap服务进程
kill -9 1234
切换目录
/app/apache-skywalking-apm-bin-es7/bin
再次启动oap服务
./oapService.sh
启动所有springboot服务
过滤掉,consumer的 /show 接口的访问监控
java -javaagent:/app/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_consumer_9091 -Dskywalking.trace.ignore_path=/show -jar service-consumer-1.0-SNAPSHOT-exec.jar
配置文件中的那些都没有过滤掉
需要较高的内存,8G 比较好能够相对流畅的运行
mysql
elasticSearch
elasticSearch-head
node-js
skywalking-oap
skywalking-webui
eureka-server
provide-server(2个)
consumer-server
https://github.com/YANG-sty/study