侧边栏壁纸
博主头像
极客魔方博主等级

远方不远,就在脚下

  • 累计撰写 12 篇文章
  • 累计创建 27 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

保姆级skywalking配置部署

Rubik
2023-08-18 / 0 评论 / 1 点赞 / 34 阅读 / 10296 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-08-18,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

部署

前置

  • jdk

  • es

自行安装

安装

下载

官网:https://skywalking.apache.org/

下载最新的bin 包

wget https://dlcdn.apache.org/skywalking/9.5.0/apache-skywalking-apm-9.5.0.tar.gz

部署

# 解压
tar -zxvf apache-skywalking-apm-9.5.0.tar.gz
<h1 id="进入目录">进入目录</h1>
<p>cd apache-skywalking-apm-bin

修改配置

vim config/application.yml</p>
<p>storage:</p>
<h1 id="selector: ${SW_STORAGE:h2}">selector: ${SW_STORAGE:h2}</h1>
<p>selector: elasticsearch
elasticsearch:</p>
<h1 id="namespace: ${SW_NAMESPACE:""}">namespace: ${SW_NAMESPACE:""}</h1>
<pre><code>namespace: ${SW_NAMESPACE:"elasticsearch"}

clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}

clusterNodes: 10.168.1.215:9200
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000}
socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000}
responseTimeout: ${SW_STORAGE_ES_RESPONSE_TIMEOUT:15000}
numHttpClientThread: ${SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD:0}
user: ${SW_ES_USER:""}
password: ${SW_ES_PASSWORD:""}
trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:""}
trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:""}
secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""} # Secrets management file in the properties format includes the username, password, which are managed by 3rd party tool.
dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:1} # Shard number of new indexes
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:1} # Replicas number of new indexes
# Specify the settings for each index individually.
# If configured, this setting has the highest priority and overrides the generic settings.
specificIndexSettings: ${SW_STORAGE_ES_SPECIFIC_INDEX_SETTINGS:""}
# Super data set has been defined in the codes, such as trace segments.The following 3 config would be improve es performance when storage super size data in es.
superDatasetDayStep: ${SW_STORAGE_ES_SUPER_DATASET_DAY_STEP:-1} # Represent the number of days in the super size dataset record index, the default value is the same as dayStep when the value is less than 0
superDatasetIndexShardsFactor: ${SW_STORAGE_ES_SUPER_DATASET_INDEX_SHARDS_FACTOR:5} #  This factor provides more shards for the super data set, shards number = indexShardsNumber * superDatasetIndexShardsFactor. Also, this factor effects Zipkin traces.
superDatasetIndexReplicasNumber: ${SW_STORAGE_ES_SUPER_DATASET_INDEX_REPLICAS_NUMBER:0} # Represent the replicas number in the super size dataset record index, the default value is 0.
indexTemplateOrder: ${SW_STORAGE_ES_INDEX_TEMPLATE_ORDER:0} # the order of index template

运行

./startup.sh

日志位置

apache-skywalking-apm-bin/logs</p>
<p>

常见问题

es 版本不对

es 版本不对,使用 elasticsearch 配置,不要使用elasticsearch7

java 版本不对

最新版的 skywalking,需要使用 java17

正常接入,但是没有实例和日志 或者 es 报错,readonly

这种情况看下磁盘空间,是否不足。

磁盘空间使用率大于等于 95%,就会导致 es 将所有索引设置为只读,不允许写入。

接入

agent 下载

skywalking 下载地址下面,有 agent 下载。java 选择 java 的 agent

下载后,解压到本地或生产环境中

tar -zxvf apache-skywalking-java-agent-8.16.0.tgz

代码改造

logback 配置(log4j 自行百度)

  • 加入依赖

## 代码引入和 agent 同样版本的依赖</p>
<p><dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.16.0</version>
</dependency>
  • 修改日志格式

在日志格式化中,加入: [%tid]

<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property name="CONSOLE_LOG_PATTERN_SKYWALKING" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) | [%tid] | %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
  • 修改 appender 中的 encoder

必须要使用这个,否则 tid 会报错,没有解析

<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<Pattern>${CONSOLE_LOG_PATTERN_SKYWALKING}</Pattern>
</layout>
</encoder>

  • 加入grpc 日志

<appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</layout>
</encoder>
</appender>
  • 启用日志

<!-- 日志输出级别 -->
<root level="INFO">
...
<appender-ref ref="grpc-log"/>
...
</root>

idea 接入

将 agent 解压到本地目录,并记住目录位置

/Users/qian/opt/skywalking/skywalking-agent

idea启动配置

vm 配置

-javaagent:/Users/qian/opt/skywalking/skywalking-agent/skywalking-agent.jar

environment 配置

SW_AGENT_NAME=transport-third;
SW_AGENT_COLLECTOR_BACKEND_SERVICES=173.16.200.90:11800

生产环境接入

解压到服务器的目录中

/opt/skywalking-agent/

方式一,脚本指定 skywalking服务地址

java 启动脚本,加入 java 参数

JAVA_OPTS="${JAVA_OPTS} -javaagent:/Users/qian/opt/skywalking/skywalking-agent/skywalking-agent.jar"</p>
<p>export SW_AGENT_NAME=transport-third
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=173.16.200.90:11800
java ${JAVA_OPTS} -jar xxx.jar ${SPRING_BOOT_OPTS}

方式二,直接配置死 skywalking 地址

## 配置skywalking地址
vim /opt/skywalking-agent/config/agent.config
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:173.16.200.90:11800}

java启动脚本

JAVA_OPTS="${JAVA_OPTS} -javaagent:/Users/qian/opt/skywalking/skywalking-agent/skywalking-agent.jar"</p>
<p>export SW_AGENT_NAME=transport-third
java ${JAVA_OPTS} -jar xxx.jar ${SPRING_BOOT_OPTS}

skywalking 使用验证

名词解释

  • 服务:为接入的服务,名字就是接入时配置的服务名字。

  • 实例:同一个服务可以多实例接入,实例会显示当前接入实例的 ip,可以根据实例来查看具体某一个实例的日志。

  • 端点;实际发生的接口。比如请求某个接口:/api/v1/xxx,那么选择这个接口的端点,即可查看该接口的请求详情,点击某个具体的请求,可以看到这个请求下的详细调用情况。

  • 追踪 id,skywalking 自定义生成的追踪 id,通过这个 id 可以查看一次完整的调用链路,可以跨服务。

  • 标记:自定义的分词

页面操作

进入服务列表,可以看到目前服务接入情况

这里展示的只是是否接入。即是否使用了 agent 插件启动,并不能代表日志接入成功。

在这里可以看到接口的成功率。

这里可以看到各个服务之间的链路关系。

这里可以看到服务的链路情况。

这里可以看到服务打印的具体日志。

点开某个,可以看到具体的日志详情

这里可以搜索具体的日志内容

只要是日志的格式化中打印出来的内容,这里都可以模糊匹配搜索到。

比如 plumelog 打印的链路日志,在日志格式化中如果打印出来,并将这个 traceId 透出给浏览器的 header 中,则可以通过浏览器拿到 trace,通过 trace 在关键词中搜索,从而拿到 skywalking 的链路 id,通过链路 id 则可以看到一次请求的具体链路,不同服务之间的具体调用情况。

1

评论区