likes
comments
collection
share

仅将 APO 用作采集存储展示 Trace 数据工具与传统方式对比 传统的 Trace 数据采集: 目前两大较为流行的

作者站长头像
站长
· 阅读数 27
  • APO-one-agent 默认开启并支持全量采集多种类型的可观测数据,包括 Trace、Metrics 和 Logs。用户可根据自身需求,灵活配置 APO-one-agent 的数据采集范围,以适应用户环境中现有的数据类型。

  • APO 监控 Trace 数据相较于传统的 Trace 数据采集监控,可以实现为应用自动注入 Trace 配置,拥有更高的集成度与兼容性并可以实现快速部署。

  • 本文将介绍 APO 如何独立监控 Trace 数据,并介绍如何配置 APO 独立采集并监控 Trace 数据。

与传统方式对比

传统的 Trace 数据采集: 目前两大较为流行的 Trace 体系——Skywalking 和 Opentelemetry,以 JAVA 为例都需要手动配置 Trace 探针,并部署 Skywalking 或者 OTEL采集器,最后将数据导入到 ElasticSearch 数据库并查询,应用配置 Trace 探针繁琐,探针配置更新不易同步;且 ElasticSearch 性能消耗资源多,成本高。

APO 实现的 Trace 数据采集: 使用 OneAgent 的自动注入方案,为应用自动注入对应的环境变量以及 Trace 探针文件,只需要重启应用即可自动完成注入;兼容 Skywalking 以及 Opentelemetry 数据格式,将所有 Trace 数据发送到 OTEL Collector 转换后推送 Jaeger Collector存储至 Clickhouse。APO 自动计算统计 Trace 信息,并内嵌 Jaeger UI 用于查询全量的 Trace 数据。所有组件集成于一次部署中,实现系统的快速搭建与监控能力的全面覆盖。

仅将 APO 用作采集存储展示 Trace 数据工具与传统方式对比 传统的 Trace 数据采集: 目前两大较为流行的

实现原理

OneAgent 配置 OTEL 探针采集 Trace 数据

应用产生 Trace 数据后会同一将数据传输给当前节点的 APO-one-agent 中的 OTEL Collector Agent 中,同时也支持将已有的应用探针的 OAP地址指向 APO 中使用并关联其他数据。数据在 OTEL Collector 中会被自动转换成 OTEL 数据格式,并被推送到服务端 Jaeger 存储。

自动配置多种编程语言应用 Trace 探针

相较于传统的 Trace 数据采集,APO-one-agent 采用自动配置的方式,使用 Odiglet 将 Trace 数据采集所需要的配置与文件注入到配置的目标服务当中。 APO-one-agent 自动注入探针默认使用流行的 OTEL 开源探针方案:

  1. Java agent:opentelemetry-java-instrumentation v2.5.0
  2. Python agent:opentelemetry-python 1.23.0/0.44b0
  3. NodeJs agent:opentelemetry-js v1.24.1/0.51.1
  4. Go agent:opentelemetry-go-instrumentation v0.13.0-alpha

假如已经使用了 Skywalking 或者 OTEL 的应用探针来采集数据,我们也支持打包 APO-one-agent 的自定义探针镜像版本。

OTEL Collector 完成数据跨云、跨集群传输

通过使用 OTEL Collector,APO 实现了数据在跨云、跨集群环境中的高效传输。OTEL Collector 作为 OpenTelemetry 数据采集与传输的核心组件,支持多种协议和传输模式,确保无论数据源位于何处,都可以可靠地收集并传输到集中式的存储或监控平台。这种架构极大地增强了系统在多云和混合云环境中的灵活性,消除了不同云供应商或集群之间的数据孤岛问题。

APO 将 Trace 数据存储在 Clickhouse 中

ClickHouse 作为一款高性能的列式存储数据库,相较于 ElasticSearch,在处理高吞吐量写入和复杂查询操作方面表现得更加出色。由于其列式存储架构,ClickHouse 在面对大规模数据分析时能够显著提升查询速度,尤其在执行聚合、过滤等操作时表现出极高的效率,同等数据量下的存储空间占用更少,这进一步减少了资源消耗。APO 还支持将数据导入现有的 Clickhouse 实例,具体配置请参见生产环境部署建议。

利用 APO 集成的 Jaeger 查询全量 Trace 数据

APO 平台自带 Trace 数据分析,可以统计应用接口的平均响应时间、错误率和吞吐量的数据,统计这些数据的日环比与周环比;故障发生时,能给出具体发生错误的实例信息与故障 Trace 信息关联。APO 平台还能提供全量 Trace 数据检索功能,能快速筛选出延迟请求与错误请求产生的 Trace 数据;同时,APO 平台还提供内置的 Jaeger UI 用于全量 Trace 数据查询。

仅将 APO 用作采集存储展示 Trace 数据工具与传统方式对比 传统的 Trace 数据采集: 目前两大较为流行的

仅将 APO 用作采集存储展示 Trace 数据工具与传统方式对比 传统的 Trace 数据采集: 目前两大较为流行的

仅将 APO 用作采集存储展示 Trace 数据工具与传统方式对比 传统的 Trace 数据采集: 目前两大较为流行的

仅将 APO 用作采集存储展示 Trace 数据工具与传统方式对比 传统的 Trace 数据采集: 目前两大较为流行的

轻松拓展 Trace Metrics Log 一体化可观测平台

相较于传统的 Trace 监控体系,APO 不仅能够实现为应用自动注入 Trace 配置,还可以轻松扩展至涵盖 Trace、Metrics 和 Log 的一体化可观测平台。通过这一平台,不同数据类型(如指标、链路追踪、日志)可以相互关联,提供完整的可观测性视图,帮助开发者和运维人员在性能调优、故障排查、异常监控等方面更加高效。APO 以一站式的方式搭建起涵盖全栈的可观测体系,极大简化了系统的管理和监控工作。


如何配置部署 APO 用于独立采集并监控 Trace 数据

第一步:准备工作

要使用 Helm 安装 APO,请确保已完成以下操作:

  • 在计算机上安装 Kubernetes 服务器。有关安装 Kubernetes 的信息,请参阅链接:kubernetes.io/docs/setup/… Kubernetes。
  • 安装 Helm 的最新稳定版本。有关安装 Helm 的信息,请参阅链接:helm.sh/docs/intro/… Helm。
  • 网络策略:需要 APO-one-agent 所在集群/机器能够访问 APO-server 集群的 30044、31363、31317、30319 端口。

第二步:设置 APO Helm 仓库

要设置 APO Helm 存储库,以便在计算机上下载正确的 APO Helm charts,请完成以下步骤:使用下方命令添加 apo Helm 仓库

helm repo add apo https://apo-charts.oss-cn-hangzhou.aliyuncs.com
helm repo update apo

第三步:配置 APO 组件为独立采集 Trace 数据模式

创建文件apo-values.yaml,并根据您的需求进行定义,并在部署阶段挂载配置。

本步骤配置 APO 数据模式为独立采集 Trace 数据模式,请配置探针自动注入目标。

# apo-values.yaml

# agentCollectorMode 为 APO-one-agent 采集数据模式
global:
  agentCollectorMode:
    - trace

# APO-server 
# 持久化配置,推荐打开,默认为false
# 如果为持久化配置则需要根据PVC为 victoria-metrics 创建PV
victoria-metrics-single:
  server:
    persistentVolume:
      enabled: true

# APO-one-agent 
apo-one-agent:
  enabled: true
  odigos:
    instrumentor:
      # targetNamespace 
      # name:目标命名空间
      # value:
      #   enabled: 注入现有的所有服务,但不注入后续新增应用
      #   enabledFuture: 注入现在以及后续的所有服务
      #   disabled: 不注入指定namespace下的服务,用于在instrument-all-namespace时忽略特定的Namespace
      targetNamespace:
      - name: default
        value: enabledFuture
      - name: default2
        value: enabled
      # instrument-all-namespace 是否注入所有namespace
      # 等价于设置所有namespace的enabledFuture
      # 但如果已经设置了ns或者workload的disabled将不会注入
      instrumentAllNamespace: false
      # force-instrument-all-namespace 是否强制注入所有namespace
      # 和instrument-all-namespace类似,所有ns设置enabledFuture
      # 并忽略所有disabled设置
      forceInstrumentAllNamespace: false

这里提供的为 APO 部署的基础配置,如果您要进行更多配置更改,请从 APO Helm Charts 库中下载values.yaml文件:

helm show values apo/apo-one-agent > values.yaml

第四步:部署 APO

运行以下命令,挂载配置文件并部署 。

helm install apo apo/apo -n apo --create-namespace \
-f apo-values.yaml

第五步:验证

见到类似输出即代表安装成功。

NAME: apo
LAST DEPLOYED: Fri Aug  9 15:48:42 2024
NAMESPACE: apo
STATUS: deployed
REVISION: 1
NOTES:
==================================================
      ___           ___           ___
     /\  \         /\  \         /\  \
    /::\  \       /::\  \       /::\  \
   /:/\:\  \     /:/\:\  \     /:/\:\  \
  /::\~\:\  \   /::\~\:\  \   /:/  \:\  \
 /:/\:\ \:\__\ /:/\:\ \:\__\ /:/__/ \:\__\
 \/__\:\/:/  / \/__\:\/:/  / \:\  \ /:/  /
      \::/  /       \::/  /   \:\  /:/  /
      /:/  /         \/__/     \:\/:/  /
     /:/  /                     \::/  /
     \/__/                       \/__/

Official Website:   https://apo.kindlingx.com/
APO Frontend:       http://<NodeIP>:31364
Grafana:            http://<NodeIP>:31364/#/system-dashboard
==================================================

卸载 APO

kubectl delete clickhouseinstallation apo -napo
helm uninstall apo -n apo
kubectl delete ns apo

APO介绍:

国内开源首个 OpenTelemetry 结合 eBPF 的向导式可观测性产品

apo.kindlingx.com

github.com/CloudDetail…

转载自:https://juejin.cn/post/7424040779578933282
评论
请登录