1、監控目的node
1.及時發現已經出現的問題
2.提早預警可能發生的問題
2、監控內容
系統基礎指標
服務基礎信息
服務個性化信息
日誌
3、如何監控
數據採集
數據存儲
定義報警規則
配置報警方式
4、k8s的監控
每一個節點的基礎指標
每一個容器的基礎指標
k8s集羣組件
5、prometheus特徵
有metric名稱和kv標識的多維數據模型
靈活的查詢語言
支持pull,push兩種方式添加數據
支持k8s服務發現的動態配置
6、prometheus數據類型
counter
gauge
histogram/summary
7、數據來源
node數據 nodeExporter
pod數據 kubelet(cAdvisor)
k8s組件數據 kube-state-metrics
etcd https://2379/metrics
apiserver https://6443/metrics
controllerManager https://10252/metrics
scheduler https://10251/metrics
8、k8s自己監控
node資源利用率
node數量
pods數量(node)
資源對象狀態(service/pod之類)
pod監控
pod數量(項目)
容器資源利用率
應用程序
9、實現思路
監控指標 具體實現 舉例
pod性能 cadvisor 容器CPU/內存利用率
node性能 node-exporter 節點cpu/內存利用率
k8s資源對象 kube-state-metrics pod/deployment/service
基於k8s的服務發現
由於prometheus採用的是pull方式來拉取監控數據,這種方式須要由server側決定採集的目標有哪些,即配置在scrape_configs中的各類job,pull方式的主要缺點就是沒法動態感知新服務的加入,所以大多數監控都默認支持服務發現機制,自動發現集羣中的新端點,並加入到配置中。
Prometheus支持多種服務發現機制:文件,DNS,Consul,Kubernetes,OpenStack,EC2等等。基於服務發現的過程並不複雜,經過第三方提供的接口,Prometheus查詢到須要監控的Target列表,而後輪詢這些Target獲取監控數據。
對於kubernetes而言,Promethues經過與Kubernetes API交互,而後輪詢資源端點。目前主要支持5種服務發現模式,分別是:Node、Service、Pod、Endpoints、Ingress。對應配置文件中的role: node/role:service
監控k8s集羣中pod
kubelet的節點使用cadvisor提供的metrics接口獲取該節點全部容器相關的性能指標數據
暴露接口地址:
https//NodeIP:10255/metrics/cadvisor
https//NodeIP:10250/metrics/cadvisor
監控k8s集羣node
node_exporter:用於linux系統監控
監控k8s集羣資源對象
kube-state-metrics採集了k8s中各類資源對象的狀態信息:
kube_daemonset_*
kube_deployment_*
kube_job_*
kube_namespace_*
kube_node_*
kube_persistentvolumeclaim_*
kube_pod_container_*
kube_pod_*
kube_replicaset_*
kube_service_*
kube_statefulset_*