ARMS標籤功能支援以一種全新的維度,組織並觀察應用監控指標、調用鏈、日誌等資料。本文介紹如何將應用接入標籤中心,實現基於應用標籤的應用篩選和許可權管理,並在應用詳情和Grafana視圖頁面通過執行個體標籤篩選應用監控資料。
前提條件
已將應用接入ARMS應用監控。具體操作,請參見應用監控接入概述。
對於Java應用,還需滿足以下要求:
對於容器叢集應用,請確認ack-onepilot組件的版本在v3.0.4或以上且ARMS探針版本在v2.7.3.5或以上。
對於其他環境應用,請確認ARMS探針版本在v2.7.3.5或以上,您可以在ARMS控制台 頁面下的探針版本發布說明頁簽擷取最新的ARMS探針安裝包。
標籤類型
目前ARMS應用監控提供兩種維度標籤:應用標籤和執行個體標籤,請您根據使用情境選擇合適的標籤類型。應用標籤和執行個體標籤都採用索引值對(Key-Value)的資料結構,可以同時添加多個索引值對。
應用標籤
作用於ARMS應用上,您可以在ARMS控制台 頁面查看或修改應用標籤。通過應用標籤,可以實現應用篩選、應用許可權管理、成本分賬等方面的需求。
執行個體標籤
在ARMS的設計中,一個應用可以包含多個應用執行個體,每個應用執行個體都代表一個應用進程,它們通過相同的應用程式名稱接入到ARMS中。不同於應用標籤,執行個體標籤作用在應用執行個體上,對於同屬一個應用的不同應用執行個體,它們可以擁有不同的執行個體標籤。
對於Kubernetes環境下自動接入ARMS應用監控的應用執行個體,ARMS會預設寫入如下執行個體標籤:
標籤Key | 說明 |
workloadKind | 應用執行個體所在的工作負載的類型,例如Deployment。 |
workloadName | 應用執行個體所在的工作負載的名字。 |
clusterName | 應用執行個體所在的K8s叢集名。 |
namespace | 應用執行個體所在的K8s命名空間。 |
version | 鏡像的tag。 可被自訂執行個體標籤覆蓋。 |
agentVersion | 探針版本。 |
除了預設執行個體標籤外,您還可以添加自訂執行個體標籤。同時,執行個體標籤還會完整地繼承應用標籤,ARMS為應用執行個體產生的監控資料中,都會帶上對應的執行個體標籤。
自訂執行個體標籤的Key建議滿足Prometheus命名規範,即符合正則規則:^[a-zA-Z_][a-zA-Z0-9_]*$
。對於不符合正則規則的Key,ARMS探針會採用底線(_)對不合規片段進行替代處理,例如:1key:1value
會被替換為_key:1value
。
樣本:
如下圖所示,應用my-app包含兩個執行個體,ARMS為執行個體B產生的指標資料中包含的標籤為{env: Dev, team: Observability, app: my-app, workloadKind: Deployment, workloadName: my-app, clusterName: ClusterA, namespace: nsA, gitVersion: 1.0.2}
。
添加自訂執行個體標籤
為部署在Kubernetes叢集中的應用添加自訂執行個體標籤
方式一(推薦):通過Pod Label方式注入自訂執行個體標籤
對於部署在Kubernetes環境中自動安裝ARMS探針的應用,可以通過Pod Label添加自訂執行個體標籤。
這種方式同時適合部署在阿里雲Container ServiceACK環境和通用Kubernetes環境中的應用。ACK環境和通用Kubernetes環境自動安裝探針的操作,請參見應用監控接入概述。
以部署在ACK環境中的應用為例:
在Container Service管理主控台目的地組群下的無狀態或有狀態頁面頂部選擇目標命名空間,然後在目標應用右側選擇 ,在編輯YAML對話方塊中添加自訂標籤後單擊更新。應用執行個體將觸發重啟,並加入新的執行個體標籤。
方式二:通過Pod環境變數方式注入自訂執行個體標籤
Java應用如需使用該方式,探針版本需要在4.0.0及以上版本。
對於某些pod建立後才能擷取到的自訂標籤(如podName),您可以通過在應用程式容器的啟動指令碼中增加作業系統環境變數來實現自訂執行個體標籤的注入,具體方式如下:
為您的應用程式容器增加一個名為ARMS_HOST_TAGS的環境變數,值為您的執行個體標籤,多個標籤之間使用
key1:value1&key2:value2
的格式輸入,例如:export ARMS_HOST_TAGS="gitVersion:1.0.2&ip:192.168.1.101"
。在環境變數生效後,再啟動應用進程。
為手動安裝探針的應用添加自訂執行個體標籤
Java應用
方式一:添加-D命令列參數
請在您的Java應用啟動參數中添加-Darms.host.tags="${yourLabel}"
。
請將${yourLabel}
替換為您需要添加的執行個體標籤,多個標籤之間使用key1:value1&key2:value2
的格式輸入,例如:-Darms.host.tags="gitVersion:1.0.2&ip:192.168.1.101"
。
方式二:修改設定檔
探針版本為低於4.0.0
修改探針安裝包中arms-agent.config設定檔的profiler.tags.customtags欄位,可以添加自訂執行個體標籤,多個標籤之間使用
key1:value1&key2:value2
的格式輸入,例如:#profiler.tags.customtags=key1:value1&key2:value2 profiler.tags.customtags=gitVersion:1.0.2&ip:192.168.1.101
重啟應用進程。
探針版本高於4.0.0
在任意目錄下建立一個.properties尾碼的設定檔,在設定檔中增加profiler.tags.customtags欄位,value指定為您需要添加的執行個體標籤,多個標籤之間使用
key1:value1&key2:value2
的格式輸入,例如:#profiler.tags.customtags=key1:value1&key2:value2 profiler.tags.customtags=gitVersion:1.0.2&ip:192.168.1.101
在您的Java應用啟動參數中添加
-Dotel.javaagent.configuration-file=${path/to/config/file}
。請將
${path/to/config/file}
替換為您剛剛建立的設定檔全路徑,例如:-Dotel.javaagent.configuration-file=/home/admin/config/agent-config.properties
。重啟應用進程。
Golang應用
聲明環境變數,然後重啟應用進程。
#export profiler.tags.customtags=key1:value1&key2:value2
export profiler.tags.customtags=gitVersion:1.0.2&ip:192.168.1.101
K8s環境下通過Pod Label注入應用標籤
Java應用僅3.0.16及以上版本的ack-onepilot組件支援通過Pod Label注入應用標籤。
如果Pod Label帶有app.customAppKey.
首碼,則會被識別為應用標籤,而不是執行個體標籤。
例如以下代碼,ARMS會為這個工作負載接入的應用加上應用標籤env: dev。
template:
metadata:
labels:
app.customAppKey.env: dev
app: mall-gateway
armsPilotAutoEnable: 'on'
aliyun.com/app-language: golang # Go應用必填,標明此應用是Go應用。Java應用無需設定。
armsPilotCreateAppName: mall-gateway
在ARMS中,應用是一種彙總概念,代表多個應用執行個體的集合。1個應用可以擁有多個應用執行個體,也可以來自於多個工作負載,或者多個K8s叢集。所以,通過Pod Label注入應用標籤只能作為DevOps情境下的便捷操作,存在一定的局限性。
通過Pod Label注入的應用標籤只增不減,如果要修改或刪除已有的標籤key,需要在修改YAML檔案之後,再通過ARMS控制台或OpenAPI進行操作。
多個工作負載接入同一個ARMS應用的情況下,通過Pod Label注入的應用標籤會造成衝突,使用者需要自行確保應用標籤的一致性。
使用應用標籤
應用篩選
在ARMS應用列表,以及建立警示規則等功能中,可以基於應用標籤快捷篩選應用。
基於標籤的許可權管理
基於應用標籤管理RAM許可權,具體操作,請參見應用監控自訂RAM授權策略。
使用執行個體標籤
在應用詳情中根據執行個體標籤過濾監控資料
登入ARMS控制台,在左側導覽列選擇 。
在應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。
說明語言列的表徵圖含義如下:
:接入應用監控的Java應用。
:接入應用監控的Golang應用。
:接入應用監控的Python應用。
-:接入Managed Service for OpenTelemetry的應用。
在應用詳情的多個頁面中,都可以根據執行個體標籤過濾監控資料,例如根據鏡像版本號碼進行對比分析。
在Grafana視圖頁面通過標籤查詢監控指標
登入ARMS控制台,在左側導覽列選擇 。
在應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。
說明語言列的表徵圖含義如下:
:接入應用監控的Java應用。
:接入應用監控的Golang應用。
:接入應用監控的Python應用。
-:接入Managed Service for OpenTelemetry的應用。
在左側導覽列單擊Grafana視圖,在右側頁面頂部選擇不同的標籤,查看對應的監控指標。