浅谈多环境中的Kubernetes集群Prometheus+InfluxDB+Grafana监控方案

简介: 本文介绍了对多环境中Kubernetes集群进行集中监控的Prometheus+InfluxDB+Grafana解决方案。

Kubernetes监控方案

目前Kubernetes的常用监控方案是Prometheus+Grafana的方式。Prometheus的部署一般是用operator的方式,随着helm的chart包管理日益普及,Prometheus operator也就可以直接通过helm命令直接部署了。
一般开发模式都是在多环境中进行的,这里的环境是指开发(dev),集成(int),预演(preview/cert),产品(prod),不同公司有不同的定义。为了提供监控接口给相关人员,可以是每个环境有自己的grafana,也可以是集中在一个grafana中进行各个环境的指标展示和监控。比如我们单独有一个ops环境来做一些运维相关的工作,这就包括对其它环境的监控。

Prometheus及远端存储

Prometheus的高可用不是太好,Prometheus operator只提供了Prometheus的单实例部署,它的存储空间和性能有限,一般不适宜做长期数据的保存。因此它提供了一系列接口来支持对不同后端的远端存储,这样在设计监控方案的时候可以自由选择好的数据存储方案,避免在Prometheus重复实现高可靠的存储。InfluxDB是业界时序数据库比较好的产品,因此我们采用InfluxDB来做远端存储。这时的架构大概如下图:
monitor

多环境监控

如果要对多个环境的Kubernetes集群进行集中监控,我们就可以用一个ops环境中的InfluxDB作为其它环境Prometheus的共同远端存储,这里要对其它环境的Prometheus做remote write的配置,即将所有的指标数据写道InfluxDB中。同时在ops环境中还要搭建一个Prometheus和Grafana,Prometheus用InfluxDB作为remote read,然后通过Grafana连接ops的Prometheus进行多个环境的展示。
具体架构见下图,这里vpc peering对应阿里云指的高速通道,即在多个环境中的vpc和ops中vpc建立快速通道,这样可以通过阿里云内网进行通信。
multi_environment_monitoring

Prometheus operator部署

用helm进行Prometheus的部署已经非常方便了,大家下载最新的helm,同时最好更新Kubernetes到最新版本。这个operator包含Prometheus,Exporters,Grafana,一切都是开箱即得,自动配置好所有相关参数,简单调整就可以使用。
这里的部署步骤为:

ops中部署InfluxDB

在ops环境中先部署好InfluxDB,步骤略。得到InfluxDB的访问ip和端口(一般为8086)。登陆InfluxDB并建立一个数据库如test。

其它环境部署Prometheus

在其它环境中部署Prometheus,这里可以跳过Grafana,因为Grafana是部署在ops中的。

# helm install dev stable/prometheus-operator  --set prometheus.prometheusSpec.remoteWrite[0].url="http://influxdb-ip:8086/api/v1/prom/write?db=test&u=testuser&p=testpwd",prometheus.prometheusSpec.externalLabels.environment="dev",prometheus.prometheusSpec.externalLabels.prometheus="",prometheus.prometheusSpec.externalLabels.prometheus_replica="",grafana.enabled=false,alertmanager.enabled=false

这里helm用的是3.2.1版本,Kubernetes版本为v1.16.6-aliyun.1。这里有几个关键参数,一个是设置了Prometheus的externalLabels,environment=dev,其它环境就等于其它相应的值,比如environment=prod。设置其它2个Prometheus的label prometheus和prometheus_replica为空,也可以设置为其它有意义的值,但不设置的话它们的默认值就是依赖于这里的release名字,所以建议所有的Prometheus的这2个external label都设为一样的值,这是给remote read/write用的,这几个external label会把写入到外部存储如InfluxDB都加上这几个fields,而ops的Prometheus会根据它设的external label来进行匹配,包含这设置的label的数据才会filter出来。

ops环境中部署Prometheus和Grafana。

# helm install ops stable/prometheus-operator  --set prometheus.prometheusSpec.remoteWrite[0].url="http://influxdb-ip:8086/api/v1/prom/write?db=test&u=testuser&p=testpwd",prometheus.prometheusSpec.externalLabels.prometheus="",prometheus.prometheusSpec.externalLabels.prometheus_replica="",coreDns.enabled=false,kube-state-metrics.podSecurityPolicy.enabled=false,kubeApiServer.enabled=false,kubeControllerManager.enabled=false,kubeDns.enabled=false,kubeEtcd.enabled=false,kubeProxy.enabled=false,kubeScheduler.enabled=false,kubeStateMetrics.enabled=false,kubelet.enabled=false,nodeExporter.enabled=false

因为ops环境中的Prometheus直接将InfluxDB作为数据来进行查询展示,所以把其它所有exporter模块都disable了。只需要和Grafana结合起来使用就可以了。

修改Grafana的查询

当前配置下grafana查询的数据是所有环境的数据总和,所以需要增加变量environment和filter来对环境数据进行过滤。方法是在查询的时候加上{environment=$environment}。这样就可以选择不同的环境值来显示相应环境的指标。下图是未作修改的Grafana图。
grafana

参考资料

  1. https://github.com/helm/charts/tree/master/stable/prometheus-operator
  2. https://prometheus.io/docs/operating/integrations/#remote-endpoints-and-storage
  3. https://docs.influxdata.com/influxdb/v1.8/supported_protocols/prometheus
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
9月前
|
Prometheus 监控 Cloud Native
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
761 79
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
1419 3
|
Prometheus 监控 Cloud Native
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
703 161
|
10月前
|
Prometheus 监控 Cloud Native
Prometheus+Grafana(docker安装)
本文档详细介绍了如何使用Docker容器快速部署Prometheus监控系统和Grafana数据可视化平台。该方案适用于需要快速搭建监控环境的开发测试场景,具备部署简单、资源占用低、易于维护等特点。
|
11月前
|
Prometheus Kubernetes 监控
Kubernetes监控:Prometheus与AlertManager结合,配置邮件告警。
完成这些步骤之后,您就拥有了一个可以用邮件通知你的Kubernetes监控解决方案了。当然,所有的这些配置都需要相互照应,还要对你的Kubernetes集群状况有深入的了解。希望这份指南能帮助你创建出适合自己场景的监控系统,让你在首次发现问题时就能做出响应。
648 22
|
存储 数据采集 Prometheus
Grafana Prometheus Altermanager 监控系统
Grafana、Prometheus 和 Alertmanager 是一套强大的开源监控系统组合。Prometheus 负责数据采集与存储,Alertmanager 处理告警通知,Grafana 提供可视化界面。本文简要介绍了这套系统的安装配置流程,包括各组件的下载、安装、服务配置及开机自启设置,并提供了访问地址和重启命令。适用于希望快速搭建高效监控平台的用户。
851 20
|
Prometheus 监控 Cloud Native
Prometheus+Grafana监控Linux主机
通过本文的步骤,我们成功地在 Linux 主机上使用 Prometheus 和 Grafana 进行了监控配置。具体包括安装 Prometheus 和 Node Exporter,配置 Grafana 数据源,并导入预设的仪表盘来展示监控数据。通过这种方式,可以轻松实现对 Linux 主机的系统指标监控,帮助及时发现和处理潜在问题。
1246 7
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
2146 3
|
Prometheus 监控 前端开发
Grafana 安装配置教程,让你的 Prometheus 监控数据变得更美观
《Grafana安装配置教程,让你的Prometheus监控数据变得更美观》简介: Grafana是一个开源的度量分析与可视化工具,支持多种数据源(如Prometheus),提供丰富的可视化功能和警报机制。本文详细介绍了Grafana的安装、汉化方法及模板使用,帮助用户轻松创建美观、灵活的数据面板,并实现数据的协作与共享。通过Docker镜像、配置文件修改或替换前端页面等方式实现汉化,让用户更便捷地使用中文界面。此外,还提供了导入JSON格式模板的具体步骤,方便快速搭建仪表盘。
2050 2
|
Prometheus Cloud Native Linux
Prometheus+Grafana新手友好教程:从零开始搭建轻松掌握强大的警报系统
本文介绍了使用 Prometheus 和 Grafana 实现邮件报警的方案,包括三种主要方法:1) 使用 Prometheus 的 Alertmanager 组件;2) 使用 Grafana 的内置告警通知功能;3) 使用第三方告警组件如 OneAlert。同时,详细描述了环境准备、Grafana 安装配置及预警设置的步骤,确保用户能够成功搭建并测试邮件报警功能。通过这些配置,用户可以在系统或应用出现异常时及时收到邮件通知,保障系统的稳定运行。
2018 1

热门文章

最新文章

推荐镜像

更多