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
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐