SkyWalking部署
作者 |
刘畅 |
时间 |
2021-07-12 |
环境: centos7.5
主机名 |
IP |
安装软件 |
es01 |
192.168.30.47 |
elasticsearch 7.8.1 |
es02 |
192.168.30.48 |
elasticsearch 7.8.1 |
es03 |
192.168.30.49 |
elasticsearch 7.8.1 |
skywalking |
192.168.30.51 |
skywalking 8.6.0,jdk1.8.0_291 |
目录
3.2 将打包的skywalking agent部署到jar应用上
1 部署elasticsearch服务
在192.168.30.47-192.168.30.49节点上操作,并安装elasticsearch-head,这里省略安装步骤,详细
安装步骤可以参考: https://www.cnblogs.com/LiuChang-blog/p/14702941.html文档。
elasticsearch集群名称为: elk-cluster
# skywalking官网推荐将以下配置添加到elasticsearch.yml
thread_pool.write.queue_size: 1000
# Suitable for ElasticSearch 6 and 7
# 访问elasticsearch集群
http://192.168.30.47:9100/
2 部署SkyWalking
在192.168.30.51节点上操作
官方文档: https://skywalking.apache.org/docs/main/v8.6.0/readme/
2.1 部署jdk1.8
# tar -xzf jdk-8u291-linux-x64.tar.gz -C /home/
# cd /home/
# mv jdk-8u291-linux-x64/ jdk/
# vim /etc/profile
export JAVA_HOME=/home/jdk
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
export PATH=$JAVA_HOME/bin:$PATH
# source /etc/profile
2.2 下载SkyWaking
https://www.apache.org/dyn/closer.cgi/skywalking/8.6.0/apache-skywalking-apm-es7-8.6.0.tar.gz
# tar -xzf apache-skywalking-apm-es7-8.6.0.tar.gz -C /home/
# cd /home/
# mv apache-skywalking-apm-es7-8.6.0/ skywalking-es7/
# ls -l /home/skywalking-es7/
2.3 配置skywalking连接es7
# vim /home/skywalking-es7/config/application.yml
可选优化:
(1) 修改skywalking日志存储个数
# vim /home/skywalking-es7/config/log4j2.xml
<DefaultRolloverStrategy max="30"/>
# 默认30个,单个日志大小102400KB
# 建议值5
(2) 关于存储清理的配置
# vim /home/skywalking-es7/config/application.yml
core:
recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:3}
# Unit is day
# 记录: 影响记录数据,包括跟踪和报警。
# 建议3天
metricsDataTTL: ${SW_CORE_METRICS_DATA_TTL:7}
# Unit is day
# 指标: 影响所有指标,包括服务、实例、端点指标和拓扑图指标。
# 建议3天
(3) 优化skywalking存储elasticsearch配置
# vim /home/skywalking-es7/config/application.yml
elasticsearch7:
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:1}
# Shard number of new indexes
# es存储分片数,因为是3个es节点,这里设置为3
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:1}
# Replicas number of new indexes
# es存储分片副本数
# 建议1
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000}
# Execute the async bulk record data every ${SW_STORAGE_ES_BULK_ACTIONS} requests
# 批量提交的大小,通过增加该值,减少skwalking服务端和es之间交互,增加吞吐量
# 建议4000
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10}
# flush the bulk every 10 seconds whatever the number of requests
# 每间隔多少秒提交请求,建议值30
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2}
# the number of concurrent requests
# 增加现有请求数,建议值4
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
# 查询最大数量,建议值8000
2.4 启动skywalking
# /home/skywalking-es7/bin/startup.sh
# skywalking的日志文件在skywalking安装目录下的logs目录下。
# netstat -tunlp | grep java
11800为gRPC 服务agent连接端口
12800为REST 服务agent连接端口
2.5 访问skywalking UI
http://172.16.1.123:8080/
3 部署skywalking的agent追踪java应用
3.1 修改agent配置文件并将agent目录打包
# ls -l /home/skywalking-es7/agent/
# egrep -v "^$|^#" /home/skywalking-es7/agent/config/agent.config
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
# agent注册到skywalking的服务名,这里不配置,采用变量注入的方式进行覆盖
agent.is_cache_enhanced_class = ${SW_AGENT_CACHE_CLASS:true}
agent.class_cache_mode = ${SW_AGENT_CLASS_CACHE_MODE:MEMORY}
# 上面两行表示打开skywalking代理与其他Java代理字节码进程的兼容性
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.30.51:11800}
# agent连接到skywalking的地址
logging.file_name=${SW_LOGGING_FILE_NAME:skywalking-api.log}
# agent默认日志文件存放在agent目录下的logs目录下
logging.level=${SW_LOGGING_LEVEL:INFO}
logging.dir=${SW_LOGGING_DIR:/home/liuchan/log/agent}
# 自定义日志家目录,默认为空字符串(" ")
logging.max_history_files=${SW_LOGGING_MAX_HISTORY_FILES:5}
# agent历史文件个数限制,默认为-1,表示不限制,为防止agent日志爆盘,这里修改为5
plugin.mount=${SW_MOUNT_FOLDERS:plugins,activations}
# agent插件挂载的目录
# cd /home/skywalking-es7/
# tar -czf agent.tar.gz agent/
3.2 将打包的skywalking agent部署到jar应用上
1 部署agent
# tar -xzf agent.tar.gz -C /home/liuchan/
# mkdir -p /home/liuchan/log/agent/
2 修改docker-compose.yml文件[只修改以java进程启动容器的部分]
# vim /home/liuchan/compose/docker-compose.yml
(1) 挂载agent卷到容器
volumes:
- /home/liuchan/agent:/home/liuchan/agent
(2) 修改java命令,在 -jar 之前加入如下参数
command:
-javaagent:/home/liuchan/agent/skywalking-agent.jar -Dskywalking.agent.service_name=<分组名称>::<容器名称> -Dskywalking.agent.instance_name=<容器名称>-${HOSTIP} -Dskywalking.logging.file_name=<容器名称>-${HOSTIP}.log
3 重启docker-compose
# docker-compose down
# docker-compose up -d
4 访问skywalking的UI
4.1 仪表板
http://192.168.30.51:8080/
仪表板提供服务、服务实例和端点的指标,我们需要了解一些指标术语。
吞吐量CPM # 每分钟调用次数
Apdex # 应用程序性能指数,满意”、“容忍”和“沮丧”分别对应1、0.5、0
响应时间百分比 # 包括p99、p95、p90、p75、p50
SLA # 代表成功率。对于HTTP,它表示200响应代码的速率。
服务、实例和仪表板选择器可以手动重新加载而不是重新加载整个页面。
4.2 拓扑图
http://192.168.30.51:8080/topology