容器监控实践—Dockbix

作者: 徐亚松_v | 来源:发表于2019-05-27 20:31 被阅读2次

一.概述

Dockbix意为docker+zabbix,即使用zabbix来监控docker容器的插件或者模块,既然有专业的cadvisor、prometheus等容器监控方案,为什么还要用传统的zabbix呢?

  • 在docker刚出现时,还没有专业的容器监控方案
  • 公司已有zabbix的成熟实践,想直接集成到zabbix中(虽然不太优雅)

使用zabbix来监控docker有几种方案,比如:

  • 自己写agent,利用docker的api获取stats信息,暴露api接口给zabbix采集
  • 使用zabbix的Module,将docker的采集展示集成到现有的zabbix系统中

如何使用

写API

python sdk:https://docker-py.readthedocs.io/en/stable/containers.html#docker.models.containers.Container.stats

stats(**kwargs)
Stream statistics for this container. Similar to the docker stats command.

Parameters: 
decode (bool) – If set to true, stream will be decoded into dicts on the fly. Only applicable if stream is True. False by default.
stream (bool) – If set to false, only the current stats will be returned instead of a stream. True by default.
Raises: 
docker.errors.APIError – If the server returns an error.

如计算cpu:

def calculate_cpu_percent(d):
    cpu_count = len(d["cpu_stats"]["cpu_usage"]["percpu_usage"])
    cpu_percent = 0.0
    cpu_delta = float(d["cpu_stats"]["cpu_usage"]["total_usage"]) - \
                float(d["precpu_stats"]["cpu_usage"]["total_usage"])
    system_delta = float(d["cpu_stats"]["system_cpu_usage"]) - \
                   float(d["precpu_stats"]["system_cpu_usage"])
    if system_delta > 0.0:
        cpu_percent = cpu_delta / system_delta * 100.0 * cpu_count
    return cpu_percent

Zabbix Module

通过部署一个zabbix agent的docker容器来监控宿主机器和宿主机器上docker的状态。

搬运下开源项目:https://github.com/monitoringartist/zabbix-docker-monitoring

1.在需要监控的宿主机器上运行运行Agent容器

docker run \
  --name=dockbix-agent-xxl \
  --net=host \
  --privileged \
  -v /:/rootfs \
  -v /var/run:/var/run \
  --restart unless-stopped \
  -e "ZA_Server=<ZABBIX SERVER IP/DNS NAME/IP RANGE>" \
  -e "ZA_ServerActive=<ZABBIX SERVER IP/DNS NAME>" \
  -d monitoringartist/dockbix-agent-xxl-limited:latest

2.配置监控模板

在zabbix server上导入监控docker的模版,可用模板包括:

也可以用docker镜像直接运行,来导入模板:monitoringartist/zabbix-templates,如:

docker run --rm \
  -e XXL_apiurl=http://zabbix.org/zabbix \
  -e XXL_apiuser=Admin \
  -e XXL_apipass=zabbix \
  monitoringartist/zabbix-templates

item为:

image

详细的metric的值可以参考:https://github.com/monitoringartist/zabbix-docker-monitoring/blob/master/README.md

3.可视化

zabbix的监控图:

image

grafana中也有zabbix的数据模板

image

本文为容器监控实践系列文章,完整内容见:container-monitor-book

相关文章

  • 容器监控实践—Dockbix

    一.概述 Dockbix意为docker+zabbix,即使用zabbix来监控docker容器的插件或者模块,既...

  • 容器监控实践-Grafana

    概述 Grafana 是一个开源的,可以用于大规模指标数据的可视化项目,甚至还能对指标进行报警。基于友好的 Apa...

  • 容器监控实践—开篇

    概述 随着越来越多的线上服务docker化,对容器的监控、报警变得越来越重要,容器监控有多种形态,有些是开源的(如...

  • 容器监控实践—Heapster

    概述 该项目将被废弃(RETIRED) Heapster是Kubernetes旗下的一个项目,Heapster是一...

  • 容器监控实践—cAdvisor

    概述 为了解决docker stats的问题(存储、展示),谷歌开源的cadvisor诞生了,cadvisor不仅...

  • 容器监控实践—Cortex

    一.概述 cortex:一个支持多租户、水平扩展的prometheus服务。 当时调研cortex其实是因为看到了...

  • 容器监控实践—Docker原生

    前言 传统虚机监控一般采用类似Zabbix的方案,但容器出现之后,再使用Zabbix agent来采集数据的话就显...

  • 容器监控实践—Metrics Server

    概述 从 v1.8 开始,资源使用情况的监控可以通过 Metrics API的形式获取,具体的组件为Metrics...

  • 容器监控实践—Custom Metrics

    概述 上文metric-server提到,kubernetes的监控指标分为两种: Core metrics(核心...

  • 容器监控实践—Prometheus概述

    概述 Prometheus是一套开源的监控、报警、时间序列数据库的组合,起始是由SoundCloud公司开发的。从...

网友评论

    本文标题:容器监控实践—Dockbix

    本文链接:https://www.haomeiwen.com/subject/ulmktctx.html