SkyWalking介绍和Docker环境下部署

这篇具有很好参考价值的文章主要介绍了SkyWalking介绍和Docker环境下部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Skywalking概述

1、Skywalking介绍

Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计,它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪,性能指标分析和服务依赖分析等。

Skywalking是一个国产的开源框架,2015年由吴晟个人开源,2017年加入Apache孵化器,国人开源的产品,主要开发人员来自于华为,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,支持Java、.Net、NodeJs等探针,数据存储支持Mysql、Elasticsearch等,跟Pinpoint一样采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前增长势头强劲,社区活跃。

2、Skywalking架构图

SkyWalking介绍和Docker环境下部署,微服务组件,skywalking,docker,容器

整个架构,分成上、下、左、右四部分

1)上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。Agent 收集 SkyWalking Tracing 数据,传递给服务器。

2)下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。

3)右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。

4)左部分 SkyWalking UI :负责提供控台,查看链路等等。

SkyWalking 三个核⼼部分

Agent(探针):Agent 运⾏在各个服务实例中,负责采集服务实例的 Trace 、Metrics 等数据,然后通过 gRPC ⽅式上报给 SkyWalking 后端。

OAP:SkyWalking 的后端服务,⼀个是负责接收 Agent 上报上来的 Trace、Metrics 等数据,进⾏流式分析,最终将分析得到的结果写⼊持久化存储中,另⼀个是负责响应 SkyWalking UI 界⾯发送来的查询请求。

UI 界⾯:展示查询结果。

SkyWalking Agent实现原理

SkyWalking Agent是通过Java Agent的方式随着应用程序一起启动,然后通过Byte Buddy库动态插入埋点信息收集Trace信息。Java Agent本质上就是⼀个Jar包,它会调⽤ Instrumentation API,来修改已经加载到JVM中的字节码。Instrumentation API由JVM提供⽤来修改已加载类的⼯具,可以提供Java语⾔编写的插桩功能,动态修改运⾏时代码的能⼒。

Java Agent具有两种加载⽅式

静态加载

这种⽅式下,在应⽤程序的任何代码被执⾏之前,就加载Agent以修改字节码。静态加载需要使⽤JVM 的-javaagent参数:

java -javaagent:agent.jar -jar application.jar
# 可以同时加载多个Agents
java -javaagent:agentA.jar -javaagent:agentB.jar application.jar

动态加载

这种⽅式下,Agent可以在运⾏时动态按需的加载。动态加载需要调⽤Java Attach API。

// 根据PID查找⽬标JVM,并连接到JVM 
VirtualMachine jvm = VirtualMachine.attach(jvmPid); 
// 加载Agent 
jvm.loadAgent(agentFile.getAbsolutePath()); 
// 取消到JVM的连接 
jvm.detach();

Instrumentation

      Instrumentation是java提供的修改已经加载到JVM中字节码的API。使⽤ Instrumentation,开发者可以构建⼀个独⽴于应⽤程序的代理程序(Agent),⽤来监测和协助运⾏在 JVM 上的程序,甚⾄能够替换和修改某些类的定义。有了这样的功能,开发者就可以实现更为灵活的运⾏时虚拟机监控和Java 类操作了,这样的特性实际上提供了⼀种虚拟机级别⽀持的 AOP 实现⽅式,使得开发者⽆需对 JDK 做任何升级和改动,就可以实现某些 AOP 的功能了。JVM级别AOP。

        在JDK 1.6以前,instrument只能在JVM刚启动开始加载类时生效,而在JDK 1.6之后,instrument支持了在运行时对类定义的修改。在 Java SE 6 ⾥⾯,instrumentation 包被赋予了更强⼤的功能:启动后的instrument、本地代码 (native code)instrument,以及动态改变 classpath 等等。这些改变,意味着 Java 具有更强的动态控制、解释能⼒,它使得 Java 语⾔变得更加灵活多变。

二、Docker环境下使用docker-compose部署Skywalking

1、相关组件及版本

序号

组件

版本

备注

1

skywalking-oap-server

8.9.1

2

elasticsearch

7.17.6

3

skywalking-ui

8.9.1

4

apache-skywalking-java-agent

8.15.0

2、创建目录赋予权限

mkdir elasticsearch
cd elasticsearch
mkdir logs
mkdir data
chmod 775 logs
chmod 775 data

3、准备docker-compose.yml文件

version: '3.3'
services:
  elasticsearch:
    image: elasticsearch:7.17.6
    container_name: elasticsearch
    restart: always
    ports:
      - 9200:9200
    environment:
      - "TAKE_FILE_OWNERSHIP=true" #volumes 挂载权限 如果不想要挂载es文件改配置可以删除
      - "discovery.type=single-node" #单机模式启动
      - "TZ=Asia/Shanghai" # 设置时区
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" # 设置jvm内存大小
    volumes:
      - ./elasticsearch/logs:/usr/share/elasticsearch/logs
      - ./elasticsearch/data:/usr/share/elasticsearch/data
     #- ./elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ulimits:
      memlock:
        soft: -1
        hard: -1
  skywalking-oap-server:
    image: apache/skywalking-oap-server:8.9.1
    container_name: skywalking-oap-server
    depends_on:
      - elasticsearch
    links:
      - elasticsearch
    restart: always
    ports:
      - 11800:11800
      - 12800:12800
    environment:
      SW_STORAGE: elasticsearch  # 指定ES版本
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
      TZ: Asia/Shanghai
    #volumes:
     #- ./oap/conf/alarm-settings.yml:/skywalking/config/alarm-settings.yml
  skywalking-ui:
    image: apache/skywalking-ui:8.9.1
    container_name: skywalking-ui
    depends_on:
      - skywalking-oap-server
    links:
      - skywalking-oap-server
    restart: always
    ports:
      - 8080:8080
    environment:
      SW_OAP_ADDRESS: http://skywalking-oap-server:12800
      TZ: Asia/Shanghai

3、执行启动服务命令

docker-compose up -d

4、访问UI地址http:${IP}:8080

SkyWalking介绍和Docker环境下部署,微服务组件,skywalking,docker,容器文章来源地址https://www.toymoban.com/news/detail-791925.html

到了这里,关于SkyWalking介绍和Docker环境下部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Skywalking Docker单机环境搭建

    本次搭建是基于MySQL进行持久化,因此需要提前准备好一个MySQL容器 (MySQL容器部署略过)。 拉取skywalking-oap镜像 docker pull apache/skywalking-oap-server: 8.9 . 0 接下来可以进行一个简单的启动,目的是拷贝出config目录到宿主机后进行挂载(docker 容器配置文件建议通过宿主机文件进行挂载

    2024年02月19日
    浏览(24)
  • docker部署SkyWalking+ES

    1.1去dockerHub官网(https://hub.docker.com/)搜索镜像 1.2 镜像拉取 1.3镜像运行 视图切换到Overview 一直往下翻,就能看到启动命令: --net somenetwork是自定义网络,暂时用不到。tag替换成自己需要的,我们这边是7.5.1。 我的linux内存比较小,所以加了启动参数  -e ES_JAVA_OPTS=\\\"-Xms512m -X

    2024年04月14日
    浏览(31)
  • skywalking服务部署

    一、前言 Apache SkyWalking 是一个开源的分布式跟踪、监控和诊断系统,旨在帮助用户监控和诊断分布式应用程序、微服务架构和云原生应用的性能和健康状况。它提供了可视化的分析工具,帮助开发人员和运维团队深入了解应用程序的性能、调用链和异常情况 功能特点 分布式

    2024年02月11日
    浏览(24)
  • docker-compose方式部署skywalking

    报错:Thread#0\\\" - pthread_create failed (EPERM) for attributes: stacksize: 1024k, guardsize: 4k, detached. 官网参考 官网参考 报错信息 需要先删除容器和所有镜像 停止docker服务 卸载docker 安装docker 启动docker 配置/etc/docker/daemon.json 升级docker-compose

    2023年04月23日
    浏览(35)
  • Skywalking 的Docker部署测试-Tempo替代方案

    如果监控系统用的是Prometheus+Grafana,那么链路监控可以使用Grafana家族产品Grafana Tempo,但部署比较麻烦,涉及组件较多,文章可以参考《Grafana,Loki,Tempo,Prometheus,Agent搭建日志链路监控平台》,如果只需要简单的监控+链路跟踪,我觉得使用Skywalking是一个好选择 Docker 启动用户要

    2024年01月15日
    浏览(27)
  • RuoyiCloudPlus结合SkyWalking-9.4.0 docker部署流程

    docker-compse.yml 因为要将数据存储在es,以下给出es docker-compose文件 如果OAP报如下错 在官方issue中找到解答, 由于挂载的es目录为原来8.7.0版本生成及采集的数据,导致es初始化数据失败 ,需要删除原目录数据/home/elasticsearch/data或者重新指定文件目录即可。 下载java探针 这里使用

    2024年02月15日
    浏览(25)
  • SkyWalking链路追踪-搭建-spring-boot-cloud-单机环境 之《10 分钟快速搭建 SkyWalking 服务》

    首先了解一下单机环境 第一步,搭建一个 Elasticsearch 服务。 第二步,下载 SkyWalking 软件包。 第三步,搭建一个 SkyWalking OAP 服务。 第四步,启动一个 Spring Boot 应用,并配置 SkyWalking Agent。 第五步,搭建一个 SkyWalking UI 服务。 准备工作,准备一个docker网络组,网络组的名字为

    2024年02月15日
    浏览(43)
  • 云计算赛项-私有云skywalking服务部署与应用

    使用提供的 OpenStack私有云平台,申请一台 centos7.9系统的云主机,使用提供的软件包安装 Elasticsearch服务和 skywalking服务,将 skywalking的 UI访问端口修改为 8888。接下来再申请一台CentOS7.9的云主机,用于搭建gpmall商城应用,并配置SkyWalking Agent, 将gpmall的 jar包放置探针并启动。

    2024年02月11日
    浏览(34)
  • 微服务监控技术skywalking的部署与使用(亲测无坑)

    注:本篇文章采用docker部署,采用8.2.0版本,版本一定要一致!! Java Agent:8.2.0 :本地jar包,启动项目时引用 apache/skywalking-oap-server:8.2.0-es7 :远程oap容器 apache/skywalking-ui:8.2.0 :远程ui页面 拉取镜像 创建运行容器 拉取镜像 创建运行容器 启动时 加入命令 -javaagent: agent目录+

    2024年02月13日
    浏览(33)
  • 专为云原生、微服务架构而设计的链路追踪工具 【SkyWalking介绍及搭建】

    服务链路追踪已成为不可或缺的一环 skywalking是一个优秀的 国产 开源框架,2015年由个人 吴晟 (华为开发者)开源 , 2017年加入apache 孵化器。 skywalking是分布式系统的应用 程序性能监视工具 ,专为微服务、云原生架构和基于容器化技术 (docker、K8s、Mesos)架构而设计,它是

    2023年04月08日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包