Kubernetes实录(15) Kubernetes监控方案-使用prometheus实现全栈监控(1)
Kubernetes实录系列记录文档完整目录参考: Kubernetes实录-目录
相关记录链接地址 :
监控系统在运维场景或者说整个产品应用生命周期内非常重要的一个环节,用于故障事件前预警,事后提供数据用于快速定位故障以及监控指标汇总展示等。下面记录下我遇到的监控场景。
本文主要介绍Kubernetes场景下的监控,但是我所在的运维环境不止有Kubernetes集群,还有kubernetes之外的资源需要监控,整体情况如下:
- 基础设施以及应用中间件的监控。
基础设施除了kubernetes集群节点本身之外,还有很多网络设备,物理服务器,虚拟服务器等需要监控; - 应用中间件
应用中间件,例如ElasticSearch,Redis,mysql,MongoDB,MQ,Nginx等除了有在kubernetes集群内部署的之外,还有物理机以及虚拟机上部署的实例需要监控 - kubernetes集群的监控。
kubernetes本身的节点,组件服务需要监控。而且Kubernetes本身rbac机制以及证书认证的关系,将监控系统集成部署在kubernetes集群内部是比较方便的。 - Kubernetes集群上部署的应用监控
Kubernetes集群的监控方案选择exporter(s)+prometheus+grafana
。其中
- 各种exporter用来收集相关监控指标
- prometheus负责从各种exporter拉取监控指标数据,并提供其他监控系统具备的能力
- grafna是一个可视化工具,这里用来展示监控信息
我们当前的环境已经存在一套部署在物理服务器上的基于prometheus的监控系统以及告警/事件平台。刚好prometheus支持federation机制,用于配置层级结构。基于以上条件配置监控架构如下
- Kubernetes集群内部部署一套完整独立的基于prometheus的子监控系统(不包括告警)
- 集群外部的prometheus作为顶级告警系统通过federation机制将Kubernetes集群内prometheus作为一个slave拉取监控信息(metrics)
- 所有的监控事件与告警任务由顶级监控告警系统处理,这样对于已经存在和开发的监控平台没有浸入性可以很好的兼容。
关于prometheus以及Federation机制的介绍请参考官方文档,在后面的记录文档中包含我所遇到场景的相关配置。
参考文档:
- https://prometheus.io/docs/prometheus/latest/federation/
- https://www.kubernetes.org.cn/3418.html
- https://blog.****.net/liukuan73/article/details/78881008