一般在公司里我们都是使用prometheus进行监控,先说一下prometheus的工作核心:

prometheus是使用 Pull (抓取)的方式去搜集被监控对象的 Metrics 数据(监控指标数据),然后,再把这些数据保存在一个 TSDB (时间序列数据库,比如 OpenTSDB、InfluxDB 等)当中,以便后续可以按照时间进行检索。

有了这套核心监控机制, Prometheus 剩下的组件就是用来配合这套机制的运行。比如 Pushgateway,可以允许被监控对象以 Push 的方式向 Prometheus 推送 Metrics 数据。

而 Alertmanager,则可以根据 Metrics 信息灵活地设置报警。当然, Prometheus 最受用户欢迎的功能,还是通过 Grafana 对外暴露出的、可以灵活配置的监控数据可视化界面。

kubernetes的监控体系:

  1. 宿主机的监控数据: 比如节点的负载,CPU,内存,磁盘,网络这些常规的信息,当然你也可以查看​​https://github.com/prometheus/node_exporter#enabled-by-default​​ 来看看这些指标,实在是太多了。

  2. 对apiserver,kubelet等组件的监控,比如工作队列的长度,请求的QPS和数据延迟等,主要是检查k8s本身的工作情况

  3. k8s相关的监控数据,比如对pod,node,容器,service等主要k8s概念进行监控。

在监控指标的规划上需要遵从USE原则和RED原则

USE:

  1. 利用率
  2. 饱和度
  3. 错误率

RED原则:

4. 每秒请求数

5. 每秒错误数

6. 服务响应时间

这里需要注意: promotheus采用的是pull的模式。