skywalking
skywalking1. 介绍2. 业务架构图3. 部署方案1.介绍skywalking是一个国产开源框架,2015年由吴晟开源 , 2017年加入Apache孵化器。skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。它是一款优秀的APM(Application Performance Management)工具
skywalking
1. 介绍
2. 业务架构图
3. 部署方案
1.介绍
skywalking是一个国产开源框架,2015年由吴晟开源 , 2017年加入Apache孵化器。skywalking是分布式系统的应用
程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。它是一款优秀的
APM(Application Performance Management)工具,包括了分布式追踪、性能指标分析、应用和服务依赖分析等。
官网:http://skywalking.apache.org/
下载:http://skywalking.apache.org/downloads/
Github:https://github.com/apache/skywalking
文档: https://skywalking.apache.org/docs/main/v8.4.0/readme/
中文文档: https://skyapm.github.io/document-cn-translation-of-skywalking/
2.业务架构图
skywalking agent和业务系统绑定在一起,负责收集各种监控数据
Skywalking oapservice是负责处理监控数据的,比如接受skywalking agent的监控数据,并存储在数据库中;
接受skywalking webapp的前端请求,从数据库查询数据,并返回数据给前端。Skywalking oapservice通常以集
群的形式存在。
skywalking webapp,前端界面,用于展示数据。
用于存储监控数据的数据库,比如mysql、elasticsearch等。
3.部署方案
3.1版本
skywalking8.5 mysql8.0.28(现已接入es7.11.2)
3.2部署方式(jar)
sh startup.sh
3.3接入微服务
第一种方式
nohup java -javaagent:/home/souche/skywalking/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=xxl-job-admin -Dskywalking.collector.backend_service=127.0.0.1:11800 -jar xxl-job-admin-2.3.0.jar >./logs/xxl-job-admin.log 2>&1 &
Dskywalking.collector.backend_service:oap收集日志服务地址
Dskywalking.agent.service_name:skywalking控制台显示的服务名
javaagent:agent路径
第二种方式
#! /bin/sh
export SW_AGENT_NAME=service-web
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
export SW_AGENT_SPAN_LIMIT=2000
export JAVA_AGENT=-javaagent:/home/souche/skywalking/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar
java $JAVA_AGENT -jar service-web-1.0-SNAPSHOT.jar
3.4集成日志框架
1)新建logback-skywalking.xml
<?xml version="1.0" encoding="utf-8"?>
<configuration scan="true">
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</pattern>
</layout>
</encoder>
</appender>
<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.mdc.TraceIdMDCPatternLogbackLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern>
</layout>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="console"/>
<appender-ref ref="grpc-log"/>
</root>
</configuration>
2)新增maven依赖
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>${skywalking.version}</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>${skywalking.version}</version>
</dependency>
3.5skywalking注册在nacos
vi /opt/apache-skywalking-apm-bin-es7/config/application.yml
## 主要修改了三处配置,因为文件太长,这里只贴出修改的部分
cluster:
selector: ${SW_CLUSTER:nacos}
# 中间部分省略。。。
nacos:
serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:192.168.1.56:18848}
# Nacos Configuration namespace
namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"skywalking"}
# Nacos auth username
username: ${SW_CLUSTER_NACOS_USERNAME:"nacos"}
password: ${SW_CLUSTER_NACOS_PASSWORD:"nacos"}
# Nacos auth accessKey
accessKey: ${SW_CLUSTER_NACOS_ACCESSKEY:""}
secretKey: ${SW_CLUSTER_NACOS_SECRETKEY:""}
storage:
selector: ${SW_STORAGE:elasticsearch7}
elasticsearch7:
nameSpace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.1.43:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:""}
trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:""}
dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
# 后面省略。。。。
configuration:
selector: ${SW_CONFIGURATION:nacos}
none:
# 中间部分省略。。。
nacos:
# Nacos Server Host
serverAddr: ${SW_CONFIG_NACOS_SERVER_ADDR:192.168.1.56}
# Nacos Server Port
port: ${SW_CONFIG_NACOS_SERVER_PORT:18848}
# 组信息
group: ${SW_CONFIG_NACOS_SERVER_GROUP:skywalking}
# nacos命名空间
namespace: ${SW_CONFIG_NACOS_SERVER_NAMESPACE:skywalking}
# Unit seconds, sync period. Default fetch every 60 seconds.
period: ${SW_CONFIG_NACOS_PERIOD:60}
# Nacos auth username
username: ${SW_CONFIG_NACOS_USERNAME:""}
password: ${SW_CONFIG_NACOS_PASSWORD:""}
# Nacos auth accessKey
accessKey: ${SW_CONFIG_NACOS_ACCESSKEY:""}
secretKey: ${SW_CONFIG_NACOS_SECRETKEY:""}
3.6访问路径
开发环境:http://127.0.0.1:8080
UI截图
3.7注意事项
问题一:
启动skywalking,报数据库驱动不存在
解决:添加MySQL驱动jar包到skywalking目录下面的oap-libs目录下面。我是用的MySQL8.0 对应 的jar包:mysql-connector-java-8.0.15.jar
问题二:跟踪链路不显示gateway
解决:拷贝agent/optional-plugins目录下的gateway插件到agent/plugins目录
3.8清除日志
#!/bin/bash
DATE=`date -d "6 days ago" +%Y%m%d`
curl -s -XGET http://127.0.0.1:9200/_cat/indices?v| grep $DATE | awk '{print $3}' >/tmp/elk.log
for elk in `cat /tmp/elk.log`
do
curl -XDELETE "http://127.0.0.1:9200/$elk"
done
更多推荐
所有评论(0)