作者:diuhunpo_813 | 来源:互联网 | 2023-09-16 19:14
apm (Application Performance Managment :应用性能管理)简写,业界有很多成熟的收费工具,听云、OneAPM等。当然也有开源的apm,git地址: https://github.com/wu-sheng/sky-walking。功能方面当然和收费的没法比,但是了解一下也挺不错的,skywalking采用elasticsearch数据存储。了解es以及看过skywalking原码的肯定会说有很多弊端,毕竟是开源的嘛,分享精神以及设计架构挺值得学习的,希望越来越好,本期针对V3.1版本,整体大致分为 collector、web、agent、es 这几部分,应用到项目中也肯容易。v3.1支持es版本为5.2x,5.3x。官网文档wiki地址
1.首先搭建es 下载地址,Mac选择TAR,
解压:
tar -zxvf elasticsearch-5.3.3.tar.gz
cd elasticsearch-5.3.2
config下面elasticsearch.yml为es的配置文件
配置 cluster.name: myesdb
。此名称需要和collector配置文件一致。
启动es
./bin/elasticsearch
2安装部署collector
下载 collector,
解压安装包tar -xvf skywalking-collector.tar.gz
,windows用户可以选择zip包;
设置config目录下的collector.config
配置文件;
#配置es(节点,多个逗号分隔)
es.cluster.nodes=127.0.0.1:9300
#es集群名称
es.cluster.name = myesdb
es.cluster.transport.sniffer = true
#collector当前主机名或者IP地址,请使用真实的地址,默认为127.0.0.1
cluster.current.hostname = 127.0.0.1
# 监听端口.
cluster.current.port = 11800
#RESTful
http.hostname=127.0.0.1
http.port=12800
启动:
./bin/startup.sh
Starting collector....
Collector started successfully!
注意:collector-service.sh文件中请检查自己的JAVA_HOME是否配置,.sh文件中名称也要对应到环境变量中
3配置web
下载地址
解压tar -xvf skywalking-web.tar.gz 同样windows用户可以选择zip包;
设置config目录下的collector_config.properties配置文件
#collector服务配置
collector.servers[0]=127.0.0.1:12800
设置config目录下的application.properties 配置文件
#web服务端口
server.port = 8088
启动
./bin/startup.sh
Starting web service....
Skywalking Web started successfully!
打开http://localhost:8088/ 可以看到
空白无所谓,因为还没有在项目中部署agent,没有收集到数据,下面我们开始部署agent
文档地址
按照文档在agent.jar同级目录下创建sky-walking.config 文件
# 当前的应用编码,最终会显示在webui上。
# 建议一个应用的多个实例,使用有相同的application_code。请使用英文
agent.application_code=myproject
# 默认为1,表示启动采样机制,即每条调用链都会被追踪并上报
# 大于一时,则表示每N次访问,上报一条。
# 小于等于0位非法。
agent.sampling_cycle=1
# Collector REST-Service 服务地址.
# e.g.
# 单节点配置:SERVERS="127.0.0.1:8080"
# 集群配置:SERVERS="10.2.45.126:8080,10.2.45.127:7600"
collector.servers=127.0.0.1:12800
# Collector 接受追踪信息REST-Service 服务名称.
# 默认不需要修改
collector.service_name=/segments
# 向collector发送数据时,单次调用的最大容量
collector.batch_size=50
# 内部缓冲池大小,此值必须是2的指数倍。
# 相关资料: https://github.com/LMAX-Exchange/disruptor
buffer.size=512
# 日志文件名称
logging.file_name=skywalking-api.log
# 日志文件路径
# 默认为空, 使用"system.out"输出日志,一般会输出到中间件或者应用的控制台日志中。
logging.dir=
# 日志文件最大大小
# 如果超过此大小,则会生成新文件。
# 默认为300M
logging.max_file_size=314572800
# 日志级别,默认为DEBUG。
logging.level=DEBUG
启动我们项目
java -javaagent:/Users/xxx/java/software/skywalking-agent.jar -jar wp-xx-SNAPSHOT-exec.jar --server.port=8081
访问我们项目产生访问数据,刷新我们skywalking-web 页面 看到数据呈现效果:
同样我们可以观察某次请求结果
以上是整个部署后的效果,其中很多程序在ping redis,检测线程的可用性。然后几分钟后统计了下es里的数据条数,没有正常访问数据的情况下产生了近 "hits": {"total": 13487, 条数据,用在生成环境堪忧,esindex没有按照规定生成,后期数据处理的话,很费劲。感谢开源,感谢分享,一些测试环境排查问题还是不错的。