prometheus是一个开源的系统监控和报警系统,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支 持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。 工作流程: 1)Prometheus server可定期从活跃的(up)目标主机上(target)拉取监控指标数据,目标主机的监控数据可通过配置静态job或者服务发现的方式被prometheus server采集到,这种方式默认的pull方式拉取指标;也可通过pushgateway把采集的数据上报到prometheus server中;还可通过一些组件自带的exporter采集相应组件的数据。 2)Prometheus server把采集到的监控指标数据保存到本地磁盘或者数据库。 3)Prometheus采集的监控指标数据按时间序列存储,通过配置报警规则,把触发的报警发送到alertmanager。 4)Alertmanager通过配置报警接收方,发送报警到邮件,微信或者钉钉等。 5)Prometheus自带的web ui界面提供PromQL查询语言,可查询监控数据以及排查数据问题。 6)可通过接入prometheus数据源,把监控数据以图形化形式展示出,如Grafana。 监控数据: 1)集群节点状态监控:从集群中各节点的kubelet服务获取节点的基本运行状态。 2)集群节点资源用量监控:通过Daemonset的形式在集群中各个节点部署Node Exporter采集节点的资源使用情况。 3)节点中运行的容器监控:通过各个节点中kubelet内置的cAdvisor中获取个节点中所有容器的运行状态和资源使用情况。 4)如果在集群中部署的应用程序本身内置了对Prometheus的监控支持,那么我们还应该找到相应的Pod实例,并从该Pod实例中获取其内部运行状态的监控指标。 5)对k8s本身的组件做监控:apiserver、scheduler、controller-manager、kubelet、kube-proxy、ingress。 6)应用【Java】及中间件状态指标:延迟、错误,QPS,内部状态,资源用量,以及服务状态,代码集中集成Prometheus Client。 Prometheus部署方案: 1)基本高可用方案: 适用范围:监控规模不大,Promthues Server也不会频繁发生迁移的情况,并且只需要保存短周期监控数据的场景。 2)基本高可用+远程存储方案: 适用范围:用户监控规模不大,但是希望能够将监控数据持久化,同时能够确保Promthues Server的可迁移性的场景。 3)远程存储+联邦集群方案: Promthues的性能瓶颈主要在于大量的采集任务,因此用户需要利用Prometheus联邦集群的特性,将不同类型的采集任务划分到不同的Promthues子服务中,从而实现功能分区。 |
|