SkyWalking快速上手(二)——架构剖析1

文章目录

  • 介绍
  • 架构概述
  • 一、Agent组件
    • 介绍
    • Agent的配置
    • 配置参数详解
      • service_name
      • sample_n_per_3_secs
      • namespace
      • collector.backend_service
    • Agent的工作原理
  • 二、Collector组件
    • 什么是Collector组件?
    • Collector组件的配置
    • 配置Collector组件示例
  • 总结

介绍

SkyWalking是一个开源的分布式系统追踪、监控和诊断工具,它能够帮助开发人员和运维人员实时监控和诊断分布式系统的性能问题。本文将深入剖析SkyWalking的架构,并介绍其核心组件及其功能。

架构概述

SkyWalking的架构由以下几个核心组件组成:

  1. Agent:在被监控的应用程序中嵌入的代理组件,用于收集应用程序的性能数据,并将其发送给Collector。

  2. Collector:用于接收和处理来自Agent的监控数据的组件,可以将数据存储到不同的存储介质中,如Elasticsearch、MySQL等。

  3. UI:提供用户界面,用于展示监控数据和性能指标,以及进行系统的配置和管理。

  4. Storage:用于存储和索引监控数据的组件,可以选择使用Elasticsearch、MySQL等作为存储介质。

一、Agent组件

介绍

Agent是SkyWalking的核心组件之一,它负责在被监控的应用程序中收集性能数据,并将其发送给Collector。Agent可以嵌入到应用程序的代码中,或者通过Java Agent的方式进行加载。

Agent的配置

Agent的配置文件使用properties格式,可以通过配置文件指定Agent的相关参数。

Agent的配置代码示例:

# SkyWalking Agent 配置
agent.service_name=my-application
agent.sample_n_per_3_secs=100
agent.namespace=default
agent.collector.backend_service=localhost:11800

在配置中,你需要指定应用程序的名称(service_name)、采样率(sample_n_per_3_secs)、命名空间(namespace)以及Collector的地址(collector.backend_service)。

配置参数详解

下面对Agent的配置参数进行详细解释:

service_name

  • 描述:指定应用程序的名称。
  • 类型:字符串。
  • 示例:agent.service_name=my-application

sample_n_per_3_secs

  • 描述:指定采样率,即每3秒钟采样的次数。
  • 类型:整数。
  • 示例:agent.sample_n_per_3_secs=100

namespace

  • 描述:指定命名空间,用于区分不同的应用程序。
  • 类型:字符串。
  • 示例:agent.namespace=default

collector.backend_service

  • 描述:指定Collector的地址。
  • 类型:字符串。
  • 示例:agent.collector.backend_service=localhost:11800

Agent的工作原理

Agent在应用程序中嵌入的代码中,通过字节码增强技术来收集性能数据。它会拦截应用程序的关键方法,如HTTP请求、数据库访问等,记录方法的调用信息、耗时等数据,并将这些数据发送给Collector进行处理。

Agent的工作流程如下:

  1. Agent启动时,会加载配置文件,并初始化相关组件。

  2. Agent会通过字节码增强技术,修改应用程序的字节码,插入性能数据收集的代码。

  3. 当应用程序执行被拦截的方法时,Agent会收集相关的性能数据,并将其发送给Collector。

  4. Collector接收到Agent发送的数据后,会进行处理和存储,以便后续的查询和分析。

二、Collector组件

什么是Collector组件?

在SkyWalking分布式系统监控工具中,Collector组件是起到收集和存储追踪数据的关键角色。它负责接收来自各个服务实例的追踪数据,并将其存储在后端的存储介质中,以供后续分析和查询使用。

Collector组件的配置

以下是一个示例的Collector组件的配置文件:

# skywalking collector配置
server:port: 12800  # Collector的监听端口jetty:acceptors: -1  # 接受连接的线程数,默认为-1(取决于CPU核心数量)storage:elasticsearch:   # 存储使用的后端数据库(此处以Elasticsearch为例)nameSpace: skywalking-oap  # 存储的命名空间clusterNodes: localhost:9200  # Elasticsearch集群节点地址receiver-register:backendService:# 其他Collector或者接收追踪数据的第三方组件的地址addresses: 127.0.0.1:11800exporter:grpc:host: 127.0.0.1  # Exporter服务的主机地址port: 11800  # Exporter服务的端口号logging:level: debug  # 日志级别

在上述配置文件中,我们可以看到Collector组件的一些重要配置项:

  • server.port:指定Collector的监听端口,默认为12800。
  • storage.elasticsearch.nameSpace:设置存储的命名空间,用于在Elasticsearch中区分不同的SkyWalking数据。
  • storage.elasticsearch.clusterNodes:配置连接Elasticsearch集群的节点地址。

除此之外,配置文件中还有其他可选的配置项,如receiver-register.backendService.addresses用于指定其他Collector或接收追踪数据的第三方组件的地址,以及exporter.grpc.hostexporter.grpc.port用于指定Exporter服务的主机和端口。

配置Collector组件示例

以下是一个配置Collector组件的示例:

# skywalking-collector-config.yamlserver:port: 12800storage:elasticsearch:nameSpace: skywalking-oapclusterNodes: localhost:9200receiver-register:backendService:addresses: 127.0.0.1:11800exporter:grpc:host: 127.0.0.1port: 11800logging:level: debug

将上述配置保存为名为skywalking-collector-config.yaml的文件。然后,在启动Collector组件时,指定配置文件路径:

./bin/startup.sh -c skywalking-collector-config.yaml

这样就完成了Collector组件的配置,并可以通过以上所示的配置文件进行自定义修改。

总结

通过本文的介绍,你对SkyWalking的架构有了更深入的了解。Agent负责收集应用程序的性能数据,Collector负责接收和处理这些数据,UI提供了一个用户界面进行数据展示和配置管理,Storage用于存储和索引监控数据。希望本文对你有所帮助,如果你有任何问题或疑问,请随时提问。如果想对UI组件和Storage组件进行了解,请看下一篇文章:SkyWalking快速上手(二)——架构剖析2

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

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

相关文章

使用 Feature Flags 实现数据库灰度迁移的监控与可观测性

作者:观测云与胡博 场景描述 很多企业会遇到数据库升级、或数据库迁移的情况,尤其是在自建数据库服务向云数据库服务、自建机房向云机房、旧数据库向新数据库迁移等场景。 然而,我们需要在整个移植过程中保证其稳定性、避免数据遗失、服务宕…

后端中间件安装与启动(Redis、Nginx、Nacos、Kafka)

后端中间件安装与启动 RedisNginxNacosKafka Redis 1.打开cmd终端,进入redis文件目录 2.输入redis-server.exe redis.windows.conf即可启动,不能关闭cmd窗口 (端口配置方式:redis目录下的redis.windows.conf配置文件,…

【第四阶段】kotlin语言的定义类和field关键字学习

1.普通成员变量背后隐士代码 为什么在kotlin中是private 可以直接调用,隐式代码如下 package Kotlin.Stage4class Test54{var name"kotlin"/*背后做的事NotNullprivate String name"kotlin";public void setName(NotNull String name){this.na…

【项目经验】:elementui多选表格默认选中

一.需求 在页面刚打开就默认选中指定项。 二.方法Table Methods toggleRowSelection用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)row, selected 详细…

LinkedList 源码分析

LinkedList 是一个基于双向链表实现的集合类。 LinkedList 插入和删除元素的时间复杂度 头部插入/删除:只需要修改头结点的指针即可完成插入/删除操作,因此时间复杂度为 O(1)。尾部插入/删除:只需要修改尾结点的指针即可完成插入/删除操作…

vue2 维护状态key的作⽤和原理

1. key定义 为了给 Vue ⼀个提示&#xff0c;以便它能跟踪每个节点的身份&#xff0c;从⽽重⽤和重新排序现有元素&#xff0c;你需要为每项提供⼀个唯⼀ key 2. 写法 <li v-for"(item,index) in obj" :key"item.id">{{item.name}}</li>3. …

2024字节跳动校招面试真题汇总及其解答(五)

17.TCP的拥塞控制 TCP 的拥塞控制是指在 TCP 连接中,发送端和接收端通过协作来控制网络中数据包的流量,避免网络拥塞。TCP 的拥塞控制是 TCP 协议的重要组成部分,它可以确保 TCP 连接的稳定性和可靠性。 TCP 的拥塞控制主要有以下几个目的: 防止网络拥塞:当网络中的数据…

core文件的生成与使用

目录 core 设置例子 1例子 2core 名称及目录修改参考 在使用嵌入式系统时&#xff0c;出错后&#xff0c;不好使用 gdb 调试&#xff0c;这时&#xff0c;可让系统生成一个 core 文件&#xff0c;用于查看出错原因 core 设置 要生成 core 文件&#xff0c;需要先设置 core 文…

数据分析的概念

一、数据分析的目的&#xff1a;把隐藏在一大批看来杂乱无章的数据中的信息集中和提炼出来&#xff0c;从而找出研究对象的内在规律。&#xff08;主要在于分析目的及过滤脏数据&#xff09; 1.数据分析是有组织有目的地收集数据、分析数据&#xff0c;使之成为信息的过程。&a…

JDK18特性

文章目录 JAVA18概述1. 默认UTF-8字符编码2. 简单的Web服务器3.JavaDoc的增强4. 反射功能的新特性5.Vector API(三次孵化)6. 互联网地址解析SPI7. 外部函数和内存API(二次孵化)8.switch 表达式 JAVA18概述 Java 18 在 2022 年 3 月 22 日正式发布&#xff0c;Java 18 不是一个…

论文阅读之Learning and Generalization of Motor Skills by Learning from Demonstration

论文阅读其实就是用自己的话讲一遍&#xff0c;然后理解其中的方法 0、论文基本信息 为什么阅读此篇论文&#xff1a;因为它是DMP经典论文&#xff0c;被引多次&#xff0c;学史可以明智&#xff0c;了解最初机理。 论文题目&#xff1a;Learning and Generalization of Moto…

【Java 基础篇】Java字节字符流详解:轻松读写文本与二进制数据

在Java编程中&#xff0c;对文件和数据的读写操作是非常常见的任务。为了满足不同需求&#xff0c;Java提供了多种流类来处理输入和输出。本篇博客将详细介绍Java中的字节流和字符流&#xff0c;以及它们的使用方法&#xff0c;帮助初学者更好地理解和运用这些流来处理文件和数…

opencv形状目标检测

1.圆形检测 OpenCV图像处理中“找圆技术”的使用-图像处理-双翌视觉OpenCV图像处理中“找圆技术”的使用,图像处理,双翌视觉https://www.shuangyi-tech.com/news_224.htmlopencv 找圆心得&#xff0c;模板匹配比霍夫圆心好用 - 知乎1 相比较霍夫找直线算法&#xff0c; 霍夫找…

RabbitMQ常见问题

一、RabbitMQ如何保证消息不丢失&#xff1f; 这是面试时最喜欢问的问题&#xff0c;其实这是个所有MQ的一个共性的问题&#xff0c;大致的解 决思路也是差不多的&#xff0c;但是针对不同的MQ产品会有不同的解决方案。而RabbitMQ 设计之处就是针对企业内部系统之间进行调用设…

【Linux入门】---Linux权限管理详解

文章目录 1.shell命令以及运行原理2.linux用户分类su指令切换用户 3.Linux权限管理3.1Linux文件访问者3.2文件类型和访问权限3.3文件权限值的表示方法3.4文件访问权限的相关设置方法chmod指令--权限修改方法①chmod指令--权限修改方法②chown指令chgrp指令umask指令file指令 4.…

基于SpringBoot的电影购票系统

基于SpringBootVue的电影购票系统、影视商城管理系统&#xff0c;前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 管理员&#xff1a;个人…

Unity 安装及运行MLAgents

1、下载ML-Agents 下载地址 GitHub - Unity-Technologies/ml-agents: The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents using deep reinfo…

sql order by 排序 null值放最后,怎么写

在 SQL 中&#xff0c;可以使用 ORDER BY 子句对结果进行排序。如果要将 NULL 值放在最后&#xff0c;可以在排序列中使用 CASE 表达式来处理。 下面是一个示例查询&#xff0c;将 NULL 值放在最后进行排序&#xff1a; SELECT column1, column2 FROM your_table ORDER BY CAS…

Linux基础指令(四)

目录 前言1. find & which 指令1.1 find1.2 which1.3 alias1.4 where 2、grep 指令3、xargs 指令结语&#xff1a; 前言 欢迎各位伙伴来到学习 Linux 指令的 第四天&#xff01;&#xff01;&#xff01; 在上一篇文章 Linux基本指令(三) 当中&#xff0c;我们学会了通过…

ModuleNotFoundError: No module named ‘omni‘

install isaac sim on linux open the isaac sim folder in /home//.local/share/ov/pkg/isaac_sim-2022.1.1 source setup_python_env.sh ./python.sh standalone_examples/replicator/offline_generation.pyNo module named ‘omni.isaac’