热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Kubernetes系列(五):Prometheus监控框架简介

由于容器化和微服务的大力发展,Kubernetes基本已经统一了容器管理方案,当我们使用Kubernetes来进行容器化管理的时候,全面监控Kubernetes也就成了我们第一个需

由于容器化和微服务的大力发展,Kubernetes基本已经统一了容器管理方案,当我们使用Kubernetes来进行容器化管理的时候,全面监控Kubernetes也就成了我们第一个需要探索的问题。我们需要监控kubernetes的ingress、service、deployment、pod......等等服务,以达到随时掌握Kubernetes集群的内部状况。

此文章是Prometheus监控系列的第一篇,目的也很明确,旨在于寻找一套能够胜任kubernetes集群监控的架构。

1、cAdvisor + InfluxDB + Grafana

2、Heapster + InfluxDB + Grafana

3、Promethus + kube-state-metrics + Grafana

  • Grafana: 开源DashBoard,后端支持多种数据库,如:Influxdb、Prometheus...,插件也比较多,功能强大。非常适合用于做展示。

  • InfluxDB: 开源时间序列数据库,性能高效

  • cAdvisor: 来自 Google 的容器监控工具,也是 Kubelet 内置的容器资源收集工具。它会自动收集本机容器 CPU、内存、网络和文件系统的资源占用情况,并对外提供 cAdvisor 原生的 API。随 kubelet 启动 --cadvisor-port = 1

Kubernetes 系列(五):Prometheus监控框架简介

 

  • Heapster: 由于 cAdvisor 只提供了单机的容器资源占用情况,而 Heapster 则提供了整个集群的资源监控(kubernetes 1.11 之前,hpa都是从heapster获取数据),并支持持久化数据存储到 InfluxDB

  •  

Kubernetes 系列(五):Prometheus监控框架简介

 

  • Promethues: 提供强大的数据采集、数据存储、数据展示、告警等,天生完美支持kubernetes,CNCF基金会的第二个成员,第一个是Kubernetes。而且Prometheus里面很多思想都来源于Google内部的监控系统Borgmon,可以说是Google的干儿子。

Kubernetes 系列(五):Prometheus监控框架简介

 

    • kube-state-metrics在这里作为prometheus的一个exporter来使用,提供deployment、daemonset、cronjob等服务的监控数据,由kubernestes官方提供,与prometheus紧密结合。 更多关于kube-state-metrics的信息:https://github.com/kubernetes/kube-state-metrics

 

Prometheus优势

Prometheus和kubernetes相亲相爱

Google干儿子,大厂维护,而且最重要的一点是完美支持Kubernetes

规范定义

Prometheus对于应用层的监控,定义了一个良好的规范,只需要应用提供接口获取日志就可以了

Prometheus可以在各个层面实现监控,如下

  • 基础设施层:监控各个主机服务器资源(包括Kubernetes的Node和非Kubernetes的Node),如CPU,内存,网络吞吐和带宽占用,磁盘I/O和磁盘使用等指标。

  • 中间件层:监控独立部署于Kubernetes集群之外的中间件,例如:MySQL、Redis、RabbitMQ、ElasticSearch、Nginx等。

  • Kubernetes集群:监控Kubernetes集群本身的关键指标

  • Kubernetes集群上部署的应用:监控部署在Kubernetes集群上的应用

基于以上三点,所以最终选择使用Prometheus来监控Kubernetes集群。

Kubernetes集群监控架构

在具体讨论Prometheus监控架构之前,再来看几个实际的问题

  1. 如果有多个Kubernetes集群,怎么做?

  2. 多个Kubernetes集群的监控数据怎么处理?

  3. 告警应该怎么集中并去重?

好在这些问题对Prometheus来说都不是难事,最终,我们采取 Prometheus + kube-state-metrics + Alertmanager + Grafana 架构来做Kubernetes集群监控。监控系统具体架构如下

Kubernetes 系列(五):Prometheus监控框架简介

 

使用这个架构,那上面所提到的三个问题将不再是问题。

详解

K8s集群:

k8s集群-1/-2/-3为需要被监控的集群,就是业务集群。每个集群内部都部署了一个Prometheus,主要由两部分组成 prometheus-server + kube-state-metrics。

prometheus-server:使用一个带RBAC权限的账号采集集群中现有监控信息(其实是从cadvisor获取)和节点信息。

kube-state-metrics:这里作为prometheus的exporter使用。因为prometheus不能获取集群中Deployment, Job, CronJob的监控信息。 部署kube-state-metrics的时候,svc一定要带一个annotations:prometheus.io/scrape: 'true'(这非常重要

监控汇总

监控汇总其实就是一个Prometheus-server,用于将各个散落在各地的监控数据汇总起来,统一管理。

核心思想是利用Prometheus的federation机制,从其他集群pull数据。这样其他集群的prometheus只需要短暂存储数据,汇总之后再做长期存储;同时还可以统一做告警判断和数据展示。

展示面板

展示面板就是一个Grafana,支持使用Prometheus做为数据源进行绘图展示。

告警处理

告警是利用Prometheus官方提供的Altermanager模块。Alermanager模块从Prometheus-Server接收告警信息,然后进行汇总、屏蔽、告警...等等操作。Alertmanager告警途径支持有email、wechat、webhook、slack等等,非常丰富。但是这里使用的是自身开发的Send_msg模块。

消息发送

自主开发的消息发送模块,集成email、微信、钉钉、短信等方式。其实不止告警时会发送消息,还有其他地方也会用到消息发送。

 

文章来源:https://mp.weixin.qq.com/s/iBQzN3DtIPa3wZ96d5Uvng


推荐阅读
  • k8s(十一)helm安装premetheus
    1prometheus基础知识1.1prometheus简介Prometheus是一套开源的系统监控报警框架。和Kubernetes类似,它也发源于Google的Borg体系,其原 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
  • 揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节
    揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节 ... [详细]
  • redis 端口_使用Prometheus和Grafana构建Redis实时监控平台
    Redis作为缓存系统,在整个后端体系中是较为重要的一环,需要实时监控运行状态。现在有各种各样的工具都可以对Redis进行监控,例如&#x ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 本文探讨了在使用JavaMail发送电子邮件时,抄送功能未能正常工作的问题,并提供了详细的代码示例和解决方法。 ... [详细]
  • 本文详细介绍了Android系统的四层架构,包括应用程序层、应用框架层、库与Android运行时层以及Linux内核层,并提供了如何关闭Android系统的步骤。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 基址获取与驱动开发:内核中提取ntoskrnl模块的基地址方法解析
    基址获取与驱动开发:内核中提取ntoskrnl模块的基地址方法解析 ... [详细]
  • Linux下安装grafana并且添加influxdb监控的方法
    这篇文章主要介绍了Linux下安装grafana并且添加influxdb监控的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值, ... [详细]
  • 大幅|大盘_OPLG:新一代云原生可观测最佳实践
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了OPLG:新一代云原生可观测最佳实践相关的知识,希望对你有一定的参考价值。简介: ... [详细]
author-avatar
章小胭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有