【組件升級(jí)】Helm1.1.17/Agent v4.0.0的升級(jí)內(nèi)容與升級(jí)方式
本次ARMS Prometheus最新版本為Helm 1.1.17,對(duì)應(yīng)的Agent版本為v4.0.0,包括有多項(xiàng)迭代,提升采集穩(wěn)定性,修復(fù)已知Bug,優(yōu)化資源消耗等。
如果您的集群內(nèi)ARMS Prometheus Agent版本為v3.x.x 系列,由于歷史版本存在一些未優(yōu)化項(xiàng),且存在數(shù)據(jù)斷線的隱患和風(fēng)險(xiǎn),因此建議您盡快升級(jí)至最新版本。
v4.0.0 版本特性說明
變更類型 | 發(fā)布內(nèi)容 |
新增 | 集群事件采集任務(wù),支持Kubernetes Deployment大盤。 |
新增 | 根據(jù)SLA進(jìn)行自監(jiān)控指標(biāo)埋點(diǎn),SLA穩(wěn)定性大盤數(shù)據(jù)。 |
新增 | ServiceMonitor支持BasicAuth認(rèn)證方式,Secret需要與ServiceMonitor在同一個(gè)命名空間下使用。 |
新增 | Metrics Metadata能力展示具體指標(biāo)含義。 |
新增 | 支持傳遞Agent Chart版本到服務(wù)端,服務(wù)端根據(jù)該版本號(hào)初始化或升級(jí)大盤。 |
新增 | RemoteWrite自監(jiān)控指標(biāo),統(tǒng)計(jì)每批次發(fā)送數(shù)據(jù)耗時(shí)。 |
新增 | 基礎(chǔ)指標(biāo)采集報(bào)錯(cuò)和采集延遲自監(jiān)控指標(biāo)。 |
新增 | 業(yè)務(wù)指標(biāo)采集報(bào)錯(cuò)和延遲自監(jiān)控指標(biāo)。 |
優(yōu)化 | RemoteWrite默認(rèn)參數(shù)queue_config設(shè)置為min_shards=10,max_samples_per_send=5000,capacity=10000,提升大規(guī)模集群適應(yīng)能力。 |
優(yōu)化 | CSI采集Job服務(wù)發(fā)現(xiàn)方式,主要為PV采集相關(guān)。 |
優(yōu)化 | senderLoop下發(fā)頻率,修改syncWorkersSeries頻率,減少不必要擾動(dòng)。 |
優(yōu)化 | 精簡部分日志,優(yōu)化部分日志增加抓取鏈路耗時(shí)更細(xì)節(jié)展示。 |
優(yōu)化 | 基礎(chǔ)指標(biāo)采集Job單獨(dú)固定采集周期和采集超時(shí)設(shè)置,不再使用Global配置,減少對(duì)基礎(chǔ)指標(biāo)采集受到的不必要干擾。 |
優(yōu)化 | Master-Slave多副本模式下互相影響邏輯,Master與Worker,Worker與Worker之間互相不再影響,提升穩(wěn)定性。 |
優(yōu)化 | Master下發(fā)Targets策略,節(jié)省大約30%的CPU40%的Memory資源開銷,提升采集性能。 |
優(yōu)化 | metrics_relabel優(yōu)化,CPU占用降低70%。 |
優(yōu)化 | 多租場景Informer監(jiān)聽邏輯,多租場景下節(jié)省CPU開銷約20%。 |
優(yōu)化 | CoreDns域名解析偶發(fā)失敗,自動(dòng)切換緩存IP并沿用,弱依賴CoreDNS實(shí)時(shí)域名解析,提升數(shù)據(jù)發(fā)送穩(wěn)定性。 |
優(yōu)化 | SendConfig下發(fā)采集配置邏輯,提升下發(fā)穩(wěn)定性。 |
優(yōu)化 | Master預(yù)抓取策略,節(jié)省Master資源開銷,提升Master服務(wù)發(fā)現(xiàn)和Targets調(diào)度能力。 |
優(yōu)化 | 單批次大包大于1 MB自適應(yīng),減少因后端限制數(shù)據(jù)包丟失情況。 |
BugFix | ScrapeLoop個(gè)別采集Target無法停止導(dǎo)致采集重復(fù)問題。 |
BugFix | 多租場景Pod的Label緩存中更新不及時(shí),造成一個(gè)時(shí)間線變?yōu)閮蓷l問題。 |
BugFix | Master對(duì)于OOM或者Restart副本偶發(fā)Targets下發(fā)異常,導(dǎo)致部分采集Targets丟失問題。 |
BugFix | RemoteWrite中解析Secret類型問題和傳輸Header問題。 |
BugFix | Kubernetes-pods關(guān)閉操作偶發(fā)不生效問題。 |
BugFix | 修復(fù)Global默認(rèn)參數(shù)和external_labels不生效問題,同時(shí)支持自定義修改。 |
升級(jí)風(fēng)險(xiǎn)
升級(jí)風(fēng)險(xiǎn):本次升級(jí)到Helm 1.1.17/Agent v4.0.0為有損升級(jí),按照集群監(jiān)控?cái)?shù)據(jù)采集量級(jí)的不同(Targets和Series的量級(jí)),存在監(jiān)控?cái)?shù)據(jù)斷線的風(fēng)險(xiǎn),預(yù)計(jì)斷線時(shí)間在0~5分鐘,不同集群可能存在一定的差異。
升級(jí)前:建議您在升級(jí)前執(zhí)行步驟一、升級(jí)前預(yù)檢查項(xiàng)(必選),確保最大程度降低升級(jí)對(duì)于集群監(jiān)控?cái)?shù)據(jù)的影響。
升級(jí)后:如果您在升級(jí)后發(fā)現(xiàn)數(shù)據(jù)異常,升級(jí)后請(qǐng)務(wù)必按照三、升級(jí)后檢查項(xiàng)(可選)進(jìn)行檢查,一旦發(fā)現(xiàn)問題可參考升級(jí)后的常見問題進(jìn)行檢查和應(yīng)對(duì),如果未能解決您可以在釘釘中搜索Prometheus值班號(hào)(釘號(hào):aliprometheus),聯(lián)系產(chǎn)品技術(shù)專家進(jìn)行咨詢。
升級(jí)方式
一、升級(jí)前預(yù)檢查項(xiàng)(必選)
Helm 1.1.16之前版本(不包含1.1.16)升級(jí)到最新Helm 1.1.17,曾經(jīng)修改過的一些參數(shù)在升級(jí)過程中不會(huì)保留,需要升級(jí)前進(jìn)行檢查,如果存在修改過的參數(shù)需要在新版本中保留,需要您在升級(jí)后手動(dòng)修改為升級(jí)前的參數(shù)值。
Helm 1.1.16之后的版本升級(jí)(包含1.1.16)支持參數(shù)的繼承,后續(xù)升級(jí)則不需要再關(guān)注修改的參數(shù)。升級(jí)前參數(shù)檢查方法如下:
單擊目標(biāo)集群名稱超鏈接,然后在左側(cè)導(dǎo)航欄選擇工作負(fù)載 > 無狀態(tài),切換命名空間為
arms-prom
,并在目標(biāo)arms-prometheus-ack-arms-prometheus
的操作列選擇更多 > 查看Yaml,查看完整YAML。需要檢查的參數(shù)如下。
spec.replicas副本數(shù),如果為1(升級(jí)后默認(rèn)為1)則不需要單獨(dú)關(guān)注。
spec.containers下的args(Agent)啟動(dòng)參數(shù),未開啟多租則此參數(shù)不存在,如果有自行設(shè)定則在升級(jí)后需要手動(dòng)修改回升級(jí)前值。
tenant_userid
tenant_clusterid
tenant_token
spec.containers.resources limits默認(rèn)為3核4 GB,requests默認(rèn)為1核1 GB。
若非默認(rèn)則需要記錄,建議在升級(jí)后手動(dòng)修改回升級(jí)前的數(shù)值。
對(duì)于上述參數(shù)有修改且需要保留的,需要自行記錄數(shù)值,在升級(jí)后使用同樣方法獲取完整YAML后,修改并單擊更新即可。
二、升級(jí)具體方法
建議通過ACK容器頁面,進(jìn)行ARMS Prometheus組件升級(jí)Helm版本,具體操作如下:
單擊目標(biāo)集群名稱超鏈接,然后在左側(cè)導(dǎo)航欄選擇運(yùn)維管理 > 組件管理,單擊日志與監(jiān)控頁簽,找到ack-arms-prometheus卡片,單擊升級(jí)進(jìn)行升級(jí)。
升級(jí)完成后,在左側(cè)導(dǎo)航欄選擇運(yùn)維管理 > Prometheus監(jiān)控,然后單擊右上角的跳轉(zhuǎn)到Prometheus服務(wù),系統(tǒng)會(huì)跳轉(zhuǎn)至Prometheus控制臺(tái)的Prometheus實(shí)例大盤列表頁面,您可以查看具體Agent運(yùn)行狀態(tài)、指標(biāo)采集情況等。
同時(shí)在左側(cè)導(dǎo)航欄單擊設(shè)置,然后在設(shè)置頁簽,查看Helm組件是否已經(jīng)升級(jí)到最新版本。
三、升級(jí)后檢查項(xiàng)(可選)
- 登錄Prometheus控制臺(tái)。
- 在左側(cè)導(dǎo)航欄單擊監(jiān)控列表,進(jìn)入可觀測監(jiān)控 Prometheus 版的實(shí)例列表頁面。
單擊目標(biāo)Prometheus實(shí)例名稱,然后在左側(cè)導(dǎo)航欄單擊服務(wù)發(fā)現(xiàn)。單擊Targets頁簽,升級(jí)后查看Job采集情況,總覽采集情況。
在左側(cè)導(dǎo)航欄單擊設(shè)置,然后在自監(jiān)控頁簽右上角單擊前往Grafana查看大盤。Helm組件升級(jí)后可重點(diǎn)關(guān)注Agent運(yùn)行狀態(tài),包括:副本數(shù)符合預(yù)期、數(shù)據(jù)發(fā)送速率無異常、資源消耗無異常、數(shù)據(jù)發(fā)送無異常。
在自監(jiān)控頁面的agent自監(jiān)控頁簽,可以查看Prometheus Agent自監(jiān)控大盤。
Helm組件升級(jí)后,可重點(diǎn)關(guān)注4個(gè)基礎(chǔ)指標(biāo)采集Job:_arms/kubelet/cadvisor、_arms/kubelet/metric、_kube-state-metrics、node-exporter。同時(shí)在頁面右上角可選擇時(shí)間范圍,查看時(shí)間跨度覆蓋升級(jí)前后,觀察升級(jí)前后采集是否存在異常情況。
升級(jí)后的常見問題
升級(jí)后,實(shí)際運(yùn)行副本數(shù)與預(yù)期Replica不相等
您需要檢查是否有Agent處于Pending狀態(tài),ARMS Prometheus強(qiáng)依賴于全部副本處于Running狀態(tài)才可以正常工作。您可以在容器服務(wù)控制臺(tái)的目標(biāo)集群工作負(fù)載 > 無狀態(tài)頁面的arms-prom
命名空間下,查看全部副本的運(yùn)行狀態(tài)。
升級(jí)后,Agent消耗Memory/CPU較高
您需要檢查是否有發(fā)送數(shù)據(jù)出現(xiàn)異常,數(shù)據(jù)發(fā)送異常會(huì)導(dǎo)致Agent內(nèi)存憋數(shù)據(jù),進(jìn)而導(dǎo)致資源消耗增高。您可以在容器服務(wù)控制臺(tái)的目標(biāo)集群運(yùn)維管理 > Prometheus監(jiān)控頁面,單擊其他頁簽,在Prometheus Agent中查看Memory/CPU的資源消耗情況。
升級(jí)后,出現(xiàn)基礎(chǔ)指標(biāo)異常(完全斷線或者不連續(xù))
例如node_*** (圖標(biāo)①)、container_***(圖標(biāo)②)、kubelet_***(圖標(biāo)③)、kube_***(圖標(biāo)④)指標(biāo)等,則需要排查基礎(chǔ)指標(biāo)采集Job是否有報(bào)錯(cuò),您可以在Prometheus服務(wù)控制臺(tái)的服務(wù)發(fā)現(xiàn)頁面的Targets頁簽下,查看這些指標(biāo)的情況。若發(fā)現(xiàn)存在報(bào)錯(cuò)請(qǐng)?jiān)卺斸斨兴阉鱌rometheus值班號(hào)(釘號(hào):aliprometheus),聯(lián)系產(chǎn)品技術(shù)專家協(xié)助解決。
升級(jí)后,出現(xiàn)RemoteWrite流量下跌或者出現(xiàn)RemoteWrite側(cè)部分?jǐn)?shù)據(jù)缺失(若沒有配置則忽略)
新版本v4.0.0中RemoteWrite的write_relabel_configs會(huì)自動(dòng)生效,歷史版本中該字段對(duì)應(yīng)的能力未生效,若配置了drop、keep等動(dòng)作,則會(huì)出現(xiàn)流量一定程度上的下跌,可自行酌情進(jìn)行修改該字段。您可以在Prometheus服務(wù)控制臺(tái)的設(shè)置頁面的設(shè)置頁簽下,單擊編輯Prometheus.yaml,然后在彈出的對(duì)話框中修改該字段。