所有的 Kubernetes 組件,都提供了 /metrics 接口用來暴露監(jiān)控?cái)?shù)據(jù),Kube-Proxy 也不例外。通過 ?ss ?或者 ?netstat ?命令可以看到 Kube-Proxy 監(jiān)聽的端口,一個(gè)是 10249,用來暴露監(jiān)控指標(biāo),一個(gè)是 10256 ,作為健康檢查的端口,一般我們只關(guān)注前一個(gè)端口。
1、Kube-Proxy 關(guān)鍵指標(biāo)
1、通用的 Go 程序相關(guān)的指標(biāo)
?
以上指標(biāo),只要是通過 Prometheus Go SDK 埋點(diǎn)的程序都會(huì)有,包括Kube-Proxy, Kubelet、APIServer、Scheduler 等。
2、請(qǐng)求 APIServer 的指標(biāo)
Kubernetes 中多個(gè)組件都要調(diào)用 APIServer 的接口,每秒調(diào)用多少次、有多少成功多少失敗、耗時(shí)情況如何,這些指標(biāo)也比較關(guān)鍵。比如:
- rest_client_request_duration_seconds:請(qǐng)求 APIServer 的耗時(shí)統(tǒng)計(jì)
- rest_client_requests_total:請(qǐng)求 APIServer 的調(diào)用量統(tǒng)計(jì)
3、規(guī)則同步類指標(biāo)
Kube-Proxy 的核心職能,就是去 APIServer 獲取轉(zhuǎn)發(fā)規(guī)則,修改本地的 iptables 或者 ipvs 的規(guī)則,所以這些規(guī)則同步相關(guān)的指標(biāo),就至關(guān)重要了。
?2、Kubelet 關(guān)鍵指標(biāo)
Kubelet 也會(huì)吐出 Go 進(jìn)程相關(guān)的通用指標(biāo)以及和 APIServer 通信相關(guān)的度量指標(biāo),和 Kube-Proxy 類似。Kubelet 核心職能是管理 Pod,操作各種 CNI、CSI 相關(guān)的接口,和容器引擎打交道,度量這類操作的指標(biāo)就顯得尤為關(guān)鍵。
?
3、容器負(fù)載指標(biāo)
CPU 指標(biāo)
sum(
irate(container_cpu_usage_seconds_total[3m])
) by (pod,id,namespace,container,ident,image)
/
sum(
container_spec_cpu_quota/container_spec_cpu_period
) by (pod,id,namespace,container,ident,image)
這是計(jì)算 CPU 使用率,整體是一個(gè)除法運(yùn)算,分子部分是容器每秒耗費(fèi)的 CPU 時(shí)間,分母部分是每秒分配給容器的 CPU 時(shí)間。
increase(container_cpu_cfs_throttled_periods_total[1m])
/
increase(container_cpu_cfs_periods_total[1m]) * 100
這是在計(jì)算 CPU 被限制的時(shí)間比例,如果這個(gè)值很高,說明容器在使用 CPU 資源的時(shí)候經(jīng)常被限制,需要提高這個(gè)容器的 CPU Quota。延遲敏感型的應(yīng)用,需要特別關(guān)注這個(gè)指標(biāo)。
內(nèi)存指標(biāo)
container_memory_working_set_bytes
/
container_spec_memory_limit_bytes
and
container_spec_memory_limit_bytes != 0
計(jì)算內(nèi)存使用率的時(shí)候,核心也是一個(gè)除法運(yùn)算,分子是容器的內(nèi)存占用,分母是內(nèi)存 Limit 大小。當(dāng)然,有些容器沒有指定內(nèi)存 Limit,所以還需要有個(gè) and 語句來做限制,只有 limit_bytes 不等于 0,這個(gè)除法運(yùn)算才有意義。
Pod 網(wǎng)絡(luò)流量
irate(container_network_transmit_bytes_total[1m]) * 8
irate(container_network_receive_bytes_total[1m]) * 8
這個(gè)指標(biāo)名字非常清晰,transmit 是出向,receive 是入向,這兩個(gè)指標(biāo)都是 Counter 類型的值,單調(diào)遞增,所以使用 irate 計(jì)算每秒速率。因?yàn)榫W(wǎng)絡(luò)流量一般都是用 bit 作為單位,所以最后乘以 8,把 byte 換算成 bit。
Pod 硬盤 IO 讀寫流量
irate(container_fs_reads_bytes_total[1m])
irate(container_fs_writes_bytes_total[1m])
這個(gè)指標(biāo)名字一看就知道是 Counter 類型,我們不關(guān)心當(dāng)前值是多少,而是關(guān)心最近一段時(shí)間每秒的速率是多少,所以使用 irate 做了二次計(jì)算。文章來源:http://www.zghlxwxcb.cn/news/detail-639171.html
此文章為8月Day10學(xué)習(xí)筆記,內(nèi)容來源于極客時(shí)間《運(yùn)維監(jiān)控系統(tǒng)實(shí)戰(zhàn)筆記》,推薦該課程。文章來源地址http://www.zghlxwxcb.cn/news/detail-639171.html
到了這里,關(guān)于監(jiān)控Kubernetes Node組件的關(guān)鍵指標(biāo)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!