array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 SkyWalking部署 - 爱码网

 

 

 

 

 

 

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.0jdk1.8.0_291

 

 

 

 

 

 

目录

1 部署elasticsearch服务

2 部署SkyWalking

2.1 部署jdk1.8

2.2 下载SkyWaking

2.3 配置skywalking连接es7

2.4 启动skywalking

2.5 访问skywalking UI

3 部署skywalkingagent追踪java应用

3.1 修改agent配置文件并将agent目录打包

3.2 将打包的skywalking agent部署到jar应用上

4 访问skywalkingUI

4.1 仪表板

4.2 拓扑图

4.3 查看java应用的堆栈信息

 


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/
SkyWalking部署

2 部署SkyWalking

192.168.30.51节点上操作

官方文档: https://skywalking.apache.org/docs/main/v8.6.0/readme/

SkyWalking部署 

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/
SkyWalking部署

2.3 配置skywalking连接es7

# vim /home/skywalking-es7/config/application.yml
SkyWalking部署

可选优化:
(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存储分片数,因为是3es节点,这里设置为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}
# 查询最大数量,建议值8
000

2.4 启动skywalking

# /home/skywalking-es7/bin/startup.sh
# skywalking的日志文件在skywalking安装目录下的logs目录下。

# netstat -tunlp | grep java
SkyWalking部署
11800gRPC 服务agent连接端口
12800REST
服务agent连接端口

2.5 访问skywalking UI

http://172.16.1.123:8080/

3 部署skywalkingagent追踪java应用

3.1 修改agent配置文件并将agent目录打包

# ls -l /home/skywalking-es7/agent/
SkyWalking部署

# 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 访问skywalkingUI

4.1 仪表板

http://192.168.30.51:8080/
SkyWalking部署
仪表板提供服务、服务实例和端点的指标,我们需要了解一些指标术语。
吞吐量CPM # 每分钟调用次数
Apdex # 应用程序性能指数,满意”、“容忍”和“沮丧”分别对应10.50
响应时间百分比 # 包括p99p95p90p75p50
SLA # 代表成功率。对于HTTP,它表示200响应代码的速率。
服务、实例和仪表板选择器可以手动重新加载而不是重新加载整个页面。

4.2 拓扑图

http://192.168.30.51:8080/topology
SkyWalking部署

4.3 查看java应用的堆栈信息

http://192.168.30.51:8080/
SkyWalking部署

相关文章: