docker-compose搭建skywalking

news2024/11/20 12:36:38

SkyWalking 架构图

 架构组成


 SkyWalking Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
SkyWalking UI :负责提供控台,查看链路等等。


服务搭建


基于docker-compose搭建单机版skywalking


docker-compose.yml文件内容

version: '3.5'
services:
  elasticsearch:
    image: elasticsearch:6.8.1
    container_name: elasticsearch-6.8.1
    restart: always
    ports:
      - 9200:9200
    environment:
      discovery.type: single-node  #es单机模式
      TZ: Asia/Shanghai  #时区设置
      TAKE_FILE_OWNERSHIP: true  #解决 volumes 挂载权限问题
      ES_JAVA_OPTS: -Xms256m -Xmx256m ##jvm内存分配为256MB
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./elasticsearch/data:/usr/share/elasticsearch/data
  oap:
    image: apache/skywalking-oap-server:8.5.0-es6
    container_name: skywalking-oap-8.5.0
    depends_on:
      - elasticsearch
    links:
      - elasticsearch
    restart: always
    ports:
      - 11800:11800
      - 12800:12800
    environment:
      SW_STORAGE: elasticsearch
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
      SW_HEALTH_CHECKER: default
      SW_TELEMETRY: prometheus
    healthcheck:
      test: ["CMD", "./bin/swctl", "ch"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
  ui:
    image: apache/skywalking-ui:8.5.0
    container_name: skywalking-ui-8.5.0
    depends_on:
      - oap
    links:
      - oap
    restart: always
    ports:
      - 8888:8080
    environment:
      SW_OAP_ADDRESS: oap:12800

启动skywalking 容器

#启动容器
docker-compose up -d 
 
#查看启动的容器
docker ps

skywalking-oap 和 skywalking-ui容器时区问题

启动容器后进入skywalking 容器发现时区不是东八区,时间与现在时间相差八小时

而直接使用下面两种配置设置skywalking容器时区是无法生效的

environment:
- TZ=Asia/Shanghai
- TIME_ZONE=Asia/Shanghai
增加映射:
volumes:
- /etc/localtime:/etc/localtime:ro

原因是skywalking容器使用的是 alpine linux镜像, 当前默认不含时区数据包的

解决方法:

进入容器内部
docker exec -it [container id OR container name ] /bin/bash
查看Linux内核版本
cat /etc/issue
安装时区数据包
apk add tzdata
映射时区文件
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
查看时间和时区
date -R

测试服务是否搭建成功


skywalking UI 主界面地址:http://localhost:8888/     #localhost 可替换为你的宿主机ip

SpringBoot与skywalking服务的集成


skywalking中文文档:https://github.com/SkyAPM/document-cn-translation-of-skywalking

官方地址:http://skywalking.apache.org/

Skywalking Agent 


负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。

下载skywalking 安装包:

国内下载地址:https://mirrors.cloud.tencent.com/apache/skywalking/

官方地址:http://skywalking.apache.org/downloads/

将下载好的安装包解压,进入安装包,我们需要将 agent 目录,拷贝到 Java 应用所在的服务器上。这样,Java 应用才可以配置使用该 SkyWalking Agent。我们来看看 Agent 目录下有哪些:

drwxrwxr-x@  10 root  staff       320  4  9 22:47 activations/
drwxrwxr-x@   4 root  staff       128  4  9 22:47 bootstrap-plugins/
drwxrwxr-x@   3 root  staff        96  4  9 22:11 config/
drwxrwxr-x@   3 root  staff        96  4 18 01:03 logs/
drwxrwxr-x@  13 root  staff       416  4  9 22:51 optional-plugins/ #可选插件
drwxrwxr-x@   3 root  staff        96  4  9 22:51 optional-reporter-plugins/
drwxrwxr-x@ 102 root staff      3264  4  9 22:43 plugins/  #插件
-rw-rw-r--@     root  staff  18082886  4  9 22:11 skywalking-agent.jar  # SkyWalking Agent

SpringBoot工程搭建

新建一个SpringBoot工程,命名springboot-skywalking-test

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.castlzl</groupId>
    <artifactId>springboot-skywalking-test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-skywalking-test</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
 
</project>
 

新建一个SkyWalkingController接口类

@RestController
@RequestMapping("/test")
public class SkyWalkingController {
 
    @GetMapping("/hello")
    public String hello() {
        return "this is springboot skywalking test";
    }
}

IDEA启动项配置

选择Edit Configurations 

 

 

#skywalking-agent.jar 为本机绝对路径
-javaagent:/Users/leiziliang/my_gitee/skywalking-apm/agent/skywalking-agent.jar 
#SW_AGENT_NAME 服务名称
#SW_AGENT_COLLECTOR_BACKEND_SERVICES 连接skywalking oap 后台服务的地址
SW_AGENT_NAME=springboot-skywalking-test;SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800

执行 springboot 启动类启动服务

如果说控制台打印如下日志,说明 SkyWalking Agent 加载成功:

DEBUG 2021-04-18 15:36:53:166 main AgentPackagePath : The beacon class location is jar:file:/Users/leiziliang/my_gitee/skywalking-apm/agent/skywalking-agent.jar!/org/apache/skywalking/apm/agent/core/boot/AgentPackagePath.class. 
INFO 2021-04-18 15:36:53:169 main SnifferConfigInitializer : Config file found in /Users/leiziliang/my_gitee/skywalking-apm/agent/config/agent.config. 

接口请求

打开浏览器请求上面定义好的接口 http://localhost:8880/test/hello ,我们要追踪下该链路。

以上springboot 源码已上传,地址:https://gitee.com/castdlg/springboot-skywalking-test.git

skywalking UI主界面说明


使用浏览器,打开 http://127.0.0.1:8080/ 地址,进入 SkyWalking UI 界面。如下图所示:

 点击「拓扑图」菜单,进入查看拓扑图的界面,可以看到 SpringMVC 小方块。如下图所示:

 点击「追踪」菜单,进入查看链路数据的界面。如下图所示:

 

这里面更详细的记录了springboot 服务集成其他中间件与skywalking的集成链路追踪,有兴趣的可以进去看看,作者写的非常详细👍

参考链接:https://blog.csdn.net/weixin_42073629/article/details/106775584 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/495507.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试知识总结

1.影响ui自动化稳定性 异常弹出对话框 --异常场景库 页面控件元素属性的细微变化--模糊匹配 延迟 --- retry 数据 -- 数据已被使用 2. 移动端应用细分为三大类&#xff1a;Web App、Native App&#xff08;原生应用&#xff09; 和 Hybrid App&#xff08;混合应用&…

Yjs + quill:快速实现支持协同编辑的富文本编辑器

大家好&#xff0c;我是前端西瓜哥&#xff0c;这次来看看 Yjs 如何帮助我们实现协同编辑能力的。 Y.js 是一个支持 协同编辑 的开源库。只要我们将自己的数据转换为 Y.js 提供的 Y.Array、Y.Map 类型&#xff0c;Y.js 就会自动帮我们做数据的一致性处理和同步。 一致性问题 …

Cookie和Session的API、登录页面

目录 一、Cookie 和 Session 1、HttpServletRequest 类中的相关方法 2、HttpServletResponse 类中的相关方法 3、HttpSession 类中的相关方法 4、Cookie 类中的相关方法 二、网页登录 1、约定前后端交互接口 2、编写一个简单的登录页面 3、编写一个Servlet 来处理这个…

Springboot +Flowable,任务认领和回退(二)

一.简介 有的时候&#xff0c;一个任务节点会存在多个候选人&#xff0c;例如&#xff1a;张三提交一个任务&#xff0c;这个任务即可以由李四处理&#xff0c;又可以由王五处理&#xff0c;那么针对这种多个任务候选人的情况&#xff0c;该如何处理&#xff1f; 二.绘制流程…

SuperMap GIS基础产品组件GIS FAQ集锦(2)

SuperMap GIS基础产品组件GIS FAQ集锦&#xff08;2&#xff09; 【iObjects for Spark】读取GDB参数该如何填写&#xff1f; 【解决办法】可参考以下示例&#xff1a; val GDB_params new util.HashMapString, java.io.Serializable GDB_params.put(FeatureRDDProviderParam…

spi 应用层读值为0问题

昨天调SPI遇到读值为0x00&#xff0c;经排查是读写方向的问题。 #include <stdint.h> #include <stdio.h> #include <stdlib.h…

Consensus见闻:雷声大 却不下雨的奧斯汀

前言 由Coindesk举办的Consensus历时3天&#xff0c;于4月28日完美落幕&#xff0c;欧科云链研究院前往美国得克萨斯州奧斯汀参加&#xff0c;本文将分享我们在奧斯汀和Consensus会议中的所见所闻&#xff0c;带你们看一个不一样的奧斯汀。 出品&#xff5c;欧科云链研究院 作…

datagrip连接elasticsearch且进行查询20230506

背景&#xff1a;公司要做一个es的数据存储&#xff0c;然后通过接口进行查询&#xff0c;我在docker下完成了ELK的安装&#xff0c;但是对es还不是很了解&#xff0c;就想着用logstash加载完数据到es中后&#xff0c;在数据库中对es进行查询&#xff0c;发现datagrip是支持连接…

Boosting之Adaboost与GBDT

同质与异质 1.异质模型&#xff1a;把不同类型的算法集成在一起&#xff0c;基础模型要有足够大差异性&#xff08;可以找出最适合当前数据的模型&#xff09; 同质模型&#xff1a;通过一个基础算法生成的同类型学习器。 Boosting概念介绍 Boosting本意就是提升&#xff0…

腾讯云服务器怎么开通端口?以80端口为例轻量和CVM教程合集

腾讯云服务器怎么放通80端口&#xff1f;腾讯云服务器分为云服务器CVM和轻量应用服务器&#xff0c;CVM云服务器在安全组中配置规则开启80端口&#xff0c;轻量应用服务器在防火墙中开通80端口&#xff0c;阿腾云来详细详细说下腾讯云服务器开通80端口教程&#xff1a; 目录 …

【c语言】字符串拼接 | API仿真

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ …

linux usb gadget driver代码

本文基于linux-5.4.124 aspeed 2600(BMC)的代码实现来描述arm结构下的gadget driver. 在读之前&#xff0c;我们需要了解什么是usb gadget driver&#xff0c;以及它的作用。 从英文字面上翻译看&#xff0c;usb gadget driver是一个usb小工具驱动。这说了等于没说。实际上&a…

如何通过代码接入手机在网状态 API

引言 在许多场景下&#xff0c;手机号码是一种常用的身份验证信息。而使用手机在网状态 API 可以判断出手机号码是否有效&#xff0c;在一定程度上提高了身份验证的准确性和安全性&#xff0c;它的出现和广泛应用&#xff0c;为各行各业提供了更为便利和高效的解决方案。 本文…

城市夜景照明对于安科瑞智能照明系统的运用

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘要&#xff1a;文章以智能照明控制系统为切入点&#xff0c;介绍了智能照明控制系统在城市夜景照明工程中的应用价值&#xff0c;并结合具体案例分析了城市夜景照明控制管理平台的设计和具体应用。智能照明控制系统…

微软Bing突然爆炸级更新!无需等待人人可用,答案图文并茂

所有人都能上手微软Bing了&#xff01; 今天&#xff0c;微软突然官宣全面开放BingChat&#xff1a; 无需任何等待。只需注册一个账户&#xff0c;首页即可体验。 更关键的是&#xff0c;还有一大堆堪称“家底”的新功能来袭&#xff01; 支持100种语言多模态输出、持续聊天…

控制您的 AWS VPC 终端节点

随着 Amazon Web Services &#xff08;AWS&#xff09; 越来越受欢迎&#xff0c;现在控制您自己的 AWS 虚拟私有云 &#xff08;VPC&#xff09; 终端节点比以往任何时候都更加重要。这可以通过配置和管理 VPC 终端节点中的不同设置来完成。在本文中&#xff0c;我们将讨论为…

yolo目标检测2:yolov1整体思想和网络架构

上一节&#xff1a;https://blog.csdn.net/weixin_39107270/article/details/130408407 概念 You only look once 把检测问题转化成回归问题&#xff0c;一个CNN就搞定了。 2. 核心思想 每个点处有2种候选框&#xff0c;如果候选框内有目标&#xff0c;对候选框进行微调&am…

初学Verilog语言基础笔记整理(实例点灯代码分析)持续更新~

实例&#xff1a;点灯学习 一、Verilog语法学习 1. 参考文章 刚接触Verilog&#xff0c;作为一个硬件小白&#xff0c;只能尝试着去理解&#xff0c;文章未完…持续更新。 参考博客文章&#xff1a; Verilog语言入门学习&#xff08;1&#xff09;Verilog语法【Verilog】一文…

NoSQL自述---衍生过程

NoSQL概述 一.数据存储的演化史 1.单机MySQL的美好年代 在90年代&#xff0c;一个网站的访问量一般都不大&#xff0c;用单个数据库完全可以轻松应付。在那个时候&#xff0c;更多的都是静态网页&#xff0c;动态交互类型的网站不多。 上述架构下&#xff0c;我们来看看数据…

计算机毕业论文内容参考|软件工程|基于java开发汽车销售系统资料

文章目录 导文资料1简述模块与功能总结资料二摘要前言绪论课题背景国内外现状与趋势相关技术与方法介绍导文 如下是一个 Java 实现的汽车销售系统的简单描述,供参考。 计算机毕业论文内容参考|软件工程|基于java开发汽车销售系统资料 资料1 简述 汽车销售系统是专门为汽车销…