浅谈多环境中的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来做远端存储。这时的架构大概如下图:
多环境监控
如果要对多个环境的Kubernetes集群进行集中监控,我们就可以用一个ops环境中的InfluxDB作为其它环境Prometheus的共同远端存储,这里要对其它环境的Prometheus做remote write的配置,即将所有的指标数据写道InfluxDB中。同时在ops环境中还要搭建一个Prometheus和Grafana,Prometheus用InfluxDB作为remote read,然后通过Grafana连接ops的Prometheus进行多个环境的展示。
具体架构见下图,这里vpc peering对应阿里云指的高速通道,即在多个环境中的vpc和ops中vpc建立快速通道,这样可以通过阿里云内网进行通信。
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图。
参考资料
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
奠定上层系统稳定安全的基石: 专有云V3网络架构介绍
网络是奠定上层系统稳定和安全的重要基石。目前专有云版本以V3居多,且V2版本也将于2020年12月31日停止服务和技术支持。本文将对V3版本的专有云网络架构进行介绍。 1 V3专有云网络整体架构 图1:V3专有云网络架构图 如上图所示,V3专有云网络整体架构的特征如下: V3版本网络架构为两层CLOS,去除PSW层,ASW与DSW直接互连,有效降低网络建设成本。 两层组网(DSW/ASW),ASW和DSW之间跑Layer3。 一组ASW为基础的网络建设单元,全万兆组网。 可根据服务器规模,选择DSW的数量(2/4核心)和设备型号(4/8/16个slot)。 2 设计概要 DSW数量为4台,分为两种规格: (1)18个插槽DSW,每个插槽最大支持36*40G端口密度(同时支持100G端口)。(2)4个插槽DSW,每个插槽最大支持36*40G端口密度(同时支持100G端口)。 无PSW层设计。 ASW两台为一对最小部署单元,进行堆叠后提供跨设备的链路聚合能力。并提供48个万兆接入端口,和440G的上行端口,240G的互连端口。 上联: (1)8槽DSW每台预留不超过32个40G端口作为上联...
- 下一篇
重学 Java 设计模式:实战单例模式
重学 Java 设计模式:实战单例模式 一、前言5个创建型模式的最后一个 在设计模式中按照不同的处理方式共包含三大类;创建型模式、结构型模式和行为模式,其中创建型模式目前已经介绍了其中的四个;工厂方法模式、抽象工厂模式、生成器模式和原型模式,除此之外还有最后一个单例模式。 掌握了的知识才是自己的 在本次编写的重学 Java 设计模式的编写中尽可能多的用各种场景案例还介绍设计的使用,包括我们已经使用过的场景;各种类型奖品发放、多套Redis缓存集群升级、装修公司报价清单和百份考卷题目与答案乱序,通过这些场景案例的实践感受设计模式的思想。但这些场景都是作者通过经验分离出来的,还并不是读者的知识,所以你如果希望可以融会贯通的掌握那么一定要亲力亲为的操作,事必躬亲的完成。 书不是看的是用的 在这里还是想强调一下学习方法,总有很多小伙伴对学习知识有疑惑,明明看了、看的时候也懂了,但到了实际使用的时候却用不上。或者有时候在想是不要是有更加生动的漫画或者什么对比会好些,当然这些方式可能会加快一个新人对知识的理解速度。但只要你把学习视频当电影看、学习书籍当故事看,就很难掌握这项技术栈。只有你把它用起来...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker安装Oracle12C,快速搭建Oracle学习环境