container-monitor
  • Introduction
  • 简介
    • 概述
  • 一. 开源方案
    • 第1章 采集
      • Docker Stats
      • cAdvisor
      • Heapster
        • HPA
      • metrics-server
      • custom metrics
      • kube-state-metrics
      • node-exporter
      • Dockbix agent
      • cortex
    • 第2章 Prometheus
      • Prometheus
      • Prometheus概述
      • Prometheus基本架构
      • Prometheus部署方案
      • Prometheus的配置与服务发现
      • PromQL查询解析
      • Prometheus数据可视化
      • Prometheus存储机制
      • 高可用prometheus:常见问题
      • 高可用prometheus:thanos 实践
      • K8S常用指标分析
      • 从kubectl top看K8S监控原理
    • 第3章 展示与报警
      • Grafana
      • Kibana
      • Vizceral
      • Zabbix dashboard
      • AlertManager
      • consul-alerts
      • elastalert
      • Bosun
      • Cabot
  • 二. 商业方案与云厂商
    • Sysdig
    • DataDog
    • dynatrace
    • Weave
    • Cosale
    • freshtracks
    • Sensu
    • netsil
    • pingdom
    • Google
    • AWS
    • 腾讯云
    • 阿里云
    • 百度云
    • 华为云
  • 四. 日志监控
    • ELK
    • EFK
    • elastalert
    • Graylog
    • docker_monitoring_logging_alerting
  • 五. 服务监控
    • Jaeger
    • Zipkin
    • kubewatch
    • riemann
  • 六. 存储后端
    • InfluxDB
    • Kafka
    • Graphite
    • OpenTSDB
    • ElasticSearch
  • 七. 最佳实践
    • 监控方案
    • 日志方案
    • 服务监控
    • 业内方案
      • 京东
      • 招商银行
Powered by GitBook
On this page
  • 一.概述
  • 如何使用
  • 写API
  • Zabbix Module

Was this helpful?

  1. 一. 开源方案
  2. 第1章 采集

Dockbix agent

Previousnode-exporterNextcortex

Last updated 5 years ago

Was this helpful?

一.概述

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:

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的状态。

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 run --rm \
  -e XXL_apiurl=http://zabbix.org/zabbix \
  -e XXL_apiuser=Admin \
  -e XXL_apipass=zabbix \
  monitoringartist/zabbix-templates

item为:

3.可视化

zabbix的监控图:

搬运下开源项目:

- 标准推荐模板:被动

- 检查模板:主动

- Mesos (Marathon/Chronos)集群的docker模板

也可以用docker镜像直接运行,来导入模板:,如:

详细的metric的值可以参考:

grafana中也有zabbix的

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

https://docker-py.readthedocs.io/en/stable/containers.html#docker.models.containers.Container.stats
https://github.com/monitoringartist/zabbix-docker-monitoring
Zabbix-Template-App-Docker.xml
Zabbix-Template-App-Docker-active.xml
Zabbix-Template-App-Docker-Mesos-Marathon-Chronos.xml
monitoringartist/zabbix-templates
https://github.com/monitoringartist/zabbix-docker-monitoring/blob/master/README.md
数据模板
container-monitor-book