docker容器性能监控的选择

写在前面,目前这里仅仅完成了容器性能的监控;如CPU,MEM,DISK,NET; 运行在容器的中应用的监控还未涉及!

Docker监控数据来源

  • docker stats api

    GET /containers/container_name/stats HTTP/1.1
    
  • cadvisor
    其实是docker stats api的封装,同时提供了web页面查看,通过cadvisor获取stats的API

    GET /api/v1.2/docker/
    

监控框架

不同的监控框架都会有各自要求的数据结构,在数据采集完成后,需要转换成各自要求的数据结构;

  • Zabbix

    • 架构图


      docker容器性能监控的选择_第1张图片
      image
    • 接受的数据格式

      key_name = value的形式,一次只能处理一个

    • Docker容器数据的采集方式

      通过docker stats的API采集,自己处理数据
      GET /containers/container_name/stats HTTP/1.1

  • Prometheus

    • 架构图

      image
    • 接受的数据格式

      {
    • Docker容器数据的采集方式
      CAdvisor暴露了一个HTTP接口,且格式为prometheus要求的格式:

      docker容器性能监控的选择_第2张图片
      image

  • Open-Falcon
    • 架构图
docker容器性能监控的选择_第3张图片
image
  • 接受数据的格式

    {
        "CounterType": "GAUGE", 
        "Endpoint": "open-falcon-test",    #这是一个特殊的tags,代表主机名
        "Metric": "redis.keyspace_hit_ratio", 
        "Step": 60, 
        "TAGS": "port=6379", 
        "Timestamp": 1449711164, 
        "Value": 0.72131147540983609
    }
    
  • Docker容器数据的采集方式

    基于CAdvisor之上,将docker容器的数据转换成了要求的格式,采集指标如下:

Counters Notes
cpu.busy cpu使用情况百分比
cpu.user 用户态使用的CPU百分比
cpu.system 内核态使用的CPU百分比
cpu.core.busy 每个cpu的使用情况
mem.memused.percent 内存使用百分比
mem.memused 内存使用原值
mem.memtotal 内存总量
mem.memused.hot 内存热使用情况
disk.io.read_bytes 磁盘io读字节数
disk.io.write_bytes 磁盘io写字节数
net.if.in.bytes 网络io流入字节数
net.if.in.packets 网络io流入包数
net.if.in.errors 网络io流入出错数
net.if.in.dropped 网络io流入丢弃数
net.if.out.bytes 网络io流出字节数
net.if.out.packets 网络io流出包数
net.if.out.errors 网络io流出出错数
net.if.out.dropped 网络io流出丢弃数

参考

  • cadvisor
  • Docker监控:最佳实践以及cAdvisor和Prometheus监控工具的对比
  • open-falcon

你可能感兴趣的:(docker容器性能监控的选择)