SkyWalking 的核心是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进行分析和聚合,存储到 Elasticsearch、H2、MySQL、TiDB 等其一即可,最后我们可以通过 SkyWalking UI 的可视化界面对最终的结果进行查看。Skywalking 支持从多个来源和多种格式收集数据:多种语言的 Skywalking Agent 、Zipkin v1/v2 、Istio 勘测、Envoy 度量等数据格式。
skywalking可以实现无侵入性的监控项目运行的指标和分布式调用链路。
skywalking的github源码
1. 文件下载
选择对应的版本,使用tar zxvf apache-skywalking-apm-8.2.0.tar.gz
解压到目录中。
2. 启动oap项目
启动oap项目收集项目运行的数据,并持久化到介质中。
进入:apache-skywalking-apm-bin/config/application.yml
目录下。
默认使用h2内存缓存来保存数据(数据不能持久化,无序本地安装h2。使用默认配置就可以开启skywalking)
下面使用mysql作为存储介质:
storage:
selector: ${SW_STORAGE:mysql}
mysql:
properties:
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/sky"}
dataSource.user: ${SW_DATA_SOURCE_USER:root}
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:123456}
dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
maxSizeOfArrayColumn: ${SW_STORAGE_MAX_SIZE_OF_ARRAY_COLUMN:20}
numOfSearchableValuesPerTag: ${SW_STORAGE_NUM_OF_SEARCHABLE_VALUES_PER_TAG:2}
注意:需要将mysql的驱动包放入到apache-skywalking-apm-bin/oap-libs
目录下,否则会出现找不到驱动的异常。
在apache-skywalking-apm-bin/bin
中执行sh oapService.sh
命令。
出现下面命令表示启动成功:
org.eclipse.jetty.server.Server - 399 [main] INFO [] - Started @13133ms
执行:可以得到进程id,可以使用kill -9 Pid
关闭服务。
ps -ef | grep oap
3. 启动UI项目
进入apache-skywalking-apm-bin/webapp/webapp.yml
配置文件中。修改项目端口号:
server:
port: 9001
启动项目:apache-skywalking-apm-bin/bin
中执行sh webappService.sh
命令。
4. 监控实际项目
在实际项目中,启动项只需要配置
--javaagent:/Users/xxx/Documents/apache-skywalking-apm-bin/agent/skywalking-agent.jar
便可以完成skywalking数据的上报。
项目会读取skywalking-apm-bin/agent/config
目录下的配置信息。
比较常用的配置
# The service name in UI(在UI上改服务展示的名字)
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
# Backend service addresses(即oap项目的地址).
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
【注意:实际项目中,每一台服务器中只需要一个agent目录即可】。
service_name
的配置可以在启动项中进行动态的配置。
-javaagent:/Users/xxx/Documents/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=xx
idea启动.png
5. 运行结果
调用实际的项目
调用接口.png可以看到调用链路:http://localhost:9001/
网友评论