全部產品
Search
文件中心

Application Real-Time Monitoring Service:ARMS與Grafana Tempo的相容性

更新時間:Jun 14, 2025

本文介紹 ARMS 與 Grafana Tempo 的相容性資訊,包括相容原理、相容的 Tempo HTTP API 和 TraceQL 等。

相容原理

Grafana Tempo 是一個開源的分布式追蹤後端儲存系統,支援將 OpenTelemetry、Jaeger、Zipkin等多種協議 Trace 資料存放區到Object Storage Service中,並提供大規模分布式追蹤資料的高效能查詢服務。

ARMS 所提供的 Grafana HTTP Tempo 相容介面,其相容機制是將 TraceQL 查詢翻譯為Log Service的索引查詢和 SQL 分析查詢,並且按照 Tempo HTTP API 格式規範返回查詢分析結果,從而實現 Tempo 查詢協議的相容。

Temop 相容 API 訪問網域名稱

Temop相容API的訪問網域名稱格式為 https://${sls-endpoint}/trace/tempo/,例如 https://cn-hangzhou.log.aliyuncs.com/trace/tempo。其中${sls-endpoint}為 Trace 資料所屬地區對應的Log Service訪問網域名稱。更多資訊,請參見服務入口

當前已支援地區:

地區名稱

地區ID

杭州

cn-hangzhou

北京

cn-beijing

烏蘭察布

cn-wulanchabu

河源

cn-heyuan

新加坡

ap-southeast-1

支援的 Tempo API

要求方法

API路徑

說明

GET

/api/traces/<traceID>

查詢 Trace 詳情。

GET

/api/v2/traces/<traceID>

查詢 Trace 詳情(V2 版本介面)。

GET

/api/search

查詢 Trace 列表。

GET

/api/search/tags

查詢 Tag。

GET

/api/v2/search/tags

查詢 Tag(V2 版本介面)。

GET

/api/search/tag/{tags}/values

查詢 Tag 值。

GET

/api/v2/search/tag/{tags}/values

查詢 Tag 值(V2 版本介面)。

GET

/ready

是否已經準備好對外提供服務。

GET

/api/echo

測試 Tempo 資料來源是否正常工作。

支援相容的 TraceQL 文法

支援相容的關鍵字

類別

欄位

說明

使用樣本

Span

status

狀態。枚舉值:

  • unset

  • ok

  • error

status=ok

statusMessage

狀態資訊。

statusMessage="404 NOT FOUND"

duration

Span 耗時。支援帶單位,如果沒有單位,預設 ns。樣本:

  • 500

  • 10 ns

  • 500 ms

  • 12.88 s

  • 10.5 min

  • 1 h

duration > 500ms

name

Span 名稱,對應 ARMS 的 spanName。

name="/components/api/v1/mall/product"

kind

Span 類型。枚舉值:

  • unspecified

  • internal

  • server

  • client

  • producer

  • consumer

kind=server

spanId

Span 標識符。

spanId=fe81595a906fe2a4

Trace

traceDuration

Trace 總耗時。

traceDuration > 100ms

traceId

Trace 標識符。

traceId="ea1a0100f617397599186332534d0001"

Attribute

span.開頭的欄位,樣本:

  • span.http.path

  • span.db.statement

Span 屬性,對應 ARMS 的 attributes。

span.http.path="/api/search"

Resource

resource.開頭的欄位,樣本:

  • resource.service.name

  • resource.namespace

  • resource.agentVersion

資源屬性,對應 ARMS 的 resources。

resource.namespace="arms"

Unscoped Attribute

.開頭的欄位,樣本:

  • .http.path

  • .db.statement

無範圍屬性,對應 ARMS 的 attributes 或 resources。

.db.statement="select * from log"

支援相容的操作符

類別

運算子

說明

樣本

Span 選取器

{expression}

運算式需要寫在{}

{status=ok}

比較子

=

等於

{name="/components/api/v1/mall/product"}

!=

不等於

{resource.service.name!="mall-gateway"}

=~

正則匹配

{resource.service.name=~"mall-gateway|mall-client"}

!~

正則不匹配

{service!~"mall-gateway|mall-client"}

>

大於

{duration>500ms}

>=

大於等於

{duration>=500ms}

<

小於

{duration<1s}

<=

小於等於

{duration<=1s}

邏輯運算子

{condA && condB}

{ span.http.status_code >= 200 && span.http.status_code < 300 }

{condA || condB}

{name="/components/api/v1/mall/product" || resource.service.name="mall-gateway"}

RAM授權

您可以使用如下權限原則授予 RAM 使用者使用 Grafana Tempo 相容 API 進行查詢的許可權。

  • 系統權限原則:操作簡單。

  • 自訂權限原則:許可權精細,配置複雜。

極簡授權

您可以通過系統權限原則授予RAM使用者使用 Tempo 相容API查詢的許可權。具體操作,請參見為RAM使用者授權

系統權限原則名稱

查詢許可權

寫入許可權

AliyunLogFullAccess

Yes

Yes

AliyunLogReadOnlyAccess

Yes

No

自訂權限原則

您可以通過自訂權限原則授予 RAM 使用者使用 Tempo 相容 API 查詢的許可權。具體操作,請參見建立自訂權限原則為RAM使用者授權

授予RAM使用者使用 Tempo 相容API查詢資料的許可權。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "log:GetIndex",
                "log:GetLogStoreContextLogs",
                "log:ListLogStores",
                "log:GetLogStoreHistogram",
                "log:GetLogstoreLogs",
                "log:GetLogStoreContextLogs",
                "log:GetCursorOrData",
                "log:GetLogstore"
            ],
            "Resource": "acs:log:*:*:project/*"
        }
    ]
}