prometheus监控

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_*