SlideShare uma empresa Scribd logo
1 de 68
Baixar para ler offline
如何选择Docker监控
刘斌
2016/4/24
自我介绍
Cloud Insight,蓝海讯通
https://cloud.oneapm.com/
Agenda
• 什么是监控
• Docker监控原理
• Docker监控方案
为什么监控
• 尽在掌握
• 炸药桶
监控目的
• 少宕机时间
• 扩展和性能管理
• 资源计划
• 识别异常事件
• 故障排除、分析
监控层次
• 硬件
• OS、中间件(MySQL、Tomcat)
• 应用程序
• RUM
Docker监控的挑战
• Docker特点
• 像host但不是host
• 量大
• 生命周期短
• 监控盲点(断层)
• 微服务
• 集群
• 全方位
• Host(VM) > Services > Containers > Apps
Docker监控内容
• 配置信息
• Logs
• 主机和Daemon日志
• 容器信息
• Metric(performance)
• Event
内部监控 VS 外部监控
• 在容器内部监控
• 在宿主机上监控
Docker监控内容
• CPU
• memory usage
• memory limit
• network IO
Docker监控基础
• docker stats
• Remote API
• 伪文件系统
docker stats
$ docker stats redis1 redis2
CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O
redis1 0.07% 796 KB/64 MB 1.21% 788 B/648 B
redis2 0.07% 2.746 MB/64 MB 4.29% 1.266 KB/648 B
伪文件系统
• CPU、内存、磁盘
• 网络
Cgroups
• CPU、内存、磁盘
• /sys/fs/cgroup/{memory,cpuacct,blkio}/
system.slice/${docker ps --no-trunc}.scope
• Standard: /sys/fs/cgroup/:cgroup/
docker/:container_id
• Systemd: /sys/fs/cgroup/:cgroup/system.slice/
docker-#{id}.scope
Memory
• memory.stat
Memory
CPU
• cpuacct.stat
• docker.cpu.system
• docker.cpu.user
Blkio
• *_recursive
• blkio.throttle.io_service_bytes
• blkio.throttle.io_serviced
网络数据
• 伪文件系统
• iptables
• 网络设备接口
数据源(veth device)
$ CONTAINER_PID=`docker inspect -f '{{ .State.Pid }}' nginx`
$ mkdir -p /var/run/netns
$ ln -sf /proc/$CONTAINER_PID/ns/net /var/run/netns/$CONTAINER_ID
$ ip netns exec $CONTAINER_ID netstat -i
Docker容器网络信息-文件系统
• $ CONTAINER_PID=`docker inspect -f
'{{ .State.Pid }}' nginx `
• $ cat /proc/$CONTAINER_PID/net/dev
Docker容器网络信息-文件系统
$ pwd
/sys/class/net/veth559b656/statistics
$ ls
collisions rx_crc_errors rx_frame_errors rx_packets tx_compressed tx_heartbeat_errors
multicast rx_dropped rx_length_errors tx_aborted_errors tx_dropped tx_packets
rx_bytes rx_errors rx_missed_errors tx_bytes tx_errors tx_window_errors
rx_compressed rx_fifo_errors rx_over_errors tx_carrier_errors tx_fifo_errors
Docker容器网络接口数据的取得
方式
Docker容器网络接口数据的取得
方式
Docker容器网络接口数据的取得
方式
Docker监控方案
• 自己动手
• 源软件
• SaaS
评价标准
• 功能
• 活性
• 运维
自己动手
• 活性强
• 成本高
自己动手打造监控方案
• 采集
• 存储
• 展示
• 报警(动作)
自己动手
• Docker remote API
• 200L
• Reports the resource usage of Docker
containers to InfluxDB (https://github.com/
mustafaakin/docker-resource-reporter)
性能指标采集
• tcollector
• StatsD
• collectd
• cAdvisor
• … …
StatsD
• Etsy/Flickr
• UDP/TCP
• 应用和协议
Tcollector
• 来源于OpenTSDB
• 数据采集框架
Collectd
• Statistics collection daemon
• 存储到RRD
• 插件机制(input/output)
• 简单报警功能
cAdvisor(Container Advisor)
存储TSDB
• OpenTSDB
• Influxdb
• RRDTool
• Graphite
• … …
写入方式
• File、TCP/UDP
• HTTP
• JMX/JDBC/SNMP
• AWS/Docker/cAdvisor
• 消息队列(Kafka、ActiveMQ等)
• … …
数据展示
• Highcharts(Cloud Insight)
• D3(Datadog)
• echarts
• Google Charts
• Charts.js
• n3-charts
源可视化工具
• Graphite
• Influxdb + Grafana
• Prometheus
源方案
• cAdvisor(经典)+ InfluxDB + Grafana
• Zabbix/Nagios/Hawkular
• Fluentd
• Prometheus
• Riemann
• ATSD(Axibase Time Series Database)
• Hawkular
• ELK
Zabbix
• 最经典(SaaS软件的最大敌人)
• 架构简单、清晰
• 文档丰富
• 包括采集、触发、告警
• agent支持用户自定义监控项
• 通过SNMP、ssh、telnet、IPMI、JMX监控
Zabbix Docker Monitoring
• https://github.com/monitoringartist/zabbix-
docker-monitoring
• Zabbix Template
Fluentd
Graphite
• 存储数值型时序列数据
• 根据请求对数据进行可视化(画图)
Graphite
Prometheus
• 一体化
• 多维度
• 活查询语言
• 仪表盘和告警
• LevelDB
• 非分布式、单机自治
• 基于HTTP的pull模式(push需要中间网 )
Prometheus
Riemann
• 事件处理
• Clojure实现
• Protocol Buffer
• 学习曲线?
Heapster
• K8s子项目
• source and sink
• 经典组合:heapster + Influxdb + grafana
• Sink:Kafka、stdout、gcm(Google Cloud
Monitoring)、hawkular、monasca、riemann、
opentsdb
源软件的问题点
• 活性受限于upstream
• 维护成本高
• 定制难度大
• 技术栈
SaaS
• turnkey解决方案
• 维护成本 ~ Zero
• 适合中小企业
SaaS
• New Relic
• AppDynamics
• Dynatrace(Ruxit)
• Datadog
• SysDig
• Cloud Insight
• clusterup
• Scout
• Librato
Datadog
• 国外最好
• 功能很强大
• 安装很简单
• 有点贵
Cloud Insight
• 实时数据
• 历史数据(免费版最大保存15天)
• 仪表盘
• 混合监控
• 报警功能
Cloud Insight Docker
Overview
Cloud Insight Docker Share
Cloud Insight Docker Event
Stream
Cloud Insight Docker Alert
Cloud Insight Docker
Intergrations
Sysdig
• 免费工具
• SaaS服务 Sysdig Cloud
• 拓扑可视化
Librato
• 数据聚合平台
• 简单探针
• 图表和报警
• 价格不贵
axibase(ATSD)
• 实际上是一个TSDB
• 支持报警
• 预测功能
SaaS的挑战
• 安全性
• 成本( 移和使用成本)
• 和自有系统的兼容
• 内部抵抗(观念、个人爱好)
趋势
• 拓扑可视化
• 标签机制
• 通过API打通
• 一体化
参考资料
• Comparing Seven Monitoring Options for Docker:http://rancher.com/
comparing-monitoring-options-for-docker-deployments/
• How to collect Docker metrics:https://www.datadoghq.com/blog/how-to-
collect-docker-metrics/
• 时序列数据库武斗大会:http://liubin.org/blog/2016/02/18/tsdb-intro/
• Fluentd Docker Metrics Input Plugin:https://github.com/kiyoto/fluent-plugin-
docker-metrics
• Docker Runtime metrics:https://docs.docker.com/v1.8/articles/runmetrics/
谢谢您的倾听

Mais conteúdo relacionado

Destaque

用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验Leo Zhou
 
Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3Guangya Liu
 
Fluentd Meetup 2016 - ServerEngine Integration & Windows support
Fluentd Meetup 2016 - ServerEngine Integration & Windows supportFluentd Meetup 2016 - ServerEngine Integration & Windows support
Fluentd Meetup 2016 - ServerEngine Integration & Windows supportRitta Narita
 
Packaging Ecosystems -Monki Gras 2017
Packaging Ecosystems -Monki Gras 2017Packaging Ecosystems -Monki Gras 2017
Packaging Ecosystems -Monki Gras 2017Treasure Data, Inc.
 
Life of an Fluentd event
Life of an Fluentd eventLife of an Fluentd event
Life of an Fluentd eventKiyoto Tamura
 
Monitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMonitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMartin Etmajer
 

Destaque (8)

用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验
 
Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3
 
Fluentd Meetup 2016 - ServerEngine Integration & Windows support
Fluentd Meetup 2016 - ServerEngine Integration & Windows supportFluentd Meetup 2016 - ServerEngine Integration & Windows support
Fluentd Meetup 2016 - ServerEngine Integration & Windows support
 
Fluentd and WebHDFS
Fluentd and WebHDFSFluentd and WebHDFS
Fluentd and WebHDFS
 
Packaging Ecosystems -Monki Gras 2017
Packaging Ecosystems -Monki Gras 2017Packaging Ecosystems -Monki Gras 2017
Packaging Ecosystems -Monki Gras 2017
 
The basics of fluentd
The basics of fluentdThe basics of fluentd
The basics of fluentd
 
Life of an Fluentd event
Life of an Fluentd eventLife of an Fluentd event
Life of an Fluentd event
 
Monitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMonitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on Kubernetes
 

Semelhante a 如何选择 Docker 监控方案

美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术团队
 
Docker一期培训
Docker一期培训Docker一期培训
Docker一期培训青帅 常
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node jsXuefeng Zhang
 
WOT Cloud Computing Architect Summit
WOT Cloud Computing Architect SummitWOT Cloud Computing Architect Summit
WOT Cloud Computing Architect SummitDocker, Inc.
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践丁 宇
 
Android开发基础
Android开发基础Android开发基础
Android开发基础ykdsg
 
Wot2013云计算架构师峰会 -陈轶飞2
Wot2013云计算架构师峰会 -陈轶飞2Wot2013云计算架构师峰会 -陈轶飞2
Wot2013云计算架构师峰会 -陈轶飞2dotCloud
 
调试技术的应用
调试技术的应用调试技术的应用
调试技术的应用延胜 黄
 
3 introduction to kubernetes
3 introduction to kubernetes3 introduction to kubernetes
3 introduction to kubernetesJiang Shang
 
docker intro
docker introdocker intro
docker introkoji lin
 
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享ChinaNetCloud
 
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLarge-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLei (Harry) Zhang
 
Weic2015 docker
Weic2015 dockerWeic2015 docker
Weic2015 dockerRay Lin
 
線上埋碼資料收集實作
線上埋碼資料收集實作線上埋碼資料收集實作
線上埋碼資料收集實作FEG
 
云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路li luo
 

Semelhante a 如何选择 Docker 监控方案 (20)

美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台美团点评技术沙龙14美团云-Docker平台
美团点评技术沙龙14美团云-Docker平台
 
Docker一期培训
Docker一期培训Docker一期培训
Docker一期培训
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node js
 
WOT Cloud Computing Architect Summit
WOT Cloud Computing Architect SummitWOT Cloud Computing Architect Summit
WOT Cloud Computing Architect Summit
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
 
Android开发基础
Android开发基础Android开发基础
Android开发基础
 
Wot2013云计算架构师峰会 -陈轶飞2
Wot2013云计算架构师峰会 -陈轶飞2Wot2013云计算架构师峰会 -陈轶飞2
Wot2013云计算架构师峰会 -陈轶飞2
 
调试技术的应用
调试技术的应用调试技术的应用
调试技术的应用
 
3 introduction to kubernetes
3 introduction to kubernetes3 introduction to kubernetes
3 introduction to kubernetes
 
Databases on AWS
Databases on AWSDatabases on AWS
Databases on AWS
 
docker intro
docker introdocker intro
docker intro
 
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
 
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLarge-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The Hood
 
Weic2015 docker
Weic2015 dockerWeic2015 docker
Weic2015 docker
 
線上埋碼資料收集實作
線上埋碼資料收集實作線上埋碼資料收集實作
線上埋碼資料收集實作
 
Win dbg入门
Win dbg入门Win dbg入门
Win dbg入门
 
Windbg入门
Windbg入门Windbg入门
Windbg入门
 
云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
Ceph intro
Ceph introCeph intro
Ceph intro
 

Mais de Leo Zhou

第三名 3rd zhyict
第三名 3rd zhyict第三名 3rd zhyict
第三名 3rd zhyictLeo Zhou
 
异常检测在苏宁的实践
异常检测在苏宁的实践异常检测在苏宁的实践
异常检测在苏宁的实践Leo Zhou
 
第二名 2nd 火眼金睛
第二名 2nd 火眼金睛第二名 2nd 火眼金睛
第二名 2nd 火眼金睛Leo Zhou
 
第四名 4th H3C AI Institute
第四名 4th H3C AI Institute第四名 4th H3C AI Institute
第四名 4th H3C AI InstituteLeo Zhou
 
第一名 1st Bocoiops
第一名 1st Bocoiops第一名 1st Bocoiops
第一名 1st BocoiopsLeo Zhou
 
第六名 6th Aurora
第六名 6th Aurora第六名 6th Aurora
第六名 6th AuroraLeo Zhou
 
AI使能网络自动驾驶 AI Building Autonomous Driving Network
AI使能网络自动驾驶 AI Building Autonomous Driving NetworkAI使能网络自动驾驶 AI Building Autonomous Driving Network
AI使能网络自动驾驶 AI Building Autonomous Driving NetworkLeo Zhou
 
2.2 go在阿里云cdn系统的应用
2.2 go在阿里云cdn系统的应用2.2 go在阿里云cdn系统的应用
2.2 go在阿里云cdn系统的应用Leo Zhou
 
1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb1.6 米嘉 gobuildweb
1.6 米嘉 gobuildwebLeo Zhou
 
1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑Leo Zhou
 
1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用Leo Zhou
 
Protocol libraries the right way
Protocol libraries the right wayProtocol libraries the right way
Protocol libraries the right wayLeo Zhou
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍Leo Zhou
 
特卖场景下的大数据平台和机器学习实践
特卖场景下的大数据平台和机器学习实践特卖场景下的大数据平台和机器学习实践
特卖场景下的大数据平台和机器学习实践Leo Zhou
 
我的互联网运维理论与实践
我的互联网运维理论与实践我的互联网运维理论与实践
我的互联网运维理论与实践Leo Zhou
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍Leo Zhou
 
The net is dark and full of terrors - James Bennett
The net is dark and full of terrors - James BennettThe net is dark and full of terrors - James Bennett
The net is dark and full of terrors - James BennettLeo Zhou
 
Hypothesis randomised testing for django
Hypothesis randomised testing for djangoHypothesis randomised testing for django
Hypothesis randomised testing for djangoLeo Zhou
 
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享Leo Zhou
 
动静态混合网站或 APP的CDN优化方法
动静态混合网站或 APP的CDN优化方法动静态混合网站或 APP的CDN优化方法
动静态混合网站或 APP的CDN优化方法Leo Zhou
 

Mais de Leo Zhou (20)

第三名 3rd zhyict
第三名 3rd zhyict第三名 3rd zhyict
第三名 3rd zhyict
 
异常检测在苏宁的实践
异常检测在苏宁的实践异常检测在苏宁的实践
异常检测在苏宁的实践
 
第二名 2nd 火眼金睛
第二名 2nd 火眼金睛第二名 2nd 火眼金睛
第二名 2nd 火眼金睛
 
第四名 4th H3C AI Institute
第四名 4th H3C AI Institute第四名 4th H3C AI Institute
第四名 4th H3C AI Institute
 
第一名 1st Bocoiops
第一名 1st Bocoiops第一名 1st Bocoiops
第一名 1st Bocoiops
 
第六名 6th Aurora
第六名 6th Aurora第六名 6th Aurora
第六名 6th Aurora
 
AI使能网络自动驾驶 AI Building Autonomous Driving Network
AI使能网络自动驾驶 AI Building Autonomous Driving NetworkAI使能网络自动驾驶 AI Building Autonomous Driving Network
AI使能网络自动驾驶 AI Building Autonomous Driving Network
 
2.2 go在阿里云cdn系统的应用
2.2 go在阿里云cdn系统的应用2.2 go在阿里云cdn系统的应用
2.2 go在阿里云cdn系统的应用
 
1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb
 
1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑
 
1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用
 
Protocol libraries the right way
Protocol libraries the right wayProtocol libraries the right way
Protocol libraries the right way
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍
 
特卖场景下的大数据平台和机器学习实践
特卖场景下的大数据平台和机器学习实践特卖场景下的大数据平台和机器学习实践
特卖场景下的大数据平台和机器学习实践
 
我的互联网运维理论与实践
我的互联网运维理论与实践我的互联网运维理论与实践
我的互联网运维理论与实践
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍
 
The net is dark and full of terrors - James Bennett
The net is dark and full of terrors - James BennettThe net is dark and full of terrors - James Bennett
The net is dark and full of terrors - James Bennett
 
Hypothesis randomised testing for django
Hypothesis randomised testing for djangoHypothesis randomised testing for django
Hypothesis randomised testing for django
 
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
 
动静态混合网站或 APP的CDN优化方法
动静态混合网站或 APP的CDN优化方法动静态混合网站或 APP的CDN优化方法
动静态混合网站或 APP的CDN优化方法
 

如何选择 Docker 监控方案