在现有监控系统下,如何进行容器云应用监控实施?

在现有监控系统下,如何进行容器云应用监控实施?是否进行整体集成,容器云相关监控自成一体?还是对接现有监控系统,纳入整体监控平台?显示全部

在现有监控系统下,如何进行容器云应用监控实施?是否进行整体集成,容器云相关监控自成一体?还是对接现有监控系统,纳入整体监控平台?

收起
参与27

查看其它 8 个回答zhangfan13的回答

zhangfan13zhangfan13项目经理某单位

        我们的项目是以Zabbix为基础监控工具设计和建设的,但鉴于prometheus对docker和k8s监控的天然集成,我们打算引入prometheus和Zabbix结合起来,prometheus只负责docker+K8S基础监控数据采集, Zabbix负责容器内应用监控数据采集,采集的数据集中接入Zabbix进行告警触发,并复用我们基于Zabbix开发的潜望者Zabbix运维管理平台,集中进行监控配置管理、阈值管理、巡检管理、数据对接等工作,大幅减少基于prometheus的定制开发工作,实现快速实现、高效部署的云平台整体监控。
按照容器监控的内容,我们分为 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监控。

我们在每个K8S集群上默认部署部署两种采集方式的Proxy容器,一种是Pull采集方式(对应着Statefulset部署方式),另一种是Push采集方式(对应着deployment部署方式)。

Pull的方式包括基于odbc的数据库监控、JMX的中间件监控、还有其它通过http等方式实现的容器监控,我们用到了PVC来持久化一些配置文件。如果一个集群中需要多个Proxy,则需要Proxy采集分工实现负载均衡。

Push的方式接受应用容器通过trapper等方式主动推送过来的监控数据,这种方式的Proxy是无状态的,因此如果需要多个Proxy,可以直接通过增加pod副本数横向扩展。 两种方式采集到的数据也都是接入到Zabbix Server中。

银行 · 2022-05-25
浏览1305

回答者

zhangfan13
项目经理某单位

zhangfan13 最近回答过的问题

回答状态

  • 发布时间:2022-05-25
  • 关注会员:11 人
  • 回答浏览:1305
  • X社区推广