基于 Prometheus 和 Zabbix 实现容器云平台整体监控 20 个典型问题解读
社区结合该实践案例进行了交流答疑,以下是探讨内容整理,供更多相关需求的同行参考。
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 上汽通用汽车 系统架构师:
很好的方案方案,但比较麻烦
更多交流内容可点击阅读原文 觉得本文有用,请转发、点赞或点击“在看”,让更多同行看到
资料/文章推荐:
欢迎关注社区 "监控"技术主题 ,将会不断更新优质资料、文章。地址:
https://www.talkwithtrend.com/Topic/3937
下载 twt 社区客户端 APP
长按识别二维码即可下载
或到应用商店搜索“twt”
长按二维码关注公众号
*本公众号所发布内容仅代表作者观点,不代表社区立场