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没有按照规定生成,后期数据处理的话,很费劲。感谢开源,感谢分享,一些测试环境排查问题还是不错的。