在容器內進行內存監控的常用指標包括
1、 內存中的cache用量
container_memory_cache
2、 常駐的內存用量
container_memory_rss
3、 交換分區用量
container_memory_swap
4、 內存的總占用量
container_memory_usage_bytes
由於container_memory_usage_bytes包括container_memory_cache,所以在計算容器的實際內存占用時,是將container_memory_usage_bytes減去container_memory_cache統計的。
內存指標都是儀表盤類型的數據,可以直接通過標簽獲取每個pod的內存指標
5、獲取內存用量的sql
container_memory_usage_bytes{pod="kubernetes-dashboard-74d688b6bc-stl4c"}
在監控k8s時,通過上面的查詢條件會獲取3條監控指標:sanbox容器內存、業務容器內存和整個pod的內存。可以追加過濾條件獲取其中的某個指標
容器過程中如果達到了上限,就會觸發OOM事件。堆內存OOM的判斷並不是通過container_memory_usage_bytes指標進行的。而是通過《container_memory_working_set_bytes{name!~"POD"}》指標進行的。所以通過 container_memory_working_set_bytes / kube_pod_container_resource_limits_memory_bytes獲得內存使用率