基于 Prometheus 和 Zabbix 实现容器云平台整体监控 20 个典型问题解读

云平台的特点是快速部署、弹性伸缩、动态调整、运维自动化,对应的监控也需要是动态发现、自动化部署的,因此对监控的要求会更高。在案例 基于 Prometheus 和 Zabbix 实现容器云平台整体监控方案中,基础监控是以Zabbix为基础监控工具设计和建设,鉴于Prometheus对docker和k8s监控的天然集成,引入Prometheus和Zabbix结合起来,Prometheus只负责docker+K8S基础监控数据采集, Zabbix负责容器内应用监控数据采集,采集的数据集中接入Zabbix进行告警触发,并复用基于Zabbix开发的潜望者Zabbix运维管理平台,集中进行监控配置管理、阈值管理、巡检管理、数据对接等工作,大幅减少基于prometheus的定制开发工作,实现快速实现、高效部署的云平台整体监控

1、刚接触prometheus,请教一下关于部署方式的问题?

【问题描述】请问目前prometheus+zabbix这个解决方案,是通过K8S上pod直接部署还是通过独立的服务器软件包安装部署?两种方式如何选择?

@zhangfan13cmbc 中国民生银行 项目经理:

通过K8S上pod部署。

每个 K8S 集群上默认部署 prometheus ,在 K8S 集群内部署 prometheus server 和 kube-state-metrics 两个组件。

@zftang0809 合肥华宇随身软件 软件开发工程师:

一、单独部署

二进制安装

各版本下载地址:https://prometheus.io/download/

Docker运行

运行命令:docker run –name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus

暴露服务:http://localhost:9090/

二、在K8S中部署

如果在Kubernetes中部署Prometheus,可以使用prometheus in kubernetes,含exporter、grafana等组件。

2、为什么要复用zabbix 而不直接使用promethues+grafana这种模式?

@zhangfan13cmbc 中国民生银行 项目经理:

该案例中基于zabbix做了大量的二次开发,包括自动化部署、自巡检、批量配置等等,如果再另外维护一整套promethues功能,成本太大,而且重复建设,因此,只把promethues作为标准采集工具,复用zabbix的管理功能。监控数据有专业定制化的集中监控平台进行存储和消费,因此没有使用grafana。

3、zabbix-promethues和 promethues-grafana相比优势在哪?

@zhangfan13cmbc 中国民生银行 项目经理:

zabbix和promethues都是开源监控工具,它们的使用是一个互补和结合的关系。

promethues和grafana的关系是监控工具和页面图形工具的关系。

所以这个不太好比较。

4、prometheus+grafana是现在流行的方案,能否实现监控大盘?

【问题描述】grafana的数据展现没有层次,所有的dashboard通常是单层,用list来切换,granfana中有没有做到可以挖掘的功能,也就是实现监控大盘的功能?从表层可以向里层挖掘显示?如果不能,有没有可以取代grafana的工具来对接prometheus?

@nexpose 阳光信保:

grafana 它的BI组件的灵活度和对各种数据源的支持是它最大优势,它的标准组件是为了兼容各种数据源而服务的,Dashboard 这种要求大屏首页的震撼感,对组件的特效要求较高的场景,多数效果需要专门定制开发以满足大屏特效,满足行业特殊需求。grafana的图表组件某种程度上更适合Dashboard数据深钻时二级图表的呈现(但是其实grafana 也能开发出拥有特效的BI组件,我们就将D3部分组件移植了进去,但是目前只支持ES)

5、zabbix和Prometheus如何对容器数据库的监控?

@zhangfan13cmbc 中国民生银行 项目经理:

按照容器监控的内容,分为 docker+K8S 基础监控和容器内应用监控两部分来分别实现。

1、docker+K8S 基础监控的实现:

由于 prometheus 对 docker 和 k8s 监控的天然集成,通过 cAdvisor 可以直接获取 docker 基础监控数据,通过 kube-state-metrics 可以直接获取 K8S 的资源对象和对应监控数据,因此在每个 K8S 集群上默认部署 prometheus 实现这部分监控采集,然后通过 Zabbix Http Agent 方式调用 prometheus API 来获取数据,接入 Zabbix Server 从而复用之前建设的功能,实现后续的告警阈值配置和数据接入集中监控平台。

2、容器内应用监控的实现:

所有的应用监控都通过 Zabbix 实现,这里的“应用”可以是数据库、中间件、也可以是某个应用系统,通过在容器中增加环境变量 monitor_type 来定义,比如 monitor_type=mysql 就代表这个容器的“应用”是 mysql ,将对它进行 mysql 监控。

6、Prometheus采集是怎么实现主备的,历史数据怎么处理?

@zhangfan13cmbc 中国民生银行 项目经理:

目前部署在K8S的master节点上,单POD,利用K8S的高可用机制确保服务连续性。历史数据是通过zabbix接入推送到KAFKA里,供集中监控数据消费并存储

7、Prometheus是怎么做到可扩展的?超出单个Prometheus的采集能力,如何做自动分工?

@郭晓云 平安 系统运维工程师:

采用thanos的集群方案和conusl的注册中心,在注册中心中给每个机器划分组,每台prometheus交叉监控,也就是说每一台服务器保证有两个prometheus server取数据,这样可以横向扩容。

8、prometheus能够监控的内容非常丰富,是不是大部分功能可以取代zabbix了?

@郭晓云 平安 系统运维工程师:

prometheus是组件式的,在使用方面来看各有所长,从功能上来讲是可以取代zabbix的,只是组件多了之后运维更复杂。

@zftang0809 合肥华宇随身软件 软件开发工程师:

各有所长,各取所需。

9、请问如果是多云多集群环境如何进行监控部署?基于prometheus + Thanos的部署是否实践过?优缺点是什么?

@zftang0809 合肥华宇随身软件 软件开发工程师:

具备较好的高可用性,缺点我觉得是Prometheus集群无法拆分。

10、Prometheus监控较大规模kubernaetes集群时需要注意哪些方面的问题?

@zftang0809 合肥华宇随身软件 软件开发工程师:

本质上还是kubernetes中内置了一些exporer, prometheus 可以通过http请求抓取数据。

11、prometheus采集的数据如何接入Zabbix进行告警触发及展示?

【问题描述】1、在已有zabbix的监控体系下引入prometheus的优缺点 ,zabbix不能很好的实现哪些功能;2、zabbix如何对集群的应用进行有效的告警及展示;3、prometheus与zabbix如何分工,可否只引入export;4、prometheus推荐配置;5、如何自动的、批量的添加prometheus的数据到zabbix;6、两套监控系统是否会对运维造成较大的运维成本?请各位专家不吝赐教,谢谢。

@zhangfan13cmbc 中国民生银行 项目经理:

详见  基于 Prometheus 和 Zabbix 实现容器云平台整体监控方案 

12、请问prometheus+zabbix场景下,监控数据的存储是如何考虑的?是prometheus自身的持久化还是统一由zabbix的数据库存储?

@zhangfan13cmbc 中国民生银行 项目经理:

鉴于之前在Zabbix上做的二次开发成果,所以选择统一由zabbix持久化,通过 Zabbix Http Agent 方式调用 prometheus API 来获取数据,接入 Zabbix Server 从而复用之前建设的功能,实现后续的告警阈值配置和数据接入集中监控平台。

13、关于 Zabbix 在 DB2 数据库监控的经验分享?

【问题描述】各位专家,我们都知道 zabbix 在 oracle,mysql等数据库的监控方面已经很完善了,想了解下它在 DB2数据库监控方面的应用如何?目前可以达到BMC、IBM等传统监控软件的监控程度吗?

@zhangfan13cmbc 中国民生银行 项目经理:

我们设计了一套自动发现的监控方案,其实连库查询的监控项使用odbc的方式,系统命令的监控项使用agent的方式实现。从试运行的情况看,比BMC更易部署和维护,监控项完全根据需求二次开发,符合监控要求。

@Zabbix大叔_乐维 广州九一乐维信息科技有限公司 研发工程师:

首先,可以从网上找到一些查询db2数据库性能的语句,然后可以通过python的一些数据库连接库,在zabbix_server上通过外部检查的方式,远程到db2数据库执行查询的语句,获取数据,并返回到zabbix-server。

14、基于 Zabbix 二次开发的实践案例分享?

【问题描述】各位专家,能否分享一下基于 Zabbix 二次开发的经验,我现在有个性能数据仓库的需求,需要将各个层面的监控数据通过 Zabbix 监控抽取到该数据仓库中,进而拓展应用。各位老师能否分享一下这方面的经验?

@zhangfan13cmbc 中国民生银行 项目经理:

Zabbix完全可以作为数据采集的工具,并且采集方式多样,比如agent、trapper、odbc、jmx等等,选择合适的采集方式进行二次开发或配置即可。

@Zabbix大叔_乐维 广州九一乐维信息科技有限公司 研发工程师:

可以把zabbix的告警功能和一个工单系统结合使用。zabbix根据不同分类的告警,生成对应的工单,交给不同的人处理。

15、金融行业中成功实施Prometheus和zabbix的案例,是如何与cmdb等其他周边系统进行交互的场景?

@zhangfan13cmbc 中国民生银行 项目经理:

由于我行已有自动化系统作为CMDB的数据采集,所以监控更多是在配置层面和CMDB做一些比对,确保CMDB中的资源及时部署了监控,另外,CMDB的一些维度属性,会作为Zabbix监控配置和巡检的条件,提高处理效率。我们的Zabbix监控和自动化系统交互实现自动化批量部署,和IPAAS系统交互实现一些标准监控的自动化配置。

16、zabbix如何实现和现有的云计算平台结合,实现更高级别、更细粒度的监控?

@Zabbix大叔_乐维 广州九一乐维信息科技有限公司 研发工程师:

可以尝试用脚本采集的方式,这种方式可以实现,界面有的信息都获取下来。但是对服务器负载有影响。

17、zabbix如何配置对WEBLOGIC的监控,能监控运行情况吗?

【问题描述】zabbix监控WEBLOGIC的进程是可以,但是监控weblogic运行情况怎么配置?就是监控所有部署正常及消息传送是否正常?

@Zabbix大叔_乐维 广州九一乐维信息科技有限公司 研发工程师:

在weblogic的配置文件中开启jmx远程,然后zabbix采用jmx监控方式即可监控weblogic

18、zabbix是如何处理容器云上监控对象弹性伸缩的?

@聂奎甲 长春长信华天 项目经理:

对于容器内中间件和数据库的监控,zabbix自身的Database、jmx监控方式或应用主动推送数据不需要安装agent,实现方便,容器内应用仅需与同k8s集群的容器内zabbix proxy能实现互相访问即可,监控项可以复用容器外应用模板,所以仍采用zabbix监控容器内应用实现方案。

19、Zabbix目前是否已经支持对容器云的监控了?

【问题描述】zabbix应该是可以实现对容器云的监控的,是否在新版本中有所体现?  或是否有其他插件可以支持,如同orabbix监控oracle一样?

@zhangfan13cmbc 中国民生银行 项目经理:

Zabbix可以实现二次开发脚本实现容器云监控,但对于容器基础监控和K8S监控,肯定是不如天然集成的prometheus方便和高效了,所以建议综合考虑现状和成本,结合使用

20、最近设计的容器平台Prometheus生产监控架构,分享与大家线上探讨,指点一二!

容器平台Prometheus分指标联邦架构方案:

1.    单个生产机房按采集指标划分K8S调度部署多个prome 1、prome 2

2.    用K8S保证基层prome的可用性

3.    汇聚数据至上层联邦prome A与prome B,两个联邦节点独立写库,两套持久数据库单点部署,分别保留独立数据,以保证数据多副本

4.    告警数据从2个联邦层prome获取,经过gossip筛选产生告警

5.    Kibana经过负载均衡获取联邦prome数据出图(@mtming333 甜橙金融翼支付 系统运维工程师)

@anonymous:

上述方案概括为:基本HA + 远程存储 + 联邦集群 

该方案在我在一个项目上落地过,客户场景为:管理为省级-地市级,每个地市是独立的监控中心,统一汇报至省级prometheus,省级prometheus通过nginx做高可用,持久化数据使用influxdb来存储省级prometheus数据。 

落地需注意如下:

1、需考虑网络延时

2、监控数据量评估

3、成本问题

@郭晓云 平安 系统运维工程师:

建议采用thanos的集群方案,Grafana也是可以集群化的,数据存储可以自己写一个influxdb-proxy

@zhangfan13cmbc 中国民生银行 项目经理:

联邦成本比较高,但可以获得更好的高可用,适合自己的需求即可,方案没有最好只有最合适。

@edwin1986edwin1986 上汽通用汽车 系统架构师:

很好的方案方案,但比较麻烦

云驻场运维服务

云驻场运维服务是华云银安以客户信息服务管理成熟度、运维规范成熟度、运维人员技能成熟度、服务价值期望及服务质量管控要求等为需求基准, 安排驻场工程师或专家组实地深入地了解客户云计算平台运营、日常维护、人员培养等方面的现状,并根据客户的服务需求,派驻驻场工程师到客户现场对云计算平台运营维护、人员技能提升等提供技术保障的服务。

一、基础运维服务

1.1、服务计划与监控:

根据客户需求制定年度维护服务计划,每季度对服务内容进行回顾和调整,全程对服务质量进行监控

1.2、日常维护与监控

协助客户对云平台软件和相关的服务器、存储和网络等硬件设备进行日常维护和例行监控,并提供维护服务记录

1.3、高级巡检服务

每季度一次,定期采集客户云平台软件和相关硬件设备的运行信息并进行分析,对客户云平台的运行和维护现状进行检查,并对存在的潜在风险和漏洞进行分析和汇报。

1.4、信息分析整理

协助客户管理设备资产信息(序列号、维保起始时间)、网络拓扑信息(IP地址、接口、对端设备等),为后续运维工作提供参考依据。

1.5、故障与问题处理

快速解决由于设备本身原因造成的故障和问题,并恢复业务;对于重大问题,直接升级到专家级别,提升问题处理效率,并全程跟踪问题的处理进展,定期回顾。

1.6、设备硬件维护

根据服务器、网络、存储等硬件设备的备件服务级别,协助客户进行快速备件更换

1.7、重大变更协助

协助变更责任人制定云平台变更实施方案,对变更实施方给予必要的指导和配合

1.8、服务总结与汇报

每季度一次日常维护服务总结,每年度一次对客户汇报,听取客户相关意见,做出后续服务工作规划

二、云运维服务

2.1、云服务开通

协助客户开通云服务,包括云主机、云存储、云网络等

2.1、云资源管理

每周输出云资源(CPU、内存、存储、网络等)使用情况的总结报表,为容量管理决策提供参考

2.3、云迁移协助

有业务迁移需求时,根据迁移服务商要求,提供迁移环境信息,协助准备迁移环境。

2.4、云技术培训

每季度一次向客户提供云平台相关产品培训、运维案例分享,提升运维团队技术水平。

三、专项保障

在任何可能对业务运营产生重大影响或客户指定的其他重要时刻,提供专业的华云银安的值守保障服务。

四、客户获益

4.1、专业的云计算驻场运维工程师,经过严格的技术培训和实践练习,上岗后可快速进入工作状态;在执行驻场运维服务的同时,定期输出技术总结和案例分享,协助用户共同提高云运维服务能力;

4.2、依托华云银安强大的专家团队,可快速的解决现场问题,恢复业务正常运行;

4.3、现场主动式巡检,结合三级网上问题管理机制,可提前发现问题,消除隐患;

云运维规划服务

云运维规划服务是华云银安公司为了针对性的提升用户云数据中心合作、维护能力水平而推出的专业化服务。主要应用场景为:客户需要新建、重建、优化现有云运维和合作管理体系时,为客户规划提供运维着眼点并设计运维方案;客户现使用的运维管理体系/流程/平台工具不健全、效率不高,为客户提供改进运维效率的方案。

一、现状调研与分析

1.1、现状调研

华云银安服务专家将采用资料查阅、访谈、信息收集及现场调研等方式,收集客户需求和现状信息,将收集的信息分类汇总,进行分析,展现客户真实的现状和需求

1.2、现状评估分析

基于客户的管理目标,访谈中梳理的管理痛点,依据《云数据中心运维成熟度模型》进行现状评估,并输出《现状分析报告》并向领导进行阶段性工作汇报

二、云运维体系规划设计

华云银安服务专家根据现状调研与分析阶段的工作成果,为客户进行整体蓝图及路线规划。

三、云运维组织设计

本领域设计内容包括:1.云运维组织架构设计;2.岗位职责设计;3.人员技术能力要求设计

四、规划流程详细设计

4.1、云资源管理域流程设计

本领域设计的流程包括:资源计量管理,资产管理,镜像管理,资源池管理

4.2、云服务交付域流程设计

本领域设计的流程包括:服务目录管理,服务水平管理,服务报告管理,满意度管理,服务质量管理

4.3、云运维域流程设计

本领域设计的流程包括:服务发布管理、服务开通管理、监控管理、变更管理、故障管理、问题管理、知识管理、云配置管理

4.4、云服务规划域流程设计

本领域设计的流程包括:云服务可用性管理,业务连续性管理云服务容量管理,供应商管理,IT财务管理

五、集中评审与验收

5.1、集中评审

汇总完成流程文件进行集中评审后进行体系发布运行

5.2、项目验收

流程详细设计方案通过客户内部评审后,云运维规划服务进入项目验收阶段。

六、客户获益

解决云计算技术变革对运维产生的挑战,建立新管理模式;

快速提升云运维管理成熟度;

强力提供云运维保障能力,支撑企业云业务、云战略的推进