一般在公司里我们都是使用prometheus进行监控,先说一下prometheus的工作核心:
prometheus是使用 Pull (抓取)的方式去搜集被监控对象的 Metrics 数据(监控指标数据),然后,再把这些数据保存在一个 TSDB (时间序列数据库,比如 OpenTSDB、InfluxDB 等)当中,以便后续可以按照时间进行检索。
有了这套核心监控机制, Prometheus 剩下的组件就是用来配合这套机制的运行。比如 Pushgateway,可以允许被监控对象以 Push 的方式向 Prometheus 推送 Metrics 数据。
而 Alertmanager,则可以根据 Metrics 信息灵活地设置报警。当然, Prometheus 最受用户欢迎的功能,还是通过 Grafana 对外暴露出的、可以灵活配置的监控数据可视化界面。
kubernetes的监控体系:
宿主机的监控数据: 比如节点的负载,CPU,内存,磁盘,网络这些常规的信息,当然你也可以查看https://github.com/prometheus/node_exporter#enabled-by-default 来看看这些指标,实在是太多了。
对apiserver,kubelet等组件的监控,比如工作队列的长度,请求的QPS和数据延迟等,主要是检查k8s本身的工作情况
k8s相关的监控数据,比如对pod,node,容器,service等主要k8s概念进行监控。
在监控指标的规划上需要遵从USE原则和RED原则
USE:
- 利用率
- 饱和度
- 错误率
RED原则:
4. 每秒请求数
5. 每秒错误数
6. 服务响应时间
这里需要注意: promotheus采用的是pull的模式。