1、Skywalking 分为两部分:backend(oapService)、UI(webappService)
2、下载
略
3、安装
解压即用:tar -zxvf apache-skywalking-apm-6.5.0.tar.gz
4、修改配置
(1)vi config/application.yml
Skywalking 默认使用 h2 数据库不能持久化,改为 mysql 又存在性能瓶颈,可以使用 elasticsearch 作为数据存储中间件,注释掉 h2 的配置,放开 elasticsearch 的注释,修改 clusterNodes 填写 elasticsearch 的 ip:port 。参考文章:ElasticSearch 在 CentOS7 上 安装、启动、使用
storage:
elasticsearch:
nameSpace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.195.134:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
user: ${SW_ES_USER:""}
password: ${SW_ES_PASSWORD:""}
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
# Those data TTL settings will override the same settings in core module.
recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
# Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
# h2:
# driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
# url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
# user: ${SW_STORAGE_H2_USER:sa}
# metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
(2)vi webapp/webapp.yml
webapp 是 Skywalking UI界面的服务,默认端口号8080,容易与其他服务冲突,所以这里改为 18088
server:
port: 18088
5、启动
启动 Skywalking 之前需要先启动 ElasticSearch,因为 Skywalking 使用了 ElasticSearch 作为数据存储中间件,参考文章:ElasticSearch 在 CentOS7 上 安装、启动、使用
(1)单独启动 backend(oapService)
./bin/oapService.sh
(2)单独启动 UI(webappService)
./bin/webappService.sh
(3)如果想要两个服务同时启动,可以不用上边两个脚本,用下边这个即可:
./bin/startup.sh
启动效果如下:(注意:等待 elasticsearch 完全启动后,访问 http://192.168.195.134:9200 返回 json 数据后再启动 Skywalking)
6、探针 agent
Skywalking 监听服务实现链路追踪靠的是探针 agent,我们需要把 Skywalking 安装目录中的 agent 文件夹复制到被监听的应用服务旁边,一个应用一个探针。如下图:
编辑配置文件:
vi agent/config/agent.config
编辑 应用服务名、Skywalking 的 ip:port :
# The service name in UI
agent.service_name=${SW_AGENT_NAME:alicloudProvider-192.168.195.129}
......
# Backend service addresses.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.195.134:11800}
consumer 应用的探针配置同上
7、启动应用
启动应用时需要指定 Skywalking 的探针:
nohup java -javaagent:/javaProjects/alicloud-provider/agent/skywalking-agent.jar -jar alicloud-nacos-provider-1.0-SNAPSHOT.jar &
nohup java -javaagent:/javaProjects/alicloud-consumer/agent/skywalking-agent.jar -jar alicloud-nacos-consumer-1.0-SNAPSHOT.jar &
或者:
nohup java -Xms256m -Xmx256m -javaagent:/javaProjects/alicloud-provider/agent/skywalking-agent.jar -jar alicloud-nacos-provider-1.0-SNAPSHOT.jar >/dev/null 2>&1 &
nohup java -Xms256m -Xmx256m -javaagent:/javaProjects/alicloud-consumer/agent/skywalking-agent.jar -jar alicloud-nacos-consumer-1.0-SNAPSHOT.jar >/dev/null 2>&1 &
刷新 Skywalking 的 UI 页面: