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

2023-09-17 17:33:02

介绍

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:11800

exporter:
  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.yaml

server:
  port: 12800

storage:
  elasticsearch:
    nameSpace: skywalking-oap
    clusterNodes: localhost:9200

receiver-register:
  backendService:
    addresses: 127.0.0.1:11800

exporter:
  grpc:
    host: 127.0.0.1
    port: 11800

logging:
  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

更多推荐

【计算机网络】网络层和数据链路层

文章目录IP协议网段划分分类划分法CIDR方案路由NAT网络地址转换技术IP报文的另外三个参数mac帧ARP协议交换机ICMP代理服务器IP协议TCP有将数据可靠、高效发给对方的策略,而IP具有发送的能力,即将数据从A主机送到B主机的能力。用户要的是100%的概率送到!IP地址=目标网络+目标主机IP协议报头4位首部长

Python灰帽编程——网页信息爬取

文章目录网页信息爬取1.相关模块1.1requests模块1.1.1模块中的请求方法1.1.2请求方法中的参数1.1.3响应对象中属性1.2RE模块1.2.1匹配单个字符1.2.2匹配一组字符1.2.3其他元字符1.2.4核心函数2.网页信息爬取2.1获取网页HTML源代码2.2提取图片地址2.3下载图片2.4完整脚本

【卖出备兑看涨期权策略(Covered_call)】

卖出备兑看涨期权策略(Covered_call)卖出备兑看涨期权策略是一种最基本的收入策略,该策略主要操作就是在持有标的资产的同时卖出对应的看涨期权合约,以此来作为从持有的标的资产中获取租金的一种方法。如果标的资产的价格上涨到行权价之上,那么卖出的看涨期权将被行权,那么投资者可以卖出手中持有的标的资产,投资者获得最初的

数据挖掘18大算法实现以及其他相关经典DM算法:决策分类,聚类,链接挖掘,关联挖掘,模式挖掘、图算法,搜索算法等

【机器学习入门与实践】入门必看系列,含数据挖掘项目实战:模型融合、特征优化、特征降维、探索性分析等,实战带你掌握机器学习数据挖掘专栏详细介绍:【机器学习入门与实践】合集入门必看系列,含数据挖掘项目实战:数据融合、特征优化、特征降维、探索性分析等,实战带你掌握机器学习数据挖掘。本专栏主要方便入门同学快速掌握相关知识。声明

React 全栈体系(十一)

第五章React路由五、向路由组件传递参数数据1.效果2.代码-传递params参数2.1Message/*src/pages/Home/Message/index.jsx*/importReact,{Component}from"react";import{Link,Route}from'react-router-d

向量数据库,能让AI再次起飞吗?

9月7-8日,深圳国际会展中心18号馆来了,来了,腾讯面向产业互联网领域规格最高、规模最大、覆盖最广的年度科技盛会-——-腾讯全球数字生态大会。9月7日,我们将聚焦产业未来发展新趋势,针对云计算、大数据、人工智能、安全、SaaS等核心数字化工具做关键进展发布,并联合生态伙伴推出最新行业场景解决方案。同时,携手全球权威商

mysql:列类型之float、double

mysql:列类型之float、double_mysqldouble_普通网友的博客-CSDN博客环境:window10vs2022.net6mysql8.0.25DBeaver参考:《MSDN:浮点数值类型(C#引用)》《mysql:11.1.4Floating-PointTypes(ApproximateValue

Flutter开发桌面应用的一些探索分享

引言在移动应用开发领域,Flutter已经赢得了广泛的认可和采用,成为了跨平台移动应用开发的瑞士军刀。然而,Flutter的魅力并不仅限于移动平台,它还可以用于开发桌面应用程序,为开发人员提供了一种全新的选择。本文将深入探讨Flutter在桌面应用开发中的应用,以及目前国内新颖的跨端开发技术。桌面应用开发的现状在过去,

RHCE---Linux的计划任务

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言如果想要让自己设计的备份程序可以自动地在系统下面运行,而不需要手动来启动它,这是该如何处理?这些任务可以分为【单一】任务和【循环】任务,在系统内又是哪些服务在负责?有的工作是例行性的,而有些任务是临时发生的。但是计算机不在身边这时就可以使用计

【C语言】字符串函数

文章目录前言1.strcat2.strncpy3.strncat4.strncmp5.strstr6.strtok7.strerror8.strcat的模拟实现9.strstr的模拟实现总结添加链接描述前言大家好呀,今天给大家分享一下字符函数和字符串函数C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类

可转债实战与案例分析——成功的和失败的可转债投资案例、教训与经验分享

实战与案例分析——投资案例研究股票量化程序化自动交易接口一、成功的可转债投资案例成功的可转债投资案例提供了有价值的经验教训,以下是一个典型的成功案例:案例:投资者B的成功可转债投资投资者B是一位懂得风险管理的投资者,他在某家知名科技公司发行的可转债上发现了投资机会。以下是他的投资故事:投资背景:投资者B注意到该科技公司

热文推荐